DeepSHPlugins
dsh-pdf 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-pdf

工具與整合JavaScriptMIT

DSH 的 PDF 解析工具:pdf_info、pdf_extract_text、pdf_render_page 三件套,pdfjs 與自研渲染器雙引擎,未內嵌 CJK 字型的 PDF 也能用系統字型渲染出圖。

3 Starszhtx2024 更新時間 2026-08-20
訪問 GitHub 倉庫
dsh-pdf 專案預覽

專案介紹

中文

DSH 的 PDF 解析工具:pdf_info、pdf_extract_text、pdf_render_page 三件套,pdfjs 與自研渲染器雙引擎,未內嵌 CJK 字型的 PDF 也能用系統字型渲染出圖。

English

PDF parsing tools for DSH: pdf_info, pdf_extract_text, and pdf_render_page with dual pdfjs and built-in rendering engines, including system-font rendering for PDFs with non-embedded CJK fonts.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
zhtx2024
倉庫
zhtx2024/dsh-pdf
GitHub Stars
3
Forks
0
開發語言
JavaScript
許可證
MIT
最近推送
2026-08-20
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

58/ 100
維護活躍
85
文件與實用資訊
100
生態關注度
17
安裝便捷訊號
75
專案宣告訊號
100

近 22 天仍在更新;README 含完整安裝與使用說明;關注度尚低(3)。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

dsh plugin --profile web add github:zhtx2024/dsh-pdf

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

@zhtx2026/dsh-pdf

PDF parsing toolkit for DeepSeek Harness — three agent-facing tools (pdf_info / pdf_extract_text / pdf_render_page) with hybrid engines, including system-font rendering for PDFs with non-embedded CJK fonts (e.g. EasyEDA / JLC EDA schematic exports).

English | 中文

Tags: dsh-plugin · pdf · pdfjs · canvas · schematic · tools

Install

dsh plugin --profile web add @zhtx2026/dsh-pdf

Or from a local checkout during development:

dsh plugin --profile web add link:<path-to-repo>

Then restart DSH (or open a new session) — the three tools and an agent guidance block become available.

Tools

ToolWhat it does
pdf_infoPage count, page sizes (pt), document metadata, and the font list with per-font embedded flags.
pdf_extract_textExtracts text per page; optional page and withPosition (per-line x/y coordinates + font size).
pdf_render_pageRenders one page to a PNG (local file) with configurable scale/outDir; engine auto-selection.

Why a custom renderer?

pdfjs-dist cannot render text in PDFs whose fonts are not embedded and lack a ToUnicode map — the classic case is JLC EDA / EasyEDA schematic exports (SimSun/SimHei Type0 fonts with UniGB-UCS2-H encoding): pdfjs emits translateFont failed and drops the glyphs.

dsh-pdf solves this with a two-engine design:

  • pdfjs engine — used when *all* fonts are embedded (standard PDFs).
  • sysfont engine — a built-in content-stream renderer that decodes the

PDF text operators (BT/ET, Tf, Tm, Td, Tj, TJ) itself, maps UniGB-UCS2-H/UTF-16BE strings to Unicode, and draws them with system fonts (SimSun, SimHei, Microsoft YaHei, …) via @napi-rs/canvas.

Text extraction uses the same auto-selection: embedded fonts → pdfjs text layer; non-embedded fonts → the built-in decoder (which correctly recovers CJK text pdfjs loses).

Example

pdf_info("D:/Downloads/SCH_SA-V11A.pdf")
→ 3 pages, A3 landscape, jsPDF producer, 6 fonts (all non-embedded)

pdf_extract_text("D:/Downloads/SCH_SA-V11A.pdf", { page: 1 })
→ net names, pin numbers, and Chinese labels ("主控板", "嘉立创", …)

pdf_render_page("D:/Downloads/SCH_SA-V11A.pdf", { page: 1, scale: 2 })
→ D:/Downloads/SCH_SA-V11A-pages/page-1.png  (2396×1698, engine: sysfont)

Architecture

  • lib/index.js — cordis plugin entry (name, inject, apply); registers

the three tools as native tool objects (plain JSON-Schema parameters and output — no @deepseek-ai/dsh-tools dependency needed) and injects the agent guidance block (systemPrompt.section, order 160).

  • lib/pdf-core.js — self-contained engine: PDF object parser, font scanner,

pdfjs loading with fs-based CMapReaderFactory/StandardFontDataFactory (Node 24's global fetch doesn't speak file://), the built-in text extractor, and the sysfont renderer.

  • cordis.patch.yml — the dsh.bundle.patch insert row.

Limitations

  • Scanned/image-only PDFs have no text layer — extraction returns nothing

(rendering still works, as a plain image).

  • The sysfont renderer assumes Type0 CID codes equal Unicode code points

(true for UniGB-UCS2-H exports); exotic CID fonts fall back to pdfjs.

  • Large PDFs are parsed fully into memory.

License

MIT

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案