java如何对pdf文件实现数字签名

java如何对pdf文件实现数字签名,第1张

用Spire.Doc  for Java 可以添加及验证数字签名,参考代码:

import com.spire.pdf.*

 import com.spire.pdf.graphics.PdfImage

 import com.spire.pdf.graphics.PdfTrueTypeFont

 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 AddCertificate {

     public static void main(String[]args){

         //加载PDF文档

         PdfDocument doc = new PdfDocument()

         doc.loadFromFile("test.pdf")

 

         //加载pfx证书,及证书秘钥

         PdfCertificate cert = new PdfCertificate("Cermia.pfx","123654yes!")

 

         //添加数字签名到指定页面,并设置其位置和大小

         PdfSignature signature = new PdfSignature(doc, doc.getPages().get(2), cert, "MySignature")

         Rectangle2D rect = new Rectangle2D.Float()

         rect.setFrame(new Point2D.Float((float) doc.getPages().get(0).getActualSize().getWidth() - 340, (float) doc.getPages().get(0).getActualSize().getHeight() - 230), new Dimension(280, 150))

         signature.setBounds(rect)

 

         //设置签名为图片加文本模式

         signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail)

 

         //设置签名的内容

         signature.setNameLabel("签字者:")

         signature.setName("Mia")

         signature.setContactInfoLabel("联系电话:")

         signature.setContactInfo("02881705109")

         signature.setDateLabel("日期:")

         signature.setDate(new java.util.Date())

         signature.setLocationInfoLabel("地点:")

         signature.setLocationInfo("成都")

         signature.setReasonLabel("原因:")

         signature.setReason("文档所有者")

         signature.setDistinguishedNameLabel("DN: ")

         signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName())

         signature.setSignImageSource(PdfImage.fromFile("sign.png"))

 

         //设置签名的字体

         signature.setSignDetailsFont(new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 9)))

 

         //设置文档权限为禁止更改

         signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes)

         signature.setCertificated(true)

 

         //保存文档

         doc.saveToFile("AddSignature.pdf")

         doc.close()

     }

 }

数字签名添加效果:

数字签名效果

参考原文

在电脑上面新建一个pdf文件,然后双击打开。在右边找到填写和签名的选项,点击。然后出现下面界面,点击红圈的签名,然后会跳出两项选择,选择添加签名。

1.首先使用WPS打开一个PDF文件。

2.选择工具栏上的【插入】选项,在下拉菜单中点击【PDF签名】,在下方出现【创建签名】。

3.在d出的对话框中,我们看到三个标签:这里选择【手写】,我们在图框中手写姓名,点击确定

4.将手写的文字调整到合适大小。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11610700.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存