Java PDF数字签名(一) - 添加数字签名

xiaoxiao2025-08-04  28

这篇文章将介绍如何在Java应用程序中给PDF文档添加数字签名。

使用工具:

Free Spire.PDF for JAVA

步骤:

1.创建一个Java project,并添加一个class SignPDF.JAVA

2.下载Free Spire.PDF for JAVA并解压缩,然后从lib文件夹下,导入Spire.Pdf.jar包和Spire.Common.jar包到程序中

3.SignPDF.JAVA中添加代码:

import com.spire.ms.System.DateTime; import com.spire.pdf.FileFormat; import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; 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.geom.Rectangle2D; public class SignPDF { public static void main(String[] args){ //加载PDF文档并获取第一页 PdfDocument doc = new PdfDocument(); doc.loadFromFile("Input.pdf"); PdfPageBase page = doc.getPages().get(0); Rectangle2D.Float rec = new Rectangle2D.Float(100, 450, 310, 100); //Load pfx文件 PdfCertificate certificate = new PdfCertificate("gary.pfx", "e-iceblue"); //添加数字签名 PdfSignature signature = new PdfSignature(doc, page, certificate, "signature1", rec); //设置签名详细信息 PdfImage img = PdfImage.fromFile("E-iceblueLogo.png"); signature.setSignImageSource(img); signature.setNameLabel("Signer: "); signature.setName("Gary"); signature.setContactInfoLabel("ContactInfo: "); signature.setContactInfo("support@e-iceblue.com"); signature.setDateLabel("Date: "); signature.setDate(DateTime.getToday()); signature.setLocationInfoLabel("Location: "); signature.setLocationInfo("Chengdu"); signature.setReasonLabel("Reason: "); signature.setReason("The certificate of this document."); signature.setDistinguishedNameLabel("DL: "); signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName()); signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail); signature.setDocumentPermissions(PdfCertificationFlags.Allow_Form_Fill); signature.setCertificated(true); //保存文件 doc.saveToFile("SimpleSign.pdf", FileFormat.PDF); } }

结果文件:

 

转载请注明原文地址: https://www.6miu.com/read-5034269.html

最新回复(0)