前言¶
在 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。