2026-10-06 · 本脚本已实跑验证(2 个 PDF 共 5 页全部导出,输出尺寸 1191×1684)
做PPT插图、发朋友圈长图、上传到只收图片的系统——都需要把 PDF 每页变成图片。手动一页页截图又糊又慢。这里用 pypdfium2(pip install pypdfium2,注意名字带个 2,它是 PDFium 的 Python 绑定)批量导出,中文文件名照常处理,Linux / Windows / Mac 都能跑。
# -*- coding: utf-8 -*-
"""PDF 批量转 PNG:pypdfium2 实测版"""
import sys, pathlib
import pypdfium2 as pdfium
SCALE = 2.0 # 缩放倍数:2.0 ≈ 144 DPI,3.0 ≈ 216 DPI
OUT_DIR = "pdf_images"
def convert(pdf_path: pathlib.Path):
doc = pdfium.PdfDocument(str(pdf_path))
n = 0
for i, page in enumerate(doc):
img = page.render(scale=SCALE).to_pil()
out = pathlib.Path(OUT_DIR) / f"{pdf_path.stem}-{i+1:03d}.png"
img.save(out)
n += 1
doc.close()
return n
if __name__ == "__main__":
pathlib.Path(OUT_DIR).mkdir(exist_ok=True)
args = sys.argv[1:] or sorted(pathlib.Path(".").glob("*.pdf"))
for p in [pathlib.Path(a) for a in args]:
print(f"{p.name}: {convert(p)} 页已导出到 {OUT_DIR}/")
实跑输出:
invoice-a.pdf: 2 页已导出到 pdf_images/
测试文档一.pdf: 3 页已导出到 pdf_images/
输出文件 pdf_images/ 下:invoice-a-001.png、测试文档一-003.png 等 5 张,file 确认为 PNG image data, 1191 x 1684(A4 页面 × 2 倍缩放),文字清晰无锯齿。
pip install pypdfium2——装 pdfium 或 pypdfium 都是别的项目,import 会报 ModuleNotFoundError。import 时也是 import pypdfium2。
PyMuPDF(fitz)功能更强,但在部分 Linux 环境 / 受管 Python 上装不上或证书报错;pypdfium2 是纯 wheel 依赖(只带 Pillow),基本 pip install 一把过。只是转图片这件事上两者效果相当。
API 没有 dpi 参数,渲染清晰度 = scale。scale=1 是 72 DPI(屏幕看都嫌糊),scale=2.0(≈144 DPI)适合插图,scale=3.0(≈216 DPI)适合打印。文件体积随 scale 平方增长,别一上来就开 5.0。
输出按 {文件名}-{页号:03d}.png 命名,页号补零保证排序正确;如果反过来 {序号}-{文件名},合并多个 PDF 后第二个文件的 001 会和第一个的撞名(除非加全局计数)。想 JPG 就把 .png 换成 .jpg(to_pil().save() 自动识别格式)。
懒得装 Python 环境?喵窝提供文档代做服务(¥19.9):把 PDF 发给我们,交付转好的图片包(或反向图片合成 PDF)+ 可复用脚本,包免费重做(虚拟物品交付后不退款;未达承诺免费重做)。
→ 去喵窝资源铺看服务