如何在 Python 中將 PDF 轉換為圖片 | IronPDF

Python PDF 轉圖像轉換

This article was translated from English: Does it need improvement?
Translated
View the article in English

PDF 轉圖像功能是 Python 應用程式中常見的需求。 開發人員使用它來生成文件縮圖、網頁預覽,並將 PDF 內容導入影像處理流程中。 IronPDF for Python 提供 RasterizeToImageFiles 方法,可將任何 PDF 文件(或 URL)轉換為 JPEG、PNG 或 TIFF 圖像檔案,並支援自訂 DPI 及尺寸。

本指南將說明如何在 Python 中將 PDF 檔案轉換為圖片、如何控制輸出品質,以及如何調整生成的圖片尺寸以符合版面配置需求。

快速入門:將 PDF 轉換為圖片

  1. 安裝 IronPDF:pip install ironpdf
  2. 載入 PDF 文件:pdf = PdfDocument.FromFile("document.pdf")
  3. 將每頁轉換為 PNG 格式:pdf.RasterizeToImageFiles("output/*.png", DPI=96)
#:path=/static-assets/pdf/content-code-examples/how-to/python-pdf-to-image/quickstart.py
from ironpdf import PdfDocument

pdf = PdfDocument.FromFile("document.pdf")
pdf.RasterizeToImageFiles("output/*.png", DPI=96)
#:path=/static-assets/pdf/content-code-examples/how-to/python-pdf-to-image/quickstart.py
from ironpdf import PdfDocument

pdf = PdfDocument.FromFile("document.pdf")
pdf.RasterizeToImageFiles("output/*.png", DPI=96)
PYTHON

開發者為何要將 PDF 轉換為圖片?

PDF 轉圖像的功能可解決軟體開發中的若干實際問題。 最常見的需求是預覽生成——在網頁介面或行動應用程式中顯示 PDF 文件的縮圖,而無需強制使用者下載並開啟完整檔案。

其他常見應用情境包括:

  • 機器學習管道:OCR 模型、版面配置分析工具及電腦視覺系統接受圖像輸入,而非 PDF 檔案
  • 歸檔與合規性:在原始 PDF 旁儲存視覺快照,可確保即使 PDF 檢視器變更,文件仍能長期保持可讀性
  • 報告嵌入:將特定 PDF 頁面作為圖片嵌入其他文件或電子郵件範本中
  • 自動化測試:透過比對渲染後的頁面快照,以偵測 PDF 輸出中的視覺退化

Python 的標準函式庫中並未內建 PDF 轉圖像的功能。 像 pdf2image 這樣的工具需要安裝 Poppler 作為外部二進位檔,這增加了部署的複雜性。 IronPDF 會在內部處理渲染,因此要在任何 Python 專案中加入 PDF 轉圖像功能,只需添加單一 pip install 即可。

請注意IronPDF 採用基於 Chromium 的渲染引擎。透過 HTML 渲染產生的 PDF 文件,其圖像呈現效果與瀏覽器顯示完全一致,這對於源自 HTML 或 URL 的 PDF 文件特別有用。

如何將 PDF 檔案轉換為圖片?

