如何将多页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
相关产品推荐
相关产品推荐

