为了账号安全,请及时绑定邮箱和手机立即绑定

(Python) 将数百个 PNG 转换为单个 PDF

(Python) 将数百个 PNG 转换为单个 PDF

偶然的你 2023-08-22 16:51:18
我有一个包含 452 个图像 (.png) 的文件夹,我正在尝试使用 Python 将其合并到单个 PDF 文件中。每个图像都用其预期的页码进行标记,例如“1.png”、“2.png”、......、“452.png”。该代码在技术上是成功的,但输入的页面顺序与预期不符。import img2pdffrom 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,但这会生成 94MB 的一页 PDF。import img2pdffrom PIL import Imagewith 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)任何帮助将不胜感激,我做了很多研究,但还不够。提前致谢。
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

但输入的页面顺序不符合预期

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

这可以通过以下方法解决:

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 之前对文件名进行排序(以您第二次尝试尝试的方式)


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信