我有一個包含 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 之前對文件名進行排序(以您第二次嘗試嘗試的方式)
添加回答
舉報
0/150
提交
取消