mcpField
C
convert-pdf-to-png

convert-pdf-to-png

github.com/yrom文档处理5597 次安装35 周前更新
代码仓库

关于 convert-pdf-to-png

convert-pdf-to-png 是将 PDF 页面转换为 PNG 图片的技能。它优先尝试可用的系统工具,并提供 JavaScript 后备方案,支持选择页面、缩放比例、输出位置和密码。

主要功能

  1. 01将 PDF 页面转换为 PNG
  2. 02优先尝试系统后端,失败时使用 JS
  3. 03选择页面和输出目录
  4. 04设置渲染缩放比例
  5. 05支持有密码保护的 PDF

适用场景

  1. 01生成指定 PDF 页面的图片
  2. 02使用系统工具渲染复杂 PDF 图形
  3. 03提高输出分辨率以改善文字清晰度
  4. 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/
.gitignore
convert-pdf-to-png.mjs
package.json

详细介绍

将 PDF 转换为 PNG

将 PDF 文件的页面转换为 PNG 图像。

后端选择

优先尝试系统工具(复杂 PDF 的渲染效果更好),失败时再使用 JS 脚本。

可尝试的后端:

  1. magick (ImageMagick) - Linux/MacOS
  2. mutool (MuPDF) - Linux/MacOS
  3. pdftoppm (Poppler) - Linux/MacOS
  4. sips (Scriptable Image Processing System) - 仅限 MacOS
  5. 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