如何使用 Python 列印 PDF 檔案

如何使用 Python 列印 PDF 檔案

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

在 Python 中列印 PDF 檔案是文件自動化工作流程中的常見需求——例如在生成時將發票傳送至印表機、自動排入列印佇列的運送標籤,以及按時發送的稽核報告。 IronPDF for Python 提供兩種直接方法:pdf.Print() 用於立即透過預設印表機輸出,以及 pdf.GetPrintDocument() 用於完全控制頁碼範圍、印表機選擇、份數及排序方式。

本指南涵蓋安裝、載入 PDF、預設列印設定以及自訂列印設定,並針對每項內容提供可運作的程式碼範例。

快速入門:使用 Python 列印 PDF 檔案

  1. 安裝 IronPDF:pip install ironpdf
  2. 導入函式庫:from ironpdf import *
  3. 載入您的 PDF:pdf = PdfDocument.FromFile("MyPdf.pdf")
  4. 使用預設設定PRINT:pdf.Print()
  5. 或先進行設定: printer_setting = pdf.GetPrintDocument()
from ironpdf import *

# Apply license key
License.LicenseKey = "YOUR-LICENSE-KEY"

# Load and print immediately
pdf = PdfDocument.FromFile("report.pdf")
pdf.Print()
from ironpdf import *

# Apply license key
License.LicenseKey = "YOUR-LICENSE-KEY"

# Load and print immediately
pdf = PdfDocument.FromFile("report.pdf")
pdf.Print()
PYTHON

什麼是 IronPDF,它如何協助 PDF 列印?

IronPDF 是一個 Python 函式庫,可讓開發人員建立、處理及轉換 PDF 文件。 該函式庫的列印支援涵蓋兩種模式:透過單一方法呼叫直接輸出至預設印表機,以及透過 PrinterSettings 進行文件層級存取以實現完整的印表機控制。

透過 IronPDF,印表機通訊背後的複雜性將由該函式庫處理。 開發人員使用高階 API 進行操作,無需管理作業系統層級的 PRINT 佇列互動、subprocess 指令,或特定平台的 PRINT 工具。 這意味著相同的 Python 程式碼可在 Windows、Linux 和 macOS 上運行,無需任何修改。

一項關鍵功能是能在列印前將 HTML、CSS 和 JavaScript 轉換為 PDF —— 當原始素材是網頁範本或動態報表而非現有檔案時,此功能特別實用。如需進一步了解,請參閱 HTML 轉 PDF 教學指南。 該函式庫亦支援在 PRINT 前合併 PDF 檔案,並可壓縮 PDF 檔案,以縮短大型文件的 PRINT 排程傳輸時間。

為何選擇 IronPDF for Python 進行 PDF 列印?

IronPDF 提供完整的列印 API,而非依賴 Ghostscript 或 Adobe Reader 命令列參數等外部工具。 該函式庫在內部處理文件渲染,這意味著PRINT輸出與螢幕顯示效果完全一致。 相較於基於子程序的方法,其主要實用優勢在於跨平台支援、一致的 PrinterSettings 存取,以及無需依賴本地安裝的 PDF 檢視器。

當待列印的內容尚未以 PDF 格式存在時,此函式庫亦特別實用。 開發人員可以透過單一 Python 腳本,從 HTML 範本建立 PDF 檔案、新增頁首與頁尾、套用自訂字型的版面配置,並將結果直接傳送至印表機。 這使得 IronPDF 不僅適用於列印現有檔案,更適合用於從文件生成到列印的整體工作流程。


如何安裝 IronPDF for Python?

IronPDF 套件可在 PyPI 上取得,並可透過單一 pip 指令進行安裝。

 pip install ironpdf

安裝完成後,請在腳本頂端加入以下導入語句:

from ironpdf import *
from ironpdf import *
PYTHON

IronPDF 需要 Python 3.6 或更高版本。 此套件在首次使用時會自動下載 IronPDF 渲染引擎,因此初次載入可能需要片刻時間。 若處於外連存取受限的環境,請參閱 IronPDF Engine 配置指南以了解離線設定選項。

設定您的授權金鑰

正式使用需具備授權金鑰。 請在任何其他 IronPDF 呼叫之前設定此選項:

from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"
from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"
PYTHON

此函式庫在開發與評估階段可於無授權金鑰的情況下以試用模式運作,但產出的 PDF 檔案將包含試用水印。 若需排除安裝問題,請參閱安裝疑難排解指南


如何載入 PDF 檔案進行列印?

IronPDF Python PdfDocument.FromFile() 將 PDF 從檔案系統載入至 PdfDocument 物件,準備進行列印

使用 IronPDF for Python 將檔案系統中的 PDF 載入至 PdfDocument 物件。

IronPDF 會使用 PdfDocument.FromFile() 從檔案系統載入 PDF 檔案。 此方法接受一個檔案路徑字串,並回傳一個 PdfDocument 物件,該物件已準備好進行列印、處理或檢視。

from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"

# Load from a file path
pdf = PdfDocument.FromFile("MyPdf.pdf")

