我有一个包含452张图片(.png)的文件夹,我正在尝试使用Python合并到一个PDF文件中。每幅图片都有其预定的页码,例如"1.png“、"2.png”、.、"452.png“。
这段代码在技术上是成功的,但按预期顺序输入页面。
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。
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)任何帮助都会很感激,我已经做了很多研究,但都做得不够。提前谢谢。
发布于 2020-09-21 16:45:08
,但按预定顺序输入页面
我怀疑预期的顺序是“按文件名的数字顺序”,即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。
https://stackoverflow.com/questions/63996529
复制相似问题