亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

(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 關注
  • 295 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號