首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Python)将数百个PNG转换成一个PDF格式

(Python)将数百个PNG转换成一个PDF格式
EN

Stack Overflow用户
提问于 2020-09-21 16:38:37
回答 1查看 856关注 0票数 2

我有一个包含452张图片(.png)的文件夹,我正在尝试使用Python合并到一个PDF文件中。每幅图片都有其预定的页码,例如"1.png“、"2.png”、.、"452.png“。

这段代码在技术上是成功的,但按预期顺序输入页面。

代码语言:javascript
复制
import img2pdf
from PIL import Image    
with open("output.pdf", 'wb') as f:
    f.write(img2pdf.convert([i for i in os.listdir('.') if i.endswith(".png")]))

我还试着以二进制数据的形式读取数据,然后将其转换为PDF,然后将其写入PDF,但这会产生一个94 to的一页PDF。

代码语言:javascript
复制
import img2pdf
from PIL import Image

with open("output.pdf", 'wb') as f:
    for i in range(1, 453):
        img = Image.open(f"{i}.png")
        pdf_bytes = img2pdf.convert(img)
        f.write(pdf_bytes)

任何帮助都会很感激,我已经做了很多研究,但都做得不够。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-21 16:45:08

,但按预定顺序输入页面

我怀疑预期的顺序是“按文件名的数字顺序”,即1.png、2.png、3.png等等。

解决这一问题的办法是:

代码语言:javascript
复制
with open("output.pdf", 'wb') as f:
    f.write(img2pdf.convert(sorted([i for i in os.listdir('.') if i.endswith(".png")], key=lambda fname: int(fname.rsplit('.',1)[0]))))

这是您的第一次尝试的稍微修改的版本,它只是在批处理之前对文件名进行排序(按照您第二次尝试的方式)--将其写入PDF。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63996529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档