Как сделать цифровую подпись PDF в Java
Цифровая подпись PDF-документа — это безопасный и надежный метод проверки подлинности и целостности электронных файлов. При использовании цифровой подписи в документ встраивается уникальное криптографическое представление личности подписавшего, что гарантирует обнаружение любых изменений или подделки. В этой статье я расскажу о том, как выполнять цифровую подпись PDF-документов в Java.
- Добавление невидимой цифровой подписи в PDF
- Добавление видимой цифровой подписи в PDF
Установка файла Spire.Pdf.jar
Spire.PDF for Java — это профессиональная Java-библиотека для чтения, создания и работы с PDF-файлами в Java-приложениях.
Если вы
создали Maven-проект, вы можете легко импортировать jar в свое приложение,
используя следующие конфигурации. Для проектов, не использующих Maven,
загрузите jar-файл по этой ссылке и
добавьте его в качестве зависимости в свое приложение.
Добавление невидимой цифровой подписи в PDF
Следующий фрагмент кода показывает, как добавить невидимую цифровую подпись в PDF с помощью Spire.PDF for Java.
import com.spire.pdf.PdfDocument;
import com.spire.pdf.security.PdfCertificate;
import com.spire.pdf.security.PdfCertificationFlags;
import com.spire.pdf.security.PdfSignature;
public class AddInvisibleSignature {
public static void main(String[] args) {
//Create a PdfDocument object
PdfDocument doc = new PdfDocument();
//Load a sample PDF file
doc.loadFromFile("C:\Users\Administrator\Desktop\Java PDF.pdf");
//Load a pfx certificate
PdfCertificate cert = new PdfCertificate("C:\Users\Administrator\Desktop\MyCertificate.pfx«, «e-iceblue»);
//Create a PdfSignature object
PdfSignature signature = new PdfSignature(doc, doc.getPages().get(doc.getPages().getCount() - 1), cert, «MySignature»);
//Set the document permission to forbid changes but allow form fill
signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes);
signature.setDocumentPermissions(PdfCertificationFlags.Allow_Form_Fill);
//Save to another PDF file
doc.saveToFile("output/InvisibleSignature.pdf");
doc.close();
}
}
Добавление видимой цифровой подписи в PDF
Следующий фрагмент кода показывает, как добавить видимую цифровую подпись в PDF с помощью Spire.PDF for Java.
import com.spire.pdf.PdfDocument;
import com.spire.pdf.graphics.PdfFont;
import com.spire.pdf.graphics.PdfFontFamily;
import com.spire.pdf.graphics.PdfFontStyle;
import com.spire.pdf.graphics.PdfImage;
import com.spire.pdf.security.GraphicMode;
import com.spire.pdf.security.PdfCertificate;
import com.spire.pdf.security.PdfCertificationFlags;
import com.spire.pdf.security.PdfSignature;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
public class AddVisibleSignature {
public static void main(String[] args) {
//Create a PdfDocument object
PdfDocument doc = new PdfDocument();
//Load a sample PDF file
doc.loadFromFile("C:\Users\Administrator\Desktop\Java PDF.pdf");
//Load a pfx certificate
PdfCertificate cert = new PdfCertificate("C:\Users\Administrator\Desktop\MyCertificate.pfx«, «e-iceblue»);
//Create a PdfSignature object and specify its position and size
PdfSignature signature = new PdfSignature(doc, doc.getPages().get(0), cert, «MySignature»);
Rectangle2D rect = new Rectangle2D.Float();
rect.setFrame(new Point2D.Float((float) doc.getPages().get(0).getActualSize().getWidth() - 320, (float) doc.getPages().get(0).getActualSize().getHeight() - 140), new Dimension(270, 100));
signature.setBounds(rect);
//Set the graphics mode
signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail);
//Set the signature content
signature.setNameLabel("Signer:");
signature.setName("Gary");
signature.setContactInfoLabel("ContactInfo:");
signature.setContactInfo("02881705109″);
signature.setDateLabel("Date:");
signature.setDate(new java.util.Date());
signature.setLocationInfoLabel("Location:");
signature.setLocationInfo("Chengdu");
signature.setReasonLabel("Reason: ");
signature.setReason("The certificate of this document");
signature.setDistinguishedNameLabel("DN: ");
signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName());
signature.setSignImageSource(PdfImage.fromFile("C:\Users\Administrator\Desktop\handwrittenSignature.png"));
//Set the signature font
signature.setSignDetailsFont(new PdfFont(PdfFontFamily.Helvetica, 10f, PdfFontStyle.Regular));
//Set the document permission
signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes);
signature.setCertificated(true);
//Save to file
doc.saveToFile("output/VisibleSignature.pdf");
doc.close();
}
}
Заключение
В этой статье мы узнали, как использовать Spire.PDF for Java для цифровой подписи PDF-документов. Кроме того, эта библиотека поддерживает и другие функции обработки PDF, такие как:
Преобразование PDF в изображения в Java