若要將 PDF 轉換為圖片,請在 PdfDocument 實例上呼叫 RasterizeToImageFiles。 此方法會將每頁內容寫入一個影像檔案,並儲存至指定目錄中。 輸出路徑中的星號 (*) 將被 1 起始的頁碼所取代,因此 assets/images/*.png 會產生 assets/images/2.png,以此類推。

在呼叫該方法之前,請先建立輸出目錄。 若該檔案不存在,IronPDF 將不會自動建立。

#:path=/static-assets/pdf/content-code-examples/how-to/python-pdf-to-image/convert-pdf-to-images.py
from ironpdf import PdfDocument

# Load a PDF from disk
pdf = PdfDocument.FromFile("my-content.pdf")

# Write each page to a PNG file in the "assets/images" folder
# The folder must exist before calling this method
pdf.RasterizeToImageFiles("assets/images/*.png", DPI=96)
#:path=/static-assets/pdf/content-code-examples/how-to/python-pdf-to-image/convert-pdf-to-images.py
from ironpdf import PdfDocument

# Load a PDF from disk
pdf = PdfDocument.FromFile("my-content.pdf")

# Write each page to a PNG file in the "assets/images" folder
# The folder must exist before calling this method
pdf.RasterizeToImageFiles("assets/images/*.png", DPI=96)
PYTHON

DPI 參數用於控制圖片解析度。 較高的 DPI 會產生更清晰的圖像,但代價是檔案大小增加且處理時間較長。標準值:

DPI 值與典型應用情境
DPI典型用途
72螢幕解析度、快速處理
96標準網頁品質
150優異的列印品質
300高品質的列印輸出
File explorer showing numbered PNG output files (1.png through 11.png) generated by RasterizeToImageFiles from an 11-page PDF

輸出目錄中,每頁 PDF 對應一個 PNG 檔案

若輸出影像出現模糊,請增加 DPI 的數值。 處理一份 50 頁、300 DPI 的文件所需時間明顯比 96 DPI 更長——請根據實際使用情境的品質需求進行選擇。

提示針對網頁縮圖生成,96 DPI 已足夠,且能保持檔案大小精簡。 (若圖片需列印或以全尺寸顯示,請預留 150-300 DPI 的解析度。

如何將特定頁碼範圍轉換為圖片?

若僅需轉換部分頁面,請將頁面索引作為第二個參數傳遞給 RasterizeToImageFiles。 頁碼採用從零開始的整數計數。

#:path=/static-assets/pdf/content-code-examples/how-to/python-pdf-to-image/convert-page-range.py
from ironpdf import PdfDocument

pdf = PdfDocument.FromFile("my-content.pdf")

# Convert only pages 1, 2, and 3 (zero-based indices: 0, 1, 2)
pdf.RasterizeToImageFiles("assets/images/*.png", [0, 1, 2], DPI=96)
#:path=/static-assets/pdf/content-code-examples/how-to/python-pdf-to-image/convert-page-range.py
from ironpdf import PdfDocument

pdf = PdfDocument.FromFile("my-content.pdf")

# Convert only pages 1, 2, and 3 (zero-based indices: 0, 1, 2)
pdf.RasterizeToImageFiles("assets/images/*.png", [0, 1, 2], DPI=96)
PYTHON

針對僅需預覽前幾頁的文件,選擇性頁面擷取功能可避免不必要地處理整個檔案。若工作流程需擷取已嵌入 PDF 中的圖片,IronPDF 提供獨立的擷取方法。

如何將 URL 轉換為圖片?

IronPDF 能夠將網頁渲染為 PDF,並在單一工作流程中將該 PDF 轉換為圖像。 請使用 ChromePdfRenderer 擷取並渲染 URL,然後對生成的 PdfDocument 呼叫 RasterizeToImageFiles。 此方法可建立網頁的視覺化存檔,或為網頁內容產生預覽圖像,無需額外使用截圖工具。

#:path=/static-assets/pdf/content-code-examples/how-to/python-pdf-to-image/url-to-images.py
from ironpdf import ChromePdfRenderer

# Render a web page to PDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderUrlAsPdf("https://www.example.com")

# Convert each rendered page to a PNG image
pdf.RasterizeToImageFiles("assets/images/*.png", DPI=96)
#:path=/static-assets/pdf/content-code-examples/how-to/python-pdf-to-image/url-to-images.py
from ironpdf import ChromePdfRenderer

# Render a web page to PDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderUrlAsPdf("https://www.example.com")

# Convert each rendered page to a PNG image
pdf.RasterizeToImageFiles("assets/images/*.png", DPI=96)
PYTHON

渲染的圖片呈現了頁面在 Chromium 瀏覽器中的顯示效果,包含 CSS 樣式及 JavaScript 渲染的內容。 若遇到需驗證或需要互動的頁面,請考慮使用 IronPDF 的 HTML 轉 PDF 教學指南,直接提供預渲染的標記碼。 隨後可採用上述相同方法將生成的 PDF 進行點陣化處理。

File explorer showing 5 PNG files (1.png through 5.png) generated from a URL rendered to PDF by IronPDF

透過 IronPDF 渲染自 URL 所生成的圖片

如何控制輸出圖片的尺寸?

預設情況下,RasterizeToImageFiles 會根據 DPI 係數,以原始頁面尺寸生成圖片。 若需限制輸出大小,請設定 ImageMaxWidthImageMaxHeight,兩者皆以像素為單位。

IronPDF 會根據 ImageMaxHeight 的值來保留原始的長寬比。 即使指定寬高比例與原始頁面不同,輸出內容也不會被拉伸或變形。

#:path=/static-assets/pdf/content-code-examples/how-to/python-pdf-to-image/constrained-dimensions.py
from ironpdf import PdfDocument

pdf = PdfDocument.FromFile("my-content.pdf")

# Generate thumbnail images constrained to 500x500 pixels
pdf.RasterizeToImageFiles(
    "assets/images/*.png",
    ImageMaxWidth=500,
    ImageMaxHeight=500,
    DPI=200
)
#:path=/static-assets/pdf/content-code-examples/how-to/python-pdf-to-image/constrained-dimensions.py
from ironpdf import PdfDocument

pdf = PdfDocument.FromFile("my-content.pdf")

# Generate thumbnail images constrained to 500x500 pixels
pdf.RasterizeToImageFiles(
    "assets/images/*.png",
    ImageMaxWidth=500,
    ImageMaxHeight=500,
    DPI=200
)
PYTHON

ImageMaxWidth=500, ImageMaxHeight=500 設定為 200 DPI,可產生適合縮圖顯示或卡片式 UI 佈局的圖像。 請根據應用程式設計所需的尺寸調整這些數值。 為了產生即將被光柵化的 PDF 內容,IronPDF 亦支援透過 Python 建立 PDF 檔案,並在轉換前合併多個 PDF 檔案

重要事項根據高度保留長寬比。 若原始頁面的寬度大於高度,生成的圖片可能比 ImageMaxWidth 更窄。 設計版面配置以處理可變寬度的縮圖。)}]

PDF 轉圖像的下一步是什麼?

本指南涵蓋了三個核心工作流程:將 PDF 檔案轉換為圖片、將網址轉換為圖片,以及控制圖片尺寸與畫質。 IronPDF 支援 JPEG、JPG、PNG、TIFF 以及透過相同 RasterizeToImageFiles 方法處理的其他格式。 請變更輸出路徑模式中的檔案副檔名以切換格式。

若需進一步自動化,請考慮以下步驟:

  • 批次處理:遍歷 PDF 檔案目錄並依序轉換每個檔案,或使用 Python 的 concurrent.futures 模組進行平行處理
  • 選擇性擷取:使用 page index 參數,僅擷取與使用案例相關的頁面
  • 影像處理流程整合:將輸出檔案導入 PIL/PillowOpenCV 進行後續處理,例如裁切、標註或格式標準化
  • 轉換前壓縮:使用 IronPDF 的 PDF 壓縮功能,在將大型文件轉為點陣圖前先縮小檔案大小
  • 表單工作流程:透過程式化方式填寫 PDF 表單,並將填妥的表單頁面轉換為圖像,以便審閱或歸檔

若要繼續使用 IronPDF 進行開發,請參閱 IronPDF for Python 文件以及"將 PDF 渲染為圖像"範例

立即開始 IronPDF for Python 的 30 天試用,將這些功能應用於實際生產環境中。 準備部署時,請查看適合專案規模的方案授權選項

請注意延伸閱讀:PDF 轉為圖片

常見問題

如何在 Python 中將 PDF 轉換為圖片?

請使用 `pip installIronPDF` 安裝 IronPDF,接著透過 `PdfDocument.FromFile("file.pdf")` 載入 PDF 檔案,並呼叫 `RasterizeToImageFiles("output/*.png", DPI=96)`。此操作會將每頁內容寫入指定目錄中,生成單一影像檔案。

IronPDF 支援哪些圖像格式進行 PDF 轉換?

IronPDF 支援 PNG、JPEG、JPG 及 TIFF 輸出格式。請透過變更傳遞給 RasterizeToImageFiles 的輸出路徑模式中的檔案副檔名來指定格式,例如使用 *.jpg 代表 JPEG 或 *.tiff 代表 TIFF。

轉換 PDF 時,該如何控制影像品質?

請在 RasterizeToImageFiles 中使用 DPI 參數。96 為標準網頁品質,150 適用於列印預覽,300 則可產生高品質的列印輸出。較高的 DPI 值會增加檔案大小及處理時間。

我可以為輸出圖片設定最大寬度或高度嗎?

是的。請將 ImageMaxWidthImageMaxHeight 以像素為單位傳遞給 RasterizeToImageFiles。IronPDF 會根據高度值保留長寬比,因此影像不會變形。

如何將 PDF 中的特定頁面轉換為圖片?

請將以零為起點的頁面索引清單作為第二個參數傳遞給 RasterizeToImageFiles。例如,[0, 1, 2] 僅會轉換前三個頁面。

我可以使用 IronPDF 將網頁 URL 轉換為圖片嗎?

是的。請使用 ChromePdfRenderer 透過 URL 呼叫 RenderUrlAsPdf 方法,該方法會傳回一個 PdfDocument 文件。接著對該文件呼叫 RasterizeToImageFiles 方法,即可將每頁渲染結果轉為獨立的圖像檔案。

IronPDF 是否需要任何外部二進位檔來進行 PDF 轉圖像的轉換?

不。IronPDF 內建基於 Chromium 的渲染引擎,無需安裝 Poppler、Ghostscript 或任何外部二進位檔。只需執行 `pip install IronPDF` 即可開始使用。

為什麼我轉換後的圖片看起來模糊?

輸出畫面模糊是因 DPI 值過低所致。請將預設值 96 調高至 150 或 300,以獲得更清晰的結果。請注意,較高的 DPI 會導致檔案大小增加,且處理時間較長。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎?
執行範例 觀看您的 HTML 轉為 PDF。