跳至主要内容

使用 Python 把 PDF 轉圖片

開發過程中,你可能經常需要將 PDF 檔案轉換成圖片格式,無論是用於文件展示、資料處理或內容分享。

本篇文章介紹一個好用的 Python 模組: pdf2image ,它能夠將 PDF 檔案轉換成 PIL 圖片。

安裝依賴

pdf2image 依賴於 pdftoppmpdftocairo 兩個工具,不同作業系統的安裝方式略有不同:

  • Mac:透過 Homebrew 安裝 Poppler,請在終端機中執行:

    brew install poppler
  • Linux:大多數 Linux 發行版已預裝 pdftoppmpdftocairo。如果沒有,可以用以下指令:

    sudo apt-get install poppler-utils   # Ubuntu/Debian 系統
  • 使用 conda:無論哪個平台,都可以透過 conda 安裝 Poppler:

    conda install -c conda-forge poppler

    安裝完成後,再安裝 pdf2image 即可。

安裝 pdf2image

在終端機中執行以下指令即可完成安裝:

pip install pdf2image

使用方式

轉換 PDF 至圖片的基本用法相當簡單。

以下範例示範如何將 PDF 的每一頁轉換成 PIL 圖片對象,並儲存成檔案:

from pdf2image import convert_from_path

# 將 PDF 檔案轉換為圖片列表
images = convert_from_path('/path/to/your/pdf/file.pdf')

# 逐頁儲存為 PNG 格式的圖片
for i, image in enumerate(images):
image.save(f'output_page_{i+1}.png', 'PNG')

若你希望從二進制數據進行轉換,可以參考以下做法:

with open('/path/to/your/pdf/file.pdf', 'rb') as f:
pdf_data = f.read()

images = convert_from_bytes(pdf_data)

可選參數與進階設定

pdf2image 提供了豐富的可選參數,讓你能根據需求自定義輸出圖片的品質與範圍:

  • DPI 設定:調整 dpi 參數可以提升圖片解析度,適用於需要高品質圖片的場合:

    images = convert_from_path('/path/to/your/pdf/file.pdf', dpi=300)
  • 指定頁面範圍: 使用 first_pagelast_page 參數,可選擇僅轉換特定頁面:

    images = convert_from_path('/path/to/your/pdf/file.pdf', first_page=2, last_page=5)
  • 輸出圖片格式: 可透過 fmt 參數指定輸出圖片的格式,如 JPEG 或 PNG:

    images = convert_from_path('/path/to/your/pdf/file.pdf', fmt='jpeg')
  • 錯誤處理:在轉換過程中,可能會遇到格式錯誤或檔案損毀的情況,建議搭配 try/except 捕捉異常:

    try:
    images = convert_from_path('/path/to/your/pdf/file.pdf')
    except Exception as e:
    print("轉換失敗:", e)

結語

pdf2image 是個好用的工具,更多參數與詳細用法,請參考 pdf2image 官方文件