Implementation method of adding digital signature to Java pdf
Digitally signed documents can be modified by people other than the author. Therefore, adding digital signatures to PDF documents can ensure their security and authenticity. At the same time, according to the difference of added content, digital signature can be divided into text digital signature, picture digital signature, picture and text digital signature. This article will be through spire PDF for Java to demonstrate how to add a digital signature to a PDF document.
Use tool: spire PDF for Java 2.11. four
Jar file acquisition and import:
Method 1: download the jar package from the official website. After downloading, unzip the file and put spire. Exe in the Lib folder Pdf. The jar file is imported into the Java program. (as shown below)
Method 2: install import through Maven warehouse. See this page for specific installation tutorials.
Example 1: adding a text digital signature
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:\\Users\\Test1\\Desktop\\Sample.pdf"); //加载pfx证书 PdfCertificate cert = new PdfCertificate("C:\\Users\\Test1\\Desktop\\gary.pfx","abc123"); //添加数字签名,设置其位置和大小 PdfSignature signature = new PdfSignature(doc,doc.getPages().get(doc.getPages().getCount()-1),cert,"MySignature"); Rectangle2D rect = new Rectangle2D.Float(); rect.setFrame(new Point2D.Float((float) doc.getPages().get(0).getActualSize().getWidth() - 270,(float) doc.getPages().get(0).getActualSize().getHeight() - 300),new Dimension(200,110)); signature.setBounds(rect); //设置签名为文本形式 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 Font("Arial Unicode MS",Font.PLAIN,11))); //设置文档权限为禁止更改 signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes); signature.setCertificated(true); //保存文档 doc.saveToFile("output/TextSignature.pdf"); doc.close(); } }
Text digital signature effect:
Example 2: add a picture digital signature
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:\\Users\\Test1\\Desktop\\Sample.pdf"); //加载pfx证书 PdfCertificate cert = new PdfCertificate("C:\\Users\\Test1\\Desktop\\gary.pfx","abc123"); //添加数字签名,设置其位置和大小 PdfSignature signature = new PdfSignature(doc,"MySignature"); Rectangle2D rect = new Rectangle2D.Float(); rect.setFrame(new Point2D.Float((float) doc.getPages().get(0).getActualSize().getWidth() - 250,new Dimension(170,150)); signature.setBounds(rect); //设置签名为图片形式 signature.setGraphicMode(GraphicMode.Sign_Image_Only); signature.setSignImageSource(PdfImage.fromFile("C:\\Users\\Test1\\Desktop\\Image.png")); //设置签名的字体 signature.setSignDetailsFont(new PdfTrueTypeFont(new Font("Arial Unicode MS",11))); //设置文档权限为禁止更改 signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes); signature.setCertificated(true); //保存文档 doc.saveToFile("output/ImageSignature.pdf"); doc.close(); } }
Picture digital signature effect:
Example 3: adding digital signatures for pictures and texts
import com.spire.pdf.PdfDocument; import com.spire.pdf.graphics.*; 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 TextAndImageSignature { public static void main(String[] args) { //加载PDF文档 PdfDocument doc = new PdfDocument(); doc.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.pdf"); //加载pfx证书 PdfCertificate cert = new PdfCertificate("C:\\Users\\Test1\\Desktop\\gary.pfx","MySignature"); Rectangle2D rect = new Rectangle2D.Float(); rect.setFrame(new Point2D.Float((float) doc.getPages().get(0).getActualSize().getWidth() - 350,(float) doc.getPages().get(0).getActualSize().getHeight() - 170),new Dimension(300,170)); signature.setBounds(rect); //设置签名为图片加文本模式 signature.setGraphicMode(GraphicMode.Sign_Image_And_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.setSignImageSource(PdfImage.fromFile("C:\\Users\\Test1\\Desktop\\Image.png")); //设置签名的字体 signature.setSignDetailsFont(new PdfTrueTypeFont(new Font("Arial Unicode MS",11))); //设置文档权限为禁止更改 signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes); signature.setCertificated(true); //保存文档 doc.saveToFile("output/TextAndImageSignature.pdf"); doc.close(); } }
Image and text digital signature effect:
The above is the whole content of this article. I hope it will help you in your study, and I hope you will support us a lot.