如何使用Python批量转换同一文件夹内的百余个PDF文件为图片?
批量PDF转图片的解决方案
没问题,我帮你把单文件的代码扩展成批量处理版本,还加了几个实用细节,避免文件名冲突、处理异常情况,让100多个PDF的转换更顺畅:
完整代码示例
import os from pdf2image import convert_from_path # 替换成你的PDF所在文件夹路径 pdf_folder = "你的PDF文件夹绝对路径" # 保持你原来的poppler路径不变 poppler_path = r"E:/software/poppler-0.67.0/bin" # 自动在PDF文件夹下创建一个子文件夹存放所有图片,避免杂乱 output_root = os.path.join(pdf_folder, "pdf_converted_images") os.makedirs(output_root, exist_ok=True) # 遍历目标文件夹里的所有文件 for filename in os.listdir(pdf_folder): # 筛选出PDF文件(兼容大小写后缀,比如.PDF) if filename.lower().endswith(".pdf"): # 拼接完整的PDF文件路径 full_pdf_path = os.path.join(pdf_folder, filename) # 提取PDF文件名(不带后缀),用来做图片命名和子文件夹名 pdf_base_name = os.path.splitext(filename)[0] try: # 把PDF转换成图片列表 images = convert_from_path(full_pdf_path, poppler_path=poppler_path) # 为每个PDF单独创建子文件夹,避免不同PDF的图片混在一起 single_pdf_output = os.path.join(output_root, pdf_base_name) os.makedirs(single_pdf_output, exist_ok=True) # 逐个保存图片,命名格式为「PDF文件名_页码.jpg」 for page_num, image in enumerate(images, start=1): image_save_name = f"{pdf_base_name}_page_{page_num}.jpg" image_save_path = os.path.join(single_pdf_output, image_save_name) image.save(image_save_path, "JPEG") print(f✅ 成功转换:{filename}") except Exception as e: # 遇到损坏的PDF或者其他错误时,跳过并打印提示,不中断整个批量任务 print(f❌ 转换失败 {filename}:{str(e)}")
代码亮点说明
- 自动整理文件:每个PDF的图片会存放在单独的子文件夹里,文件名还带页码,找起来特别方便
- 容错性强:加入了异常捕获,哪怕某个PDF损坏或者无法读取,程序也会继续处理其他文件
- 兼容大小写:不管PDF后缀是
.pdf还是.PDF都能被识别到 - 路径安全:用
os.path.join拼接路径,避免Windows和Linux的路径格式问题
可选优化建议
- 如果需要更高清晰度的图片,可以在
convert_from_path里添加dpi=300参数(默认dpi较低),比如:images = convert_from_path(full_pdf_path, poppler_path=poppler_path, dpi=300) - 如果你不想为每个PDF创建子文件夹,直接把所有图片放在根输出文件夹里,可以跳过创建子文件夹的步骤,直接用
{pdf_base_name}_page_{page_num}.jpg命名图片 - 可以添加进度提示,比如先统计总PDF数量,再显示当前处理进度
内容的提问来源于stack exchange,提问作者techMayu
相关产品推荐
相关产品推荐

