视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
pdf【文档与办公】Manipulate PDF files — merge, split, extract pages/text, PDF↔images, OCR, info — via the `qpdf` / `poppler` / `ocrmypdf` CLIs. Use to combine, slice, convert, or OCR PDFs.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: pdf
description: Manipulate PDF files — merge, split, extract pages/text, PDF↔images, OCR, info — via the qpdf / poppler / ocrmypdf CLIs. Use to combine, slice, convert, or OCR PDFs.
version: 1.0.1
requires_tools:
Process PDF files from the terminal. Reading PDF text is best done with the
built-in os.fs.read_document tool (pure-JS, no install). Reach for the CLIs
below only for structural operations: merge, split, page extraction,
PDF↔image rendering, and OCR.
Tooling:
qpdf — merge / split / linearize / encrypt (pure structural ops).poppler — pdfinfo, pdftotext, pdftoppm, pdfimages (inspect + render).ocrmypdf — add a searchable text layer to scanned PDFs (optional).Verify with one solo step:
[{ "tool": "os.shell.run", "args": { "cmd": "pdfinfo", "args": ["-v"] } }]
Outcome map:
exit 0 + version → poppler present, proceed.command not found → enter Setup playbook → "tools missing".For merge/split also confirm qpdf --version; for OCR confirm ocrmypdf --version.
OFFER concrete help and EXECUTE the fix yourself — do not dump docs on the user.
Reply (solo reply step):
"The PDF utilities are not installed. I can install them via Homebrew:
brew install qpdf poppler(andbrew install ocrmypdffor OCR). Install them?"
On yes:
[{ "tool": "os.shell.run", "args": { "cmd": "brew", "args": ["install", "qpdf", "poppler"] } }]
On Linux use apt-get install qpdf poppler-utils ocrmypdf. If brew itself is
missing, point the user at https://brew.sh/ and stop.
os.fs.read_document (no install).All examples invoke os.shell.run. Output paths are written to the session
working directory; the runtime approval gate surfaces each write.
| Goal | cmd / args |
|---|---|
| Info / page count | pdfinfo ["in.pdf"] |
| Extract all text | pdftotext ["-layout", "in.pdf", "out.txt"] |
| Merge files | qpdf ["--empty", "--pages", "a.pdf", "b.pdf", "--", "merged.pdf"] |
| Extract pages 3-7 | qpdf ["in.pdf", "--pages", ".", "3-7", "--", "pages_3-7.pdf"] |
| Split into single pages | qpdf ["--split-pages", "in.pdf", "page_%d.pdf"] |
| PDF → PNG (150 dpi) | pdftoppm ["-png", "-r", "150", "in.pdf", "page"] |
| Extract embedded images | pdfimages ["-all", "in.pdf", "img"] |
| Images → PDF | magick ["a.png", "b.png", "out.pdf"] (needs imagemagick skill) |
| OCR a scanned PDF | ocrmypdf ["in.pdf", "out_ocr.pdf"] |
| Compress / linearize | qpdf ["--linearize", "in.pdf", "out.pdf"] |
os.fs.read_document; only shell out for structure.