首頁 > 軟體

Python實現合成多張圖片到PDF格式

2022-02-28 10:00:33

在日常生活中,經常會遇到需要提交身份證正反面證明資料的情況,而且這些網站大部分只接受pdf格式,這時候我們就需要把身份證正反面兩張圖片合成為一個pdf檔案。

在macOS系統下,預覽軟體可以輕鬆做到這一點,同時開啟圖片到一個預覽視窗下,點選匯出PDF就能成功匯出。但是Windows系統就沒有這麼方便的軟體可以實現這一點,網上有很多合成PDF的網站,但是這些網站無一例外需要上傳PDF進行合成,個人認為非常地不安全。

因此,最安全的方法,還是我們自己寫一個Python指令碼實現合成功能。

1.準備

開始之前,你要確保Python和pip已經成功安裝在電腦上

請選擇以下任一種方式輸入命令安裝依賴:

1. Windows 環境 開啟 Cmd (開始-執行-CMD)。

2. MacOS 環境 開啟 Terminal (command+空格輸入Terminal)。

3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用介面下方的Terminal.

pip install pillow

2.合成原理

Pillow模組,即PIL:Python Imaging Library,已經是Python平臺事實上的影象處理標準庫了。PIL功能非常強大,但API卻非常簡單易用。通過它,我們能很輕鬆地操作影象,並匯出為不同格式。

首先來一個簡單的範例,我們將開啟一張圖片,並將其儲存為pdf格式:

from PIL import Image
import os


def convert_img_pdf(filepath, output_path):
    """
    轉換圖片為pdf格式

    Args:
        filepath (str): 檔案路徑
        output_path (str): 輸出路徑
    """
    output = Image.open(filepath)
    output.save(output_path, "pdf", save_all=True)
    
    
if __name__ == "__main__":
    convert_img_pdf("1.jpeg", "./test.pdf")

隨便使用一張圖片測試一下:

在執行程式碼後,它便成功地轉化為了PDF檔案:

幾行程式碼便完成了這個轉換,這個可比那些把照片上傳到雲端的網站安全多了。

3.多張照片合成PDF

有了前面照片轉化PDF的基礎知識,想要理解下面的多圖合成PDF的程式碼就非常簡單了。

其實就是使用了.save的一個特殊引數 append_images:

output.save(pdfFilePath, "pdf", save_all=True, append_images=sources)

通過把圖片都存入到一個"sources"陣列中,我們就能很輕易地合成這些影象到PDF中。

from PIL import Image
import os

def combine_imgs_pdf(folder_path, pdf_file_path):
    """
    合成資料夾下的所有圖片為pdf

    Args:
        folder_path (str): 原始檔夾
        pdf_file_path (str): 輸出路徑
    """
    files = os.listdir(folder_path)
    png_files = []
    sources = []
    for file in files:
        if 'png' in file or 'jpg' in file:
            png_files.append(folder_path + file)
    png_files.sort()

    output = Image.open(png_files[0])
    png_files.pop(0)
    for file in png_files:
        png_file = Image.open(file)
        if png_file.mode == "RGB":
            png_file = png_file.convert("RGB")
        sources.append(png_file)
    output.save(pdf_file_path, "pdf", save_all=True, append_images=sources)

if __name__ == "__main__":
    folder = r"G:證件\"
    pdfFile = r"G:證件身份證.pdf"
    combine_imgs_pdf(folder, pdfFile)

這樣,只要將你的證件照都放在一個資料夾中,執行這個Python程式碼,它就能自動將這些證件合成到一個PDF中,並輸出到你指定的路徑。非常簡單方便。

到此這篇關於Python實現合成多張圖片到PDF格式的文章就介紹到這了,更多相關Python多圖合成PDF內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com