前言¶
在 DeepSeek Harness(DSH)里让智能体处理 PDF 合同或审批单时,常见需求分两类:页面上要有「像手写一样」的签名外观,以及文件本身具备可验证的数字签名。前者用图片叠在页面上即可;后者需要 PKCS#7/CMS 与证书私钥,和「只盖图」不是一回事。混用会导致文档看起来已签、却无法在阅读器里通过密码学校验。
下面介绍社区插件 dsh-pdf-sign(GitHub 仓库 JuntaoXiao/PDF-electronic-signature,维护者 JuntaoXiao)。它在 DSH 中把「生成签名图」「PDF 盖章(仅视觉)」「自备证书的数字签名」拆成独立工具,便于按场景组合使用。
这是什么¶
dsh-pdf-sign 是面向 DeepSeek Harness 的 PDF 电子签名插件(npm 包名 dsh-pdf-sign,当前版本 0.2.0,MIT 许可证)。安装并重启 DSH 后,智能体可调用以 pdf_sign_ 为前缀的一组工具:生成手写风格签名图、在 PDF 上放置签名图或文字块、用 .p12 做整文件 PKCS#7 detached 签名,以及生成自签测试证书、检查 PDF 内签名结构。
社区目录 SkillHub 将其归类为「趣味换装」;功能上更贴近文档签署与可视化盖章,而非换装类 UI 插件。DSH 生态采用「一切皆插件」思路;SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
README 将能力 deliberately 分开,避免把「看起来像签了」和「密码学上可验」混为一谈:
| 工具 | 产出 | 保证 |
|---|---|---|
pdf_signature_image |
由姓名等文本生成的手写风格 PNG/SVG | 无,仅为图像 |
pdf_sign_stamp |
PDF 页上的墨迹(签名图和/或排版文字) | 仅视觉 |
pdf_sign_digital |
对整个文件的 PKCS#7/CMS detached 签名 | 密码学(/ByteRange + CMS) |
pdf_sign_cert_generate |
自签证书 + .p12(测试用) |
自签,非受信 CA |
pdf_sign_inspect |
PDF 内签名字段与结构报告 | 仅结构检查,不验证链 |
要点:盖章不会改变 PDF 的字节范围签名;数字签名可证明签署后未被篡改并关联密钥持有者,但只有真实 CA 签发的证书才会在阅读器中显示为受信。插件不内置密钥、CA 或信任锚。
pdf_signature_image 用文本种子生成稳定的手写效果(同一姓名重复生成相同图案),便于重签场景;各平台会尽量选用楷体、华文行楷、Noto Serif CJK 等手写友好字体。
pdf_sign_stamp 支持锚点(如 bottom-right)、透明度、旋转,以及对非拉丁文字嵌入系统 TrueType 子集。若签名图带不透明底(常见白底导出),叠图会盖住下层内容;可通过 drop_background(white、auto 或 #rrggbb)抠底,并用 trim_image 按墨迹裁边,避免占位框过大。
package.json 标明运行环境:Node.js >=20.0.0;DSH 兼容 >=0.1.1-rc.1 <0.2.0,支持 web、tui、desktop profile。
安装与启用¶
安装命令来自仓库 README,使用 profile web:
dsh plugin --profile web add dsh-pdf-sign
执行后重启 DSH,pdf_sign_* 工具即可供智能体调用。若你使用其他 profile,需与本地 DSH 配置一致;上述命令以文档原文为准。
安装前建议自行查看 GitHub 源码 与 MIT 许可证。插件在 当前 DSH 进程权限 下运行,会读写你传入的 PDF、证书路径,并可能调用系统 OpenSSL(自签证书生成等)。
典型用法¶
README 给出的快速流程分三步:先做签名图,再盖章,再(可选)数字签名。
1. 生成签名图
pdf_signature_image(text="Juntao Xiao", output_path="/abs/path/sig.png")
2. 在最后一页盖章(视觉)
pdf_sign_stamp(pdf_path="/abs/path/contract.pdf",
image_path="/abs/path/sig.png",
text="Juntao Xiao", date_text="2026-09-20",
anchor="bottom-right", width=200)
未指定 output_path 时,默认在源 PDF 旁生成 <name>-signed.pdf。
3. 生成测试证书并做 PKCS#7 数字签名
pdf_sign_cert_generate(common_name="Juntao Xiao", passphrase="secret",
output_dir="/abs/path/certs")
pdf_sign_digital(pdf_path="/abs/path/contract.pdf",
output_path="/abs/path/contract-signed.pdf",
p12_path="/abs/path/certs/signing-cert.p12",
passphrase="secret", reason="Approval")
自签证书生成的签名通常显示为「未受信但完整性可验」;生产环境应使用自有 CA 或机构签发的 .p12/.pfx。
白底签名图盖章时,可显式抠底,例如:
pdf_sign_stamp(pdf_path="contract.pdf", image_path="signature.png",
drop_background="white")
需要了解 PDF 里已有哪些签名字段时,可调用 pdf_sign_inspect;它只做结构报告,不替代完整证书链校验。
适用场景与注意¶
适合谁: 需要在 DSH 工作流里自动化「出签名图 + 合同页盖章」的开发者;需要在 agent 侧串联 PKCS#7 签署步骤、并用自签环境做联调的场景。
务必区分: 对外展示用盖章与合规/防篡改用数字签名;二者可先后使用,但不能用盖章代替数字签名。
透明底与叠图: 印章盖在签名图之上时,不透明底会擦掉下层墨迹;使用 drop_background 与 README 中的说明,避免静默盖白。
安全: 插件不代你保管生产私钥;passphrase 与证书路径由调用方传入。自签仅适合测试。
依赖与栈: 实现基于 pdf-lib、@signpdf/* 等(见仓库 package.json);pdf_sign_cert_generate 需要 OpenSSL,Windows 上可自动找到 Git 自带的 OpenSSL。
结尾¶
dsh-pdf-sign 把签名图生成、视觉盖章与 PKCS#7 数字签名拆清边界,方便在 DSH 里按步骤组合。社区目录:https://www.skillhub.cn/plugins/JuntaoXiao/PDF-electronic-signature;源码与完整参数表:https://github.com/JuntaoXiao/PDF-electronic-signature。