dsh-pdf-sign:DSH 下的 PDF 簽名圖、蓋章與 PKCS#7 數字簽名

前言

在 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