使用pdf2image的convert_from_path()无法生成PNG/TIF格式图片求助
解决pdf2image convert_from_path格式不生效问题
问题原因
你遇到的fmt参数不生效、生成JPEG而非指定格式的问题,主要有两个可能:
- 当使用
output_folder参数时,若poppler版本过旧,会忽略fmt参数默认输出JPEG; - 代码中手动
save时文件名重复,且output_folder和手动save操作重复,导致格式混淆。
修正方案
方案1:不使用output_folder,手动控制保存路径和格式
这种方式更灵活,能精准控制每个页面的输出:
from pdf2image import convert_from_path pdf_file = "你的PDF文件路径" output_dir = "输出文件夹路径" # 生成并保存PNG格式 png_images = convert_from_path( pdf_file, dpi=300, fmt="png", size=(1240, None) ) for page_num, img in enumerate(png_images, start=1): img.save(f"{output_dir}/page_{page_num}.png", "PNG") # 生成并保存TIF格式 tif_images = convert_from_path( pdf_file, dpi=300, fmt="tif", size=(1240, None) ) for page_num, img in enumerate(tif_images, start=1): img.save(f"{output_dir}/page_{page_num}.tif", "TIFF")
方案2:用output_folder让pdf2image直接生成文件
如果不需要额外处理图片,直接让库写入文件夹更高效,注意指定output_file前缀避免文件名冲突:
from pdf2image import convert_from_path pdf_file = "你的PDF文件路径" output_dir = "输出文件夹路径" # 生成PNG到指定文件夹 convert_from_path( pdf_file, dpi=300, fmt="png", size=(1240, None), output_folder=output_dir, output_file="pdf_page" # 生成的文件会是pdf_page_1.png、pdf_page_2.png... ) # 生成TIF到指定文件夹 convert_from_path( pdf_file, dpi=300, fmt="tif", size=(1240, None), output_folder=output_dir, output_file="pdf_page_tif" # 生成的文件会是pdf_page_tif_1.tif、pdf_page_tif_2.tif... )
额外:生成多页TIF(合并所有PDF页面)
如果需要把整个PDF转成单个多页TIF文件,用以下代码:
from pdf2image import convert_from_path from PIL import Image pdf_file = "你的PDF文件路径" multi_page_tif = "多页输出.tif" images = convert_from_path( pdf_file, dpi=300, size=(1240, None) ) # 保存为多页TIF images[0].save( multi_page_tif, save_all=True, append_images=images[1:], format="TIFF" )
关键注意事项
- 确保你的poppler是最新版本,旧版本对fmt参数支持不完善;
- 手动save时,文件名必须包含页码,否则后续页面会覆盖之前的;
- 保存TIF时,PIL的格式参数是
"TIFF",而pdf2image的fmt参数用"tif"即可。
内容的提问来源于stack exchange,提问作者Sapna Sharma
相关产品推荐
相关产品推荐

