
Pdf To Image Preview
- 49 installs
- 33 repo stars
- Updated July 5, 2026
- wuchubuzai2018/expert-skills-hub
Helps with ai & agent building tasks.
About
pdf-to-image-preview is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- pdf-to-image-preview
- AI & Agent Building
- AI-coding skill
Pdf To Image Preview by the numbers
- 49 all-time installs (skills.sh)
- Ranked #7,391 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Jul 27, 2026 (Skillselion catalog sync)
npx skills add https://github.com/wuchubuzai2018/expert-skills-hub --skill pdf-to-image-previewAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 49 |
|---|---|
| repo stars | ★ 33 |
| Last updated | July 5, 2026 |
| Repository | wuchubuzai2018/expert-skills-hub ↗ |
What it does
Helps with ai & agent building tasks.
Files
PDF转图片Skill
任务目标
- 本Skill用于:将PDF文件的每一页转换为独立的图片文件
- 能力包含:PDF文件解析、图片格式转换(PNG/JPG)、可调分辨率输出
- 触发条件:用户需要将PDF转换为图片、提取PDF页面、图片化PDF内容等场景
前置准备
- 依赖说明:scripts脚本所需的依赖包及版本
pymupdf>=1.23.0操作步骤
- 标准流程:
1. 准备PDF文件
- 确认PDF文件路径(使用
./表示当前工作目录) - 例如:
./document.pdf
2. 执行转换
- 调用脚本将PDF文件的每一页转换为图片
- 命令示例:
python scripts/convert_pdf_to_images.py \
--input ./document.pdf \
--output-dir ./images- 可选参数:
--image-format: 图片格式,支持png或jpg,默认为png--dpi: 图片分辨率(DPI),默认为200--zip: 生成ZIP压缩包--zip-output: ZIP压缩包输出路径(默认:images.zip)
3. 查看输出
- 图片文件保存在指定的输出目录中
- 文件命名格式:
page_001.png、page_002.png... - 可选择是否生成ZIP压缩包
资源索引
- 必要脚本:见 scripts/convert_pdf_to_images.py(用途与参数:PDF转图片脚本)
注意事项
- 输入PDF文件必须存在且可读
- 输出目录必须具有写入权限
- PDF页数限制:暂支持100页以内的PDF文件,超过100页请拆分后转换
- 大型PDF文件转换可能需要较长时间,请耐心等待
故障排查
- 脚本找不到错误:确保在Skill目录下执行,或使用相对路径
scripts/xxx.py - Python版本问题:确保使用Python 3.6或更高版本
- 依赖缺失:执行
pip install pymupdf>=1.23.0安装依赖 - 页数超限错误:PDF文件超过100页,请使用PDF工具拆分为多个小文件
使用示例
示例1:基本转换(PNG格式)
python scripts/convert_pdf_to_images.py \
--input ./report.pdf \
--output-dir ./images示例2:使用JPG格式
python scripts/convert_pdf_to_images.py \
--input ./document.pdf \
--output-dir ./images \
--image-format jpg示例3:高分辨率输出
python scripts/convert_pdf_to_images.py \
--input ./document.pdf \
--output-dir ./images \
--dpi 300示例4:生成ZIP压缩包
python scripts/convert_pdf_to_images.py \
--input ./document.pdf \
--output-dir ./images \
--zip \
--zip-output ./images.zip示例5:完整配置
python scripts/convert_pdf_to_images.py \
--input ./report.pdf \
--output-dir ./images \
--image-format jpg \
--dpi 200 \
--zipPDF转图片预览使用指南
目录
功能概述
本Skill提供以下核心功能:
1. PDF转图片:将PDF文件的每一页转换为高质量图片 2. HTML预览生成:自动生成包含所有图片的HTML预览文件 3. 格式自定义:支持PNG和JPG两种图片格式 4. 分辨率控制:可调整图片DPI,平衡质量和文件大小
快速开始
基础使用
将PDF文件转换为PNG图片并生成预览:
python /workspace/projects/pdf-to-image-preview/scripts/pdf_to_images.py \
--input ./document.pdf \
--output-dir ./images \
--html-output ./preview.html高级选项
使用JPG格式和更高的分辨率:
python /workspace/projects/pdf-to-image-preview/scripts/pdf_to_images.py \
--input ./document.pdf \
--output-dir ./images \
--html-output ./preview.html \
--image-format jpg \
--dpi 300参数说明
必需参数
| 参数 | 说明 | 示例 |
|---|---|---|
--input | 输入PDF文件路径 | ./report.pdf |
--output-dir | 图片输出目录 | ./images |
--html-output | HTML输出文件路径 | ./preview.html |
可选参数
| 参数 | 说明 | 可选值 | 默认值 |
|---|---|---|---|
--image-format | 图片格式 | png, jpg | png |
--dpi | 图片分辨率 | 整数,建议150-300 | 200 |
使用场景
1. 文档预览
将PDF文档转换为在线可预览的HTML文件,方便用户在浏览器中查看。
2. 内容展示
将PDF内容嵌入网页或应用中,提供更好的用户体验。
3. 图片提取
从PDF中提取特定页面或所有页面的图片内容。
4. 移动端查看
将PDF转换为图片,更适合移动设备浏览。
常见问题
Q1: 转换后的图片不清晰怎么办?
A: 提高 --dpi 参数的值,例如:
--dpi 300 # 生成更清晰的图片Q2: 生成的图片文件太大怎么办?
A: 降低DPI或使用JPG格式:
--image-format jpg --dpi 150 # 减小文件大小Q3: 支持哪些PDF版本?
A: 支持所有符合PDF标准的文档,包括PDF 1.0到PDF 2.0。
Q4: 如何处理加密的PDF文件?
A: 当前版本不支持加密PDF。如需处理加密文档,请先解密。
Q5: 生成的HTML文件可以在本地直接打开吗?
A: 可以。HTML文件包含相对路径引用,双击即可在浏览器中预览。
技术细节
图片格式对比
| 格式 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| PNG | 无损压缩,支持透明度 | 文件较大 | 需要高质量输出 |
| JPG | 文件较小,兼容性好 | 有损压缩 | 网络传输,存储优化 |
DPI建议值
| DPI | 效果 | 适用场景 |
|---|---|---|
| 72 | 网页显示 | 在线快速预览 |
| 150 | 标准质量 | 一般文档查看 |
| 200 | 高质量(默认) | 文档存档 |
| 300 | 印刷质量 | 打印、出版 |
输出文件结构
./
├── images/ # 图片输出目录
│ ├── page_001.png # 第1页图片
│ ├── page_002.png # 第2页图片
│ └── ...
└── preview.html # HTML预览文件性能参考
- 小型文档(<10页):1-3秒
- 中型文档(10-50页):5-15秒
- 大型文档(>50页):20秒以上
注:实际时间取决于文档复杂度和机器性能
#!/usr/bin/env python3
"""
PDF转图片脚本
功能:
将PDF文件的每一页转换为图片(PNG或JPG)
"""
import argparse
import os
import sys
import zipfile
try:
import fitz # PyMuPDF
except ImportError:
print("错误:未安装pymupdf库,请执行:pip install pymupdf>=1.23.0")
sys.exit(1)
# PDF最大页数限制
MAX_PAGES = 100
def pdf_to_images(
pdf_path: str,
output_dir: str,
image_format: str = "png",
dpi: int = 200
) -> list:
"""
将PDF文件的每一页转换为图片
参数:
pdf_path: PDF文件路径
output_dir: 图片输出目录
image_format: 图片格式(png或jpg)
dpi: 图片分辨率
返回:
生成的图片文件路径列表
"""
# 打开PDF文件
pdf_document = fitz.open(pdf_path)
total_pages = len(pdf_document)
# 检查页数限制
if total_pages > MAX_PAGES:
pdf_document.close()
print(f"错误:PDF文件超过{MAX_PAGES}页(当前{total_pages}页),暂不支持转换")
print(f"提示:请拆分PDF文件为多个小于{MAX_PAGES}页的文件后再转换")
sys.exit(1)
# 创建输出目录
os.makedirs(output_dir, exist_ok=True)
print(f"正在处理PDF文件,共 {total_pages} 页...")
image_paths = []
zoom = dpi / 72.0 # 计算缩放比例
for page_num in range(total_pages):
page = pdf_document.load_page(page_num)
mat = fitz.Matrix(zoom, zoom) # 缩放矩阵
pix = page.get_pixmap(matrix=mat)
# 生成文件名
file_ext = "png" if image_format.lower() == "png" else "jpg"
filename = f"page_{page_num + 1:03d}.{file_ext}"
image_path = os.path.join(output_dir, filename)
# 保存图片
if file_ext == "jpg":
pix.save(image_path, jpg_quality=95)
else:
pix.save(image_path)
image_paths.append(filename)
print(f"已转换第 {page_num + 1}/{total_pages} 页 -> {filename}")
pdf_document.close()
print(f"图片转换完成,共生成 {len(image_paths)} 张图片")
return image_paths
def create_zip(
images_dir: str,
zip_output: str
):
"""
将图片目录打包成ZIP文件
参数:
images_dir: 图片目录路径
zip_output: ZIP输出文件路径
"""
print(f"\n正在创建ZIP压缩包...")
# 检查图片目录是否存在
if not os.path.exists(images_dir):
print(f"错误:图片目录不存在 - {images_dir}")
sys.exit(1)
# 获取所有图片文件
image_extensions = ('.png', '.jpg', '.jpeg', '.gif', '.bmp')
image_files = sorted(
[f for f in os.listdir(images_dir) if f.lower().endswith(image_extensions)]
)
if not image_files:
print(f"错误:在目录 {images_dir} 中未找到图片文件")
sys.exit(1)
# 创建ZIP文件
try:
with zipfile.ZipFile(zip_output, 'w', zipfile.ZIP_DEFLATED) as zipf:
for image_file in image_files:
image_path = os.path.join(images_dir, image_file)
# 添加到ZIP,保持文件名
zipf.write(image_path, image_file)
print(f" 已添加: {image_file}")
# 获取ZIP文件大小
zip_size = os.path.getsize(zip_output)
zip_size_mb = zip_size / (1024 * 1024)
print(f"\nZIP压缩包创建成功!")
print(f"文件路径: {zip_output}")
print(f"包含文件: {len(image_files)} 个")
print(f"文件大小: {zip_size_mb:.2f} MB")
except Exception as e:
print(f"错误:ZIP压缩包创建失败 - {str(e)}")
sys.exit(1)
def main():
parser = argparse.ArgumentParser(
description="将PDF文件转换为图片"
)
parser.add_argument(
'--input',
required=True,
help='输入PDF文件路径'
)
parser.add_argument(
'--output-dir',
default='images',
help='图片输出目录(默认:images)'
)
parser.add_argument(
'--image-format',
choices=['png', 'jpg'],
default='png',
help='图片格式(png或jpg),默认为png'
)
parser.add_argument(
'--dpi',
type=int,
default=200,
help='图片分辨率(DPI),默认为200'
)
parser.add_argument(
'--zip',
action='store_true',
help='生成ZIP压缩包'
)
parser.add_argument(
'--zip-output',
default='images.zip',
help='ZIP压缩包输出路径(默认:images.zip)'
)
args = parser.parse_args()
# 检查输入文件是否存在
if not os.path.exists(args.input):
print(f"错误:文件不存在 - {args.input}")
sys.exit(1)
# 检查是否为PDF文件
if not args.input.lower().endswith('.pdf'):
print("警告:输入文件可能不是PDF文件")
# 转换PDF为图片
try:
image_paths = pdf_to_images(
pdf_path=args.input,
output_dir=args.output_dir,
image_format=args.image_format,
dpi=args.dpi
)
except Exception as e:
print(f"错误:PDF转换失败 - {str(e)}")
sys.exit(1)
print("\n转换完成!")
print(f"图片保存位置: {args.output_dir}")
print(f"生成的图片文件: {', '.join(image_paths[:5])}{'...' if len(image_paths) > 5 else ''}")
# 生成ZIP压缩包
if args.zip:
try:
create_zip(
images_dir=args.output_dir,
zip_output=args.zip_output
)
except Exception as e:
print(f"错误:ZIP压缩失败 - {str(e)}")
sys.exit(1)
if __name__ == "__main__":
main()