为PDF添加数字签名需使用PKI工具:一、准备CA签发的X.509证书;二、用Adobe Acrobat Pro可视化签名;三、用PDFtk命令行批量签名;四、用LibreOffice Draw插入OpenPGP签名;五、用Python endesive库编程签名。

如果您希望为PDF文件添加数字签名证书,以确保文档的完整性、真实性和不可否认性,则需要借助支持PKI标准的证书工具完成签名创建与应用。以下是实现该目标的具体步骤:
一、准备有效的数字证书
数字签名依赖于由受信任证书颁发机构(CA)签发的X.509格式证书,该证书需包含私钥且未过期。若尚未拥有证书,可通过本地证书服务或第三方CA申请;若已有PFX/P12格式证书文件,需确认其私钥可导出并处于可用状态。
1、访问证书颁发机构官网,提交身份验证材料并申请个人或组织代码签名证书。
2、审核通过后,下载生成的PFX文件,并设置强密码保护私钥。
3、将PFX文件导入操作系统证书存储区(如Windows“管理证书”控制台),或直接在签名工具中指定路径加载。
二、使用Adobe Acrobat Pro添加签名
Adobe Acrobat Pro内置符合ISO 32000标准的数字签名引擎,支持可视化签名外观与底层证书绑定,适用于正式签署场景。
1、启动Adobe Acrobat Pro,打开待签名的PDF文件。
2、点击右侧“工具”面板中的“证书”选项,或通过顶部菜单栏选择“工具 > 保护 > 验证签名”后切换至“签名”标签页。
3、点击“添加签名”,在页面上拖拽绘制签名域位置,双击该域进入配置界面。
4、在弹出窗口中选择“数字签名”,点击“浏览”定位已安装的证书,输入对应私钥密码完成绑定。
5、勾选“在签名时对文档进行时间戳”以增强法律效力,点击“应用”完成嵌入。
三、使用PDFtk命令行工具签名
PDFtk是一款开源命令行工具,适用于批量处理及自动化环境,通过调用系统证书存储或外部PFX文件执行签名操作。
1、从官方渠道下载PDFtk Professional版本(基础版不支持签名功能),安装后确认pdftk命令可在终端中调用。
2、准备含私钥的PFX文件(例如signer.pfx)和对应密码文本文件(例如pass.txt,仅含一行密码)。
3、执行签名指令:pdftk input.pdf sign output signed.pdf signer.pfx pass.txt。
4、运行完成后检查输出文件属性,在“文件 > 属性 > 安全性”中确认签名状态为“有效且未被篡改”。
四、使用LibreOffice Draw插入可见数字签名
LibreOffice Draw支持将PDF作为图形对象导入,并利用其内置GPG集成模块添加基于OpenPGP的数字签名,适合轻量级办公场景。
1、打开LibreOffice Draw,选择“文件 > 打开”,导入目标PDF文件(自动转换为可编辑页面)。
2、点击顶部菜单“文件 > 数字签名 > 管理数字签名”,在弹出窗口中点击“添加证书”并导入PEM格式公钥证书。
3、返回主界面,在页面空白处右键选择“插入 > 数字签名字段”,调整大小并拖动至合适位置。
4、双击签名字段,在属性面板中指定关联的私钥路径与密码,勾选“启用签名后锁定文档”选项。
5、点击“文件 > 导出为 > 导出为PDF”,在导出设置中启用“导出数字签名”复选框后保存。
五、使用Python PyPDF2与endesive库实现编程签名
PyPDF2本身不支持数字签名,但结合endesive库可调用OpenSSL后端完成PDF/A-2b兼容签名,适用于开发集成与定制化流程。
1、在Python环境中执行pip install endesive安装签名支持库。
2、准备PEM格式私钥(key.pem)、证书链(cert.pem)及中间CA证书(ca.pem)。
3、编写脚本:导入endesive.pdf.sign模块,定义签名参数包括签名理由、位置、坐标、证书路径与私钥密码。
4、调用sign()方法传入原始PDF路径与输出路径,执行后生成带嵌入式签名的PDF文件。
5、验证结果时使用Adobe Reader打开,查看签名面板中显示的“签名者身份已验证”状态标识。










