Как сделать цифровую подпись PDF в Java

Цифровая подпись PDF-документа — это безопасный и надежный метод проверки подлинности и целостности электронных файлов. При использовании цифровой подписи в документ встраивается уникальное криптографическое представление личности подписавшего, что гарантирует обнаружение любых изменений или подделки. В этой статье я расскажу о том, как выполнять цифровую подпись PDF-документов в Java.
- Добавление невидимой цифровой подписи в PDF
- Добавление видимой цифровой подписи в PDF
Установка файла Spire.Pdf.jar
Spire.PDF for Java — это профессиональная Java-библиотека для чтения, создания и работы с PDF-файлами в Java-приложениях.
Если вы
создали Maven-проект, вы можете легко импортировать jar в свое приложение,
используя следующие конфигурации. Для проектов, не использующих Maven,
загрузите jar-файл по этой ссылке и
добавьте его в качестве зависимости в свое приложение. Следующий фрагмент кода показывает, как добавить невидимую цифровую подпись в
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 с помощью 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
Добавление невидимой цифровой подписи в PDF
Добавление видимой цифровой подписи в PDF
Заключение