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

£神魔★判官ぃ 2024-02-19 12:35 184阅读 0赞

这篇文章将介绍如何在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包到程序中:

70

3.SignPDF.JAVA中添加代码:

  1. import com.spire.ms.System.DateTime;
  2. import com.spire.pdf.FileFormat;
  3. import com.spire.pdf.PdfDocument;
  4. import com.spire.pdf.PdfPageBase;
  5. import com.spire.pdf.graphics.PdfImage;
  6. import com.spire.pdf.security.GraphicMode;
  7. import com.spire.pdf.security.PdfCertificate;
  8. import com.spire.pdf.security.PdfCertificationFlags;
  9. import com.spire.pdf.security.PdfSignature;
  10. import java.awt.geom.Rectangle2D;
  11. public class SignPDF {
  12. public static void main(String[] args){
  13. //加载PDF文档并获取第一页
  14. PdfDocument doc = new PdfDocument();
  15. doc.loadFromFile("Input.pdf");
  16. PdfPageBase page = doc.getPages().get(0);
  17. Rectangle2D.Float rec = new Rectangle2D.Float(100, 450, 310, 100);
  18. //Load pfx文件
  19. PdfCertificate certificate = new PdfCertificate("gary.pfx", "e-iceblue");
  20. //添加数字签名
  21. PdfSignature signature = new PdfSignature(doc, page, certificate, "signature1", rec);
  22. //设置签名详细信息
  23. PdfImage img = PdfImage.fromFile("E-iceblueLogo.png");
  24. signature.setSignImageSource(img);
  25. signature.setNameLabel("Signer: ");
  26. signature.setName("Gary");
  27. signature.setContactInfoLabel("ContactInfo: ");
  28. signature.setContactInfo("support@e-iceblue.com");
  29. signature.setDateLabel("Date: ");
  30. signature.setDate(DateTime.getToday());
  31. signature.setLocationInfoLabel("Location: ");
  32. signature.setLocationInfo("Chengdu");
  33. signature.setReasonLabel("Reason: ");
  34. signature.setReason("The certificate of this document.");
  35. signature.setDistinguishedNameLabel("DL: ");
  36. signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName());
  37. signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail);
  38. signature.setDocumentPermissions(PdfCertificationFlags.Allow_Form_Fill);
  39. signature.setCertificated(true);
  40. //保存文件
  41. doc.saveToFile("SimpleSign.pdf", FileFormat.PDF);
  42. }
  43. }

结果文件:

70 1

发表评论

表情:
评论列表 (有 0 条评论,184人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C# PDF添加可信时间戳数字签名

    以PDF格式保存的电子交易文件或合同,即使具有数字签名,仍然不能完全保证该文件的法律效力,因为数字证书存在有效期和可随时吊销的问题。为了解决这一问题,出现了一种改进的基于时间戳