前言¶
DSH 的插件生態把不同能力拆成可安裝、可裝載的模塊。dsh-pdf-edit 是其中面向 PDF 文檔的社區插件:用 AI 修改 PDF 文字,同時保持字體、字號、顏色、位置等排版樣式不變。
它適合術語統一、錯別字修正、合同/報告批量替換,以及把 Markdown/筆記作爲新頁插入指定頁後的場景。DSH 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。
這是什麼¶
dsh-pdf-edit 是 DeepSeek Harness 插件,維護者爲 Whatsmore-nf,許可證爲 MIT。
它解決的問題是:在 PDF 中修改文字時,避免字體、字號、顏色、位置等排版樣式被改變。
核心功能¶
- AI 只修改 PDF 文字,不改變字體、字號、顏色、位置等排版樣式。
- 當新文字比原來更長時,自動縮小字號或截斷,以避免溢出版面。
- 自動識別並嵌入系統中文字體:SimHei、微軟雅黑、Noto Sans CJK。
- 支持術語統一、錯別字修正、合同/報告批量替換等場景。
- 支持將 PDF 重新排版爲學術論文雙欄、手機閱讀單欄、商務簡報等版式。
- 支持將 Markdown/筆記作爲新頁插入指定頁後,且無需 LLM。
- 提供 dsh-std Community v0.15 靜態清單與標準 FacetModule 入口,同時保留 cordis 直連入口。
- 提供編程接口,包括
StyleLockedEditor、previewPage、editDocument、getExtract、openNativeDoc、drawPatchedPages、insertPages、parseMarkdownBlocks、removeSubheadings等方法。 - 支持路徑白名單、瀏覽器渲染模式、模型路由、補丁顏色、tid 嚴格模式、溢出模式等配置項。
安裝與啓用¶
下面的命令用於在 DSH web profile 中安裝插件:
dsh plugin --profile web add dsh-pdf-edit@latest
也可以直接通過 npm 安裝:
npm install dsh-pdf-edit
如果宿主支持 dsh-std,並準備在標準生態內裝載,先安裝 adapter,再安裝插件:
dsh plugin --profile web add @dsh-std/adapter-dsh
dsh plugin --profile web add dsh-pdf-edit
安裝後,插件由 DSH 宿主裝載;工具調用仍受 allowedRoots 路徑白名單限制。
典型用法¶
chatFn 用於 LLM 調用路徑,original 表示待處理的 PDF 字節數據。下面示例展示核心接口。
打開文檔並預覽可編輯單元¶
先打開文檔,再預覽第 1 頁的可編輯單元並獲取 tid 列表:
const editor = await StyleLockedEditor.open(original, chatFn, {
allowedRoots: ['/workspace']
});
const units = await editor.previewPage(1);
執行全文 AI 修改¶
讓 AI 按指令修改全文:
const result = await editor.editDocument('修正錯別字並統一術語');
手動刪除指定文字¶
當 AI 返回空文本時,sanitizeText 會拒收空字符串,並按 missingTidsUseOriginal 配置回填原文。手動刪除指定文字時,可以先取 extract,再修改目標 unit:
const extract = await editor.getExtract(1);
// 對目標 unit 執行:unit.text = ''
const { doc, resolver } = await editor.openNativeDoc();
await editor.drawPatchedPages(doc, resolver, [/* 對應頁的修改單元 */]);
刪除匹配的小標題文本¶
刪除匹配的小標題文本:
await removeSubheadings(
'doc.pdf',
'doc-deleted.pdf',
['第一章 小標題', '附錄 A'],
chatFn
);
將內容作爲新頁插入¶
將標題、文本塊、公式等內容作爲新頁插入原 PDF 指定頁之後。該鏈路無需 LLM:
await insertPages(
original,
[
{
afterPage: 14,
title: '補充一',
blocks: parseMarkdownBlocks(mdText)
}
]
);
適用場景與注意¶
- 適合需要保留原版式、只做文字修改的 PDF 工作流。
- 適合術語統一、錯別字修正、合同/報告批量替換等場景。
- 需要
Node >= 22。 - 兼容
dsh >= 0.1.1-rc.2的 cordis 直連方式,並支持 dsh-std Community v0.15 宿主。 - dsh-std 清單不聲明 required 契約與權限,並與任意 std 宿主協商即兼容。
- std 協議當前未向插件開放宿主 LLM 推理通道,因此 std 宿主下 AI 精修需使用 DeepSeek API Key 直連。
- 工具調用受路徑白名單
allowedRoots限制,文件不存在或不在允許目錄會失敗。 sanitizeText拒收空字符串,AI 返回空文本時會被拒收,並按missingTidsUseOriginal配置回填原文。- 本項目已宣佈暫停維護較長時間,期間不會進行更新,恢復維護時間待定。
- 插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。許可證爲 MIT。
參考¶
- 目錄頁:
https://www.skillhub.cn/plugins/Whatsmore-nf/dsh-pdf-edit - GitHub:
https://github.com/Whatsmore-nf/dsh-pdf-edit