You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多页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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:46:01