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

如何将多页PDF转换为单张图片?现有代码仅生成多图求修改

多页PDF转单张图片的修改方案

修改思路

借助PIL.Image模块将所有PDF页面垂直拼接为一张长图:

  • 保留原代码的PDF下载与页面提取逻辑
  • 计算拼接后图片的总高度(宽度统一采用第一页的宽度)
  • 创建白色背景的空白画布,按顺序将每一页粘贴到画布对应位置
  • 保存最终合并完成的单张图片

修改后的完整代码

import requests
from pdf2image import convert_from_path
from PIL import Image  # 新增导入PIL的Image模块

url = 'https://education.github.com/git-cheat-sheet-education.pdf'
r = requests.get(url, stream=True)

with open('F:/New folder/metadata.pdf', 'wb') as f:
    f.write(r.content)

pages = convert_from_path('F:/New folder/metadata.pdf', 500, poppler_path=r'C:\poppler-0.68.0\bin')

# 处理单页PDF的特殊情况
if len(pages) == 1:
    pages[0].save('F:/New folder/merged.jpg', 'JPEG')
else:
    # 统一使用第一页的宽度作为拼接后图片的宽度
    target_width = pages[0].width
    # 计算所有页面的总高度
    total_height = sum(page.height for page in pages)
    
    # 创建白色背景的空白画布,避免透明背景出现黑边
    merged_img = Image.new('RGB', (target_width, total_height), (255, 255, 255))
    
    # 逐页粘贴到画布上
    current_y = 0
    for page in pages:
        merged_img.paste(page, (0, current_y))
        current_y += page.height
    
    # 保存合并后的单张图片
    merged_img.save('F:/New folder/merged.jpg', 'JPEG')

额外说明

  • 若未安装Pillow库,需先执行命令:pip install pillow
  • 若PDF页面宽度不一致,可自行调整逻辑(例如取所有页面的最大宽度,或统一缩放所有页面至同一宽度)

内容的提问来源于stack exchange,提问作者san1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:03:12