# Load from bytes (e.g., a file read from a database or HTTP response)
with open("MyPdf.pdf", "rb") as f:
    pdf_bytes = f.read()
pdf_from_bytes = PdfDocument.FromBytes(pdf_bytes)

# Load a password-protected PDF
protected_pdf = PdfDocument.FromFile("SecurePdf.pdf", "password123")
from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"

# Load from a file path
pdf = PdfDocument.FromFile("MyPdf.pdf")

# Load from bytes (e.g., a file read from a database or HTTP response)
with open("MyPdf.pdf", "rb") as f:
    pdf_bytes = f.read()
pdf_from_bytes = PdfDocument.FromBytes(pdf_bytes)

# Load a password-protected PDF
protected_pdf = PdfDocument.FromFile("SecurePdf.pdf", "password123")
PYTHON

上述程式碼展示了三種載入模式。 FromFile() 是檔案系統工作流程中最常見的選項。 FromBytes() 適用於 PDF 檔案以二進位資料形式從資料庫查詢或 API 回應中取得的情況。 FromFile() 中的可選密碼參數,可直接處理加密的 PDF 檔案,無需額外的解密步驟。

對於源自網址或 HTML 內容的 PDF 檔案,IronPDF 亦可將網址轉換為 PDF,或在列印前將 HTML 檔案渲染為 PDF

支援的輸入來源

除了 PDF 檔案外,IronPDF 還能從圖片、HTML 字串及即時網址生成可列印的文件。 這在原始資料尚未轉為 PDF 的列印工作流程中相當實用——例如,先將包含圖表的報表範本渲染為 PDF,再傳送至印表機。


如何使用預設設定列印 PDF?

Python 腳本呼叫 pdf.Print(),其產生的列印工作可見於 Windows 列印佇列中

A Python script using IronPDF's `Print()` method sends a PDF job to the system default printer.

Print() 方法會使用預設的頁面設定,將文件傳送至系統的預設印表機。 無需進行額外設定。

from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"

# Load the PDF
pdf = PdfDocument.FromFile("invoice.pdf")

# Print to default printer with default settings
pdf.Print()
from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"

# Load the PDF
pdf = PdfDocument.FromFile("invoice.pdf")

# Print to default printer with default settings
pdf.Print()
PYTHON

預設設定會使用系統設定的預設印表機、列印所有頁面、套用印表機本身的預設紙張尺寸與方向,並輸出一份副本。 若使用者的印表機設定已符合文件要求,這將是適用於簡單工作流程的理想選擇。

在實際程式碼中,請將PRINT呼叫包覆於錯誤處理程序中,以擷取印表機離線或權限錯誤:

from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"

try:
    pdf = PdfDocument.FromFile("invoice.pdf")
    pdf.Print()
except Exception as e:
    print(f"Print job failed: {e}")
from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"

try:
    pdf = PdfDocument.FromFile("invoice.pdf")
    pdf.Print()
except Exception as e:
    print(f"Print job failed: {e}")
PYTHON

此例外訊息提供有關列印失敗的作業系統層級詳細資訊——例如,印表機是否離線、列印排程器是否暫停,或是文件渲染失敗。


如何在列印前自訂列印設定?

IronPDF Python GetPrintDocument() 範例,展示在 Python 腳本中設定的 PrinterSettings 屬性,包括 PrinterName、FromPage、ToPage 及 Copies

IronPDF's `GetPrintDocument()` method returns a PrintDocument object with full access to PrinterSettings properties.

GetPrintDocument() 會傳回一個 PrintDocument 物件,該物件提供完整的 PrinterSettings API。 這讓您能在傳送列印工作前,選取指定印表機、設定頁碼範圍、控制複印份數與排序方式,並設定雙面列印模式。

from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"

pdf = PdfDocument.FromFile("quarterly-report.pdf")

# Access the PrintDocument object
printer_setting = pdf.GetPrintDocument()

# Select a specific printer by name
printer_setting.PrinterSettings.PrinterName = "HP LaserJet Pro"

# Print only pages 2 through 4
printer_setting.PrinterSettings.FromPage = 2
printer_setting.PrinterSettings.ToPage = 4

# Print 2 collated copies
printer_setting.PrinterSettings.Copies = 2
printer_setting.PrinterSettings.Collate = True

# Execute the print job
printer_setting.Print()
from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"

pdf = PdfDocument.FromFile("quarterly-report.pdf")

# Access the PrintDocument object
printer_setting = pdf.GetPrintDocument()

# Select a specific printer by name
printer_setting.PrinterSettings.PrinterName = "HP LaserJet Pro"

# Print only pages 2 through 4
printer_setting.PrinterSettings.FromPage = 2
printer_setting.PrinterSettings.ToPage = 4

# Print 2 collated copies
printer_setting.PrinterSettings.Copies = 2
printer_setting.PrinterSettings.Collate = True

# Execute the print job
printer_setting.Print()
PYTHON

