本篇文章给大家分享的是有关使用Java怎么给PDF添加数字签名,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强> Jar文件获取及导入:强>
方法1:通过官网下载获取Jar包。下载后,解压文件,并将自由文件夹下的Spire.Pdf。Java jar文件导入程序。(如下图)
import com.spire.pdf.PdfDocument;, 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  TextSignature public 才能;static  void main (String [], args), {,//加文载PDF档, PdfDocument doc =, new PdfDocument (),, ,doc.loadFromFile (“C: \ \ \ \ Test1 \ \用户桌面\ \ Sample.pdf"),,//加载可以证书, PdfCertificate cert =, new PdfCertificate (“C: \ \ \ \ Test1 \ \用户桌面\ \ gary.pfx",,“abc123"),,//添加数字签名,设置其位置和大小, PdfSignature signature =, new PdfSignature(医生,,doc.getPages () . get (doc.getPages () .getCount() 1),,证书,,“MySignature"),, Rectangle2D rect =, new Rectangle2D.Float (),, rect.setFrame (new Point2D.Float((浮动),doc.getPages () . get (0) .getActualSize () .getWidth(),安康;270年,(浮动),doc.getPages () . get (0) .getActualSize () .getHeight(),安康;300),,new 维度(200,,110)),, signature.setBounds(矩形),,//设置签名为文本形式, signature.setGraphicMode (GraphicMode.Sign_Detail);,//设置签名的内容, signature.setNameLabel(“签字者:“),, signature.setName (“Gary");, signature.setContactInfoLabel(“联系电话:“),, signature.setContactInfo (“010333555“), signature.setDateLabel(“日期:“),, signature.setDate (new java.util.Date ()),, signature.setLocationInfoLabel(“地点:“),, signature.setLocationInfo (“US");, signature.setReasonLabel(“原因:“),, signature.setReason(“我是文档所有者“),, signature.setDistinguishedNameLabel (“DN:“),, ,signature.setDistinguishedName (signature.getCertificate () .get_IssuerName () . getname ()),,//设置签名的字体, signature.setSignDetailsFont (new PdfTrueTypeFont (new 字体(“Arial  Unicode MS",, Font.PLAIN,, 11))),,//设置文档权限为禁止更改, signature.setDocumentPermissions (PdfCertificationFlags.Forbid_Changes);, signature.setCertificated(真正的),,//保存文档, doc.saveToFile(“输出/TextSignature.pdf");, doc.close (),, ,,}, }
文本数字签名效果:
import com.spire.pdf.PdfDocument;, 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  ImageSignature public 才能;static  void main (String [], args), {,//加文载PDF档, PdfDocument doc =, new PdfDocument (),, doc.loadFromFile才能(“C: \ \ \ \ Test1 \ \用户桌面\ \ Sample.pdf"),,//加载可以证书, PdfCertificate cert =, new PdfCertificate (“C: \ \ \ \ Test1 \ \用户桌面\ \ gary.pfx",,“abc123"),, ,//添加数字签名,设置其位置和大小, PdfSignature signature =, new PdfSignature(医生,,doc.getPages () . get (doc.getPages () .getCount() 1),,证书,,“MySignature"),, Rectangle2D rect =, new Rectangle2D.Float (),, rect.setFrame (new Point2D.Float((浮动),doc.getPages () . get (0) .getActualSize () .getWidth(),安康;250年,(浮动),doc.getPages () . get (0) .getActualSize () .getHeight(),安康;300),,new 维度(170,,150)),, signature.setBounds(矩形),,//设置签名为图片形式, signature.setGraphicMode (GraphicMode.Sign_Image_Only);, signature.setSignImageSource才能(PdfImage.fromFile (“C: \ \ \ \ Test1 \ \用户桌面\ \ Image.png")),,//设置签名的字体, null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null