手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

JAVA 给PDF添加数字签名

时间:2024-10-12 08:10:42

随着电子账单、回单、通知、合同的流行,电子文档的可信度变得非常重要。为防止非法篡改,确保文档的权威性,我们可以对PDF进行数字签名。本篇经验将介绍在Java中给PDF添加数字签名。

工具/原料

 Free Spire.PDF for JAVA 2.4.4(免费版)

 IntelliJ IDEA

Jar包导入:

1、首先,获取jar包。Step 1: 下载控件包之后解压,打开“Project Structure”界面。(以下是两种在IDEA中快速打梯瓣氨割开Project Structure界面的方式:①file->Project Structure ②Shift+Ctrl+Alt+S快捷键进入‘Project Structure’。可选其中任意一种)Step 2:按以下操作步骤进行导入。① 选择“Modules”—“Dependencies”,添加外置jar包;② 进入"Attach File or Directories"界面选择jar文件路径,然后点击“OK”;③ 勾选jar路径选项,点击“Apply/OK”;④ 导入完成。如下图:

JAVA 给PDF添加数字签名
JAVA 给PDF添加数字签名

Java代码参考示例:

1、import com.spire.pdf.PdfDocument;import com.spire.pdf.security.*;import com.spire.pdf.graphics.忮氽阝另*;import java.awt.*;import java.awt.geom.*;public class digitalSignature { public static void main(String[] args) { //定义输入、输出文件和数字签名文件 String inputFile = "data/Doc2.pdf"; String outputFile = "output/digitalSignature_result.pdf"; String pfxPath = "data/test.pfx"; //加载PDF文件 PdfDocument doc = new PdfDocument(); doc.loadFromFile(inputFile); //加载证书 PdfCertificate cert = new PdfCertificate(pfxPath, "123456"); PdfSignature signature = new PdfSignature(doc, doc.getPages().get(0), cert, "signature0"); Rectangle2D rect = new Rectangle2D.Float(); rect.setFrame(new Point2D.Float(90, 550), new Dimension(270, 90)); signature.setBounds(rect); //设置图形显示模式,如果不设置图形显示模式,则应用默认的图形显示模式 signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail); signature.setNameLabel("Signer:"); signature.setName("Gary"); signature.setContactInfoLabel("ContactInfo:"); signature.setContactInfo("136558284211"); signature.setDateLabel("Date:"); signature.setDate(new java.util.Date()); signature.setLocationInfoLabel("Location:"); signature.setLocationInfo("Chengdu"); signature.setReasonLabel("Reason: "); signature.setReason("The certificate of this document"); signature.setDistinguishedNameLabel("DN: "); signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName()); signature.setSignImageSource(PdfImage.fromFile("data/logo.png")); signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes); signature.setCertificated(true); //保存文件 doc.saveToFile(outputFile); doc.close(); }}

2、运行效果:

JAVA 给PDF添加数字签名
© 手抄报圈