PrinterSettings.PrinterName 屬性接受印表機在作業系統印表機清單中顯示的名稱。在 Windows 系統中,此名稱與"裝置和印表機"中顯示的名稱相符。 在 Linux 系統中,這對應於 CUPS 印表機名稱。 若設定無效的印表機名稱,將導致印表工作在執行時失敗,因此在建置使用者介面的印表對話方塊時,請務必根據已安裝的印表機清單驗證名稱。

提示若要在 Windows 上列出可用的印表機名稱,請在 PowerShell 中使用 [System.Drawing.Printing.PrinterSettings]::InstalledPrinters,或使用 pywin32 中的 Python win32print 模組,透過程式化方式枚舉印表機。

選取頁面與管理副本

FromPageToPage 屬性定義了一個包含性的頁面範圍。 頁碼編號從 1 開始。設定 FromPage = 1ToPage = 0(預設值)將列印所有頁面。 Copies 屬性接受一個整數; 結合 Collate = True,印表機會在開始列印下一份副本之前,先將文件組裝成完整的一套 —— 這是多頁報表的正確運作方式。

批次列印多個 PDF 檔案

對於需要列印文件佇列的工作流程,請遍歷檔案清單,並針對每個檔案呼叫 Print()

from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"

def batch_print(file_paths):
    for path in file_paths:
        try:
            pdf = PdfDocument.FromFile(path)
            pdf.Print()
        except Exception as e:
            print(f"Failed to print {path}: {e}")

batch_print(["invoice_001.pdf", "invoice_002.pdf", "shipping_label.pdf"])
from ironpdf import *

License.LicenseKey = "YOUR-LICENSE-KEY"

def batch_print(file_paths):
    for path in file_paths:
        try:
            pdf = PdfDocument.FromFile(path)
            pdf.Print()
        except Exception as e:
            print(f"Failed to print {path}: {e}")

batch_print(["invoice_001.pdf", "invoice_002.pdf", "shipping_label.pdf"])
PYTHON

針對大量批次工作,建議採用非同步列印,以避免在每個工作進行排程時阻塞主執行緒。


Python PDF 列印的下一步是什麼?

本指南涵蓋了 IronPDF for Python 中的兩種核心列印模式:使用 pdf.Print() 的預設印表機輸出,以及使用 pdf.GetPrintDocument() 的自訂設定輸出。 這兩種解決方案皆可在 Windows、Linux 和 macOS 上運行,且不含任何平台專屬程式碼。

若要在生產環境的應用程式中擴展這些模式,請考慮:

Start with a free trial license to test printing in your environment. 生產環境部署的授權方案起價為 $999。

下載本指南中使用的完整原始碼。

常見問題

在 Python 中,最快速列印 PDF 檔案的方法是什麼?

最快速的方法是使用 IronPDF 的 Print() 方法。安裝後(執行 pip install ironpdf),透過 PdfDocument.FromFile('yourfile.pdf') 載入 PDF 檔案,並呼叫 pdf.Print(),即可立即使用預設頁面設定將檔案傳送至預設印表機。

在 Python 中列印 PDF 時,該如何選取特定的印表機?

請使用 GetPrintDocument() 存取 PrintDocument 物件,然後將 printer_setting.PrinterSettings.PrinterName 設定為目標印表機在作業系統印表機清單中顯示的名稱。在 Windows 系統中,此名稱與「裝置和印表機」中的名稱一致;在 Linux 系統中,則是 CUPS 印表機名稱。

如何在 Python 中僅列印 PDF 檔案的特定頁面?

呼叫 pdf.GetPrintDocument() 取得 PrintDocument 物件,接著將 printer_setting.PrinterSettings.FromPageprinter_setting.PrinterSettings.ToPage 分別設定為起始頁碼和結束頁碼(以 1 為起始)。呼叫 printer_setting.Print() 即可根據這些設定執行列印。

IronPDF for Python 是否支援 Linux 和 macOS?

是的。IronPDF for Python 支援 Windows、Linux 及 macOS 系統。相同的 Python 程式碼無需進行平台專屬修改即可執行。在 Linux 系統上,印表機選取功能採用 CUPS 印表機名稱。所有平台皆需安裝 Python 3.6 或更新版本。

使用 IronPDF 的列印功能是否需要授權金鑰?

正式部署需使用授權金鑰。請在呼叫任何其他 IronPDF 函式之前,透過 License.LicenseKey = '您的授權金鑰' 設定金鑰。開發階段中,該函式庫可無需金鑰運行,但產出的文件會帶有試用版浮水印。提供免費試用授權供評估使用。

如何使用 Python 批次列印多個 PDF 檔案?

遍歷檔案路徑清單,針對每個檔案呼叫 PdfDocument.FromFile(path)pdf.PRINT()。將每次迭代包裹在 try-except 區塊中,以便擷取單一檔案的錯誤,同時不阻斷整個批次處理。對於大量處理任務,建議採用非同步執行以避免阻塞主執行緒。

Curtis Chau
技術撰稿人

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

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

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

還在往下捲動嗎?

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