如何将多页PDF转换为多页PNG?代码仅导出首页问题求助
解决多页PDF转多页PNG的问题
问题根源:普通PNG格式本身不支持多页文档,你用的save_all=True参数对PNG格式无效——PIL库的PNG编码器默认只输出单页内容,所以只会保存第一页。
下面是三种可行的解决思路:
1. 把所有页面拼接成一张长图保存
适合需要单张图片包含所有内容的场景:
from pdf2image import convert_from_path from PIL import Image def convert_to_png(input_document): pages = convert_from_path(r"C:\Users\jakeh\Downloads" + '\\' + input_document + ".pdf", poppler_path=r"C:\Users\jakeh\poppler-0.68.0_x86\poppler-0.68.0\bin") # 计算拼接后的画布尺寸,宽度统一用第一页的宽度 total_height = sum(page.height for page in pages) combined_image = Image.new('RGB', (pages[0].width, total_height)) # 逐页粘贴到画布上 current_y = 0 for page in pages: combined_image.paste(page, (0, current_y)) current_y += page.height combined_image.save("combined_out.png")
2. 每个页面单独保存为独立PNG文件
这是最通用的方案,所有图像查看器都能正常打开:
from pdf2image import convert_from_path def convert_to_png(input_document): pages = convert_from_path(r"C:\Users\jakeh\Downloads" + '\\' + input_document + ".pdf", poppler_path=r"C:\Users\jakeh\poppler-0.68.0_x86\poppler-0.68.0\bin") # 按页面序号命名保存 for idx, page in enumerate(pages, start=1): page.save(f"out_page_{idx}.png")
3. 生成支持多页的APNG格式
如果必须在单个文件里包含所有页面,可以用APNG(动画PNG)格式,不过注意这种格式只有部分浏览器和图像软件支持:
首先安装依赖库:
pip install apng
然后运行代码:
from pdf2image import convert_from_path import apng def convert_to_apng(input_document): pages = convert_from_path(r"C:\Users\jakeh\Downloads" + '\\' + input_document + ".pdf", poppler_path=r"C:\Users\jakeh\poppler-0.68.0_x86\poppler-0.68.0\bin") apng.APNG.from_images(pages).save("multi_page_out.apng")
内容的提问来源于stack exchange,提问作者JH776
相关产品推荐
相关产品推荐

