最後更新: 2025 年 1 月 27 日

如何在 Python 中將 PDF 轉換為圖像:逐步指南
將 PDF 文件轉換為圖像格式如 JPEG 或 PNG 在需要從 PDF 中提取圖像、展示文件預覽或處理視覺數據的情況下非常有用。Python 作為一種多功能的編程語言,提供了多種途徑來高效地完成此任務。
在本指南中,我們將逐步介紹如何在 Python 中將 PDF 轉換為圖像。您將學習如何使用流行的 Python 庫、代碼示例以及有用的故障排除提示來執行此操作。我們還將提供完整的代碼及其輸出圖像和所使用的樣例 PDF。
在 Python 中將 PDF 轉換為圖像所需準備
在執行代碼之前,確保您擁有正確的工具來開始此項任務。您需要安裝以下 Python 庫:
- Pillow: 一個受歡迎的 Python 圖像處理庫(PIL),常用於打開、操作和保存圖像文件。
- pdf2image: 此庫有助於在 Python 中將 PDF 頁面轉換為圖像。它使用 Poppler 來將 PDF 頁面渲染為圖像。
安裝所需的庫
您可以使用 pip 安裝這些庫:
pip install pillow pdf2image
如果您系統上尚未安裝 Poppler,可能需要單獨安裝。請在這裡查看您平台的安裝指南。
在 Python 中將 PDF 轉換為圖像的逐步指南
步驟 1: 導入必要的庫
首先導入必要的 Python 庫:
from pdf2image import convert_from_path
from PIL import Image
步驟 2: 將 PDF 轉換為圖像
導入庫後,您可以將 PDF 文件轉換為圖像。操作如下:
# 將 PDF 轉換為圖像
images = convert_from_path('yourfile.pdf')
# 將每頁存儲為圖像
for i, image in enumerate(images):
image.save(f'page_{i}.jpg', 'JPEG')
代碼解釋:
convert_from_path()
函數將 PDF 文件轉換為 PIL 圖像對象的列表。- 然後我們遍歷這些圖像,將 PDF 的每一頁保存為一個單獨的圖像(此處為 JPEG 格式)。
步驟 3: 可選 – 轉換為其他圖像格式
您可以輕鬆地將圖像轉換為其他格式,如 PNG,只需在 image.save()
方法中更改格式:
image.save(f'page_{i}.png', 'PNG')
完整代碼
以下是完整的代碼。只需複製它,將其保存為任何名稱並使用 .py
擴展名,然後執行。舉例來說,您可以將其命名為 convert_pdf_to_images.py
。
在執行之前,只需更新 pdf_path
變量以指向您的 PDF 文件輸入路徑。
下載樣例 PDF 並查看其截圖
您可以使用任何 PDF,但為了運行和測試此代碼,我們使用了以下特定 PDF。
代碼生成的輸出圖像
- page_1.jpg
- page_2.jpg
- page_3.jpg
在 Python 中將 PDF 轉換為圖像的替代方法
儘管 pdf2image 和 Poppler 廣泛使用,但有其他方法可以在不需要 Poppler 的情況下將 PDF 轉換為圖像。例如:
- 使用 PyMuPDF (fitz): 此庫也允許您從 PDF 中提取圖像並操作它們。
pip install pymupdf
範例代碼:
import fitz # PyMuPDF
# 打開 PDF 文件
doc = fitz.open("yourfile.pdf")
# 遍歷每頁並轉換為圖像
for page_num in range(len(doc)):
page = doc.load_page(page_num)
pix = page.get_pixmap()
pix.save(f"page_{page_num}.png")
此方法不需要 Poppler,並且如果您遇到安裝問題可以作為替代。
常見錯誤及故障排解
雖然在 Python 中將 PDF 轉換為圖像通常很簡單,但可能會遇到一些問題。以下是一些常見錯誤及其解決方案:
錯誤:
OSError: cannot identify image file
- 如果 PDF 未正確渲染,通常會出現此情況。確保 Poppler 正確安裝並且可以從您的 Python 環境訪問。
錯誤:
RuntimeError: cannot open image file
- 如果嘗試打開不支持的圖像格式可能會發生此錯誤。仔細檢查您存儲圖像的格式(JPEG、PNG 等),並確保 Pillow 支持它。
結論
借助於 pdf2image 和 Pillow 等庫,將 PDF 文檔轉換為圖像在 Python 中變得非常容易。無論您是尋找從 PDF 中提取圖像還是僅僅想將每一頁顯示為圖片,此指南已經逐步展示了如何做到這一點。
根據您的項目需求,您還可以探索其他 Python 庫,如 PyMuPDF 以達成類似效果。
如果您有任何疑問或在實施此解決方案過程中遇到任何問題,歡迎在我們的論壇留言!
分享與探索
如果本指南對您有幫助,不要忘記分享給其他人,並探索我們其他有用的指南以獲取更多編碼提示和技巧!