关于 convert-pdf-to-png
convert-pdf-to-png 是将 PDF 页面转换为 PNG 图片的技能。它优先尝试可用的系统工具,并提供 JavaScript 后备方案,支持选择页面、缩放比例、输出位置和密码。
主要功能
- 01将 PDF 页面转换为 PNG
- 02优先尝试系统后端,失败时使用 JS
- 03选择页面和输出目录
- 04设置渲染缩放比例
- 05支持有密码保护的 PDF
适用场景
- 01生成指定 PDF 页面的图片
- 02使用系统工具渲染复杂 PDF 图形
- 03提高输出分辨率以改善文字清晰度
- 04使用密码转换加密 PDF
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ yrom/ arxiv-paper-translator --skill convert-pdf-to-png安装后在 Claude Code 中输入/convert-pdf-to-png确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/.gitignoreconvert-pdf-to-png.mjspackage.json详细介绍
将 PDF 转换为 PNG
将 PDF 文件的页面转换为 PNG 图像。
后端选择
优先尝试系统工具(复杂 PDF 的渲染效果更好),失败时再使用 JS 脚本。
可尝试的后端:
- magick (ImageMagick) - Linux/MacOS
- mutool (MuPDF) - Linux/MacOS
- pdftoppm (Poppler) - Linux/MacOS
- sips (Scriptable Image Processing System) - 仅限 MacOS
- JS 后备方案 (pdfjs) - 位于
<CURRENT_SKILL_DIR>/scripts/目录下。
注意:所有后端都应在目标目录中输出 <pdf-name>_page_<N>.png。
系统后端示例
# magick (ImageMagick) — density 144 ≈ scale 2x (72 * 2)
magick -density 144 paper.pdf -quality 90 paper_page_%d.png
# Note: magick outputs 0-based index; rename if 1-based is needed
# mutool (MuPDF) — resolution 144 ≈ scale 2x
mutool convert -o paper_page_%d.png -O resolution=144 paper.pdf
# pdftoppm (Poppler) — -r sets DPI
pdftoppm -png -r 144 paper.pdf paper_page
# Outputs paper_page-1.png, paper_page-2.png, etc.
# sips (macOS only) — convert a single-page PDF
sips -s format png paper.pdf --out paper_page_1.png
不同后端生成的文件名模式略有差异(从 0 或 1 开始编号、是否补零、分隔符不同)。 如果下游使用方要求严格遵循
<pdf-name>_page_<N>.png格式,请在转换后重命名。
JS 脚本的先决条件
依赖项位于 <CURRENT_SKILL_DIR>/scripts/package.json。首次使用时请安装:
cd skills/convert-pdf-to-png/scripts && bun install
# or npm install
JS 脚本快速入门
SCRIPT_DIR=skills/convert-pdf-to-png/scripts
# Convert all pages (default scale: 2.0x)
bun $SCRIPT_DIR/convert-pdf-to-png.mjs paper.pdf
# Specify output directory
bun $SCRIPT_DIR/convert-pdf-to-png.mjs paper.pdf --output-dir ./output
# Convert specific pages with higher resolution
bun $SCRIPT_DIR/convert-pdf-to-png.mjs paper.pdf --pages 1,3,5 --scale 3
# Encrypted PDF
bun $SCRIPT_DIR/convert-pdf-to-png.mjs protected.pdf --password "secret"
JS 脚本 CLI 选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--output-dir <dir> | 与 PDF 相同 | PNG 文件的输出目录 |
--scale <number> | 2.0 | 视口缩放系数(数值越大,质量越好,文件也越大) |
--pages <list> | 全部 | 以逗号分隔的从 1 开始的页码 |
--password <string> | - | 加密 PDF 的密码 |
输出
文件名遵循以下模式:<pdf-name>_page_<N>.png
常见问题
| 问题 | 解决方案 |
|---|---|
| 复杂图形渲染为空白 (pdfjs) | 改用 magick (ImageMagick) 或 mutool (MuPDF) |
Cannot find module 'pdf-to-png-converter' | cd skills/convert-pdf-to-png/scripts && bun install |
| 文本质量差 | 提高 --scale / DPI(尝试 3.0 / 216) |
| 大型 PDF 导致内存不足 | 使用 --pages 转换指定页面,而不是全部页面 |
| 加密 PDF 转换失败 | 提供 --password(JS)、-p(mutool)或 -upw(pdftoppm) |
评论
支持 Markdown