如何使用 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. 使用默认设置打印: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,无需管理操作系统级别的打印队列交互、subprocess 命令或特定平台的打印工具。 这意味着相同的Python代码在Windows、Linux和macOS上都可以无需修改运行。

其关键功能是将HTML、CSS和JavaScript转换为PDF再进行打印——当源材料是Web模板或动态报告而不是现有文件时很有用。有关更多信息,请参阅HTML到PDF教程。 该库还支持在打印前合并PDF压缩PDF,以减少大型文档的后台传输时间。

为什么选择IronPDF进行Python PDF打印?

IronPDF提供了完整的打印API,而不是依赖于诸如Ghostscript或Adobe Reader命令行标记等外部工具。 该库内部处理文档渲染,这意味着打印输出与屏幕显示效果完全匹配。 与基于子进程的方法相比,其主要实际优势在于跨平台支持、对 PrinterSettings 的统一访问,以及无需依赖本地安装的 PDF 阅读器。

当要打印的内容尚不存在作为PDF时,该库也特别有用。 开发者可以从HTML模板创建PDF,添加页眉和页脚,应用带有自定义字体的页面布局,然后将结果直接发送到打印机——所有这些都可以在一个Python脚本中完成。 这使得IronPDF适用于从文档生成到打印管道,而不仅仅是用于打印现有文件。


如何安装IronPDF for Python?

IronPDF包在PyPI上可用,并且只需一个pip命令即可安装。

 pip install ironpdf

安装后,在脚本顶部添加导入语句:

from ironpdf import *
from ironpdf import *
PYTHON

IronPDF需要Python 3.6或更高版本。 该包在首次使用时自动下载IronPDF渲染引擎,因此初次导入可能需要一些时间。 对于限制出站访问的环境,请参阅IronPDF引擎配置指南以获取离线设置选项。

设置您的许可证密钥

生产环境使用需要许可证密钥。 在进行任何其他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 对象,该对象可用于 PRINT、操作或检查。

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 文件,无需任何额外的解密步骤。

对于来源于URL或HTML内容的PDF,IronPDF还可以将URL转换为PDF将HTML文件渲染为PDF后再进行打印。

支持的输入来源

除了PDF文件,IronPDF还可以从图像、HTML字符串和实时URL生成可打印的文档。 这在打印工作流中很有用,当源数据还不是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

默认设置使用系统配置的默认打印机,打印所有页面,应用打印机自身的默认纸张大小和方向,并发送一份副本。 这对于用户的打印机配置已经符合文档要求的简单工作流来说是正确的选择。

对于生产代码,将打印调用包装在错误处理中,以捕获打印机离线或权限错误:

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后,加载一个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 = 'YOUR-LICENSE-KEY'。在开发期间,库在没有密钥的情况下运行,但输出文档将带有试用水印。提供免费试用许可证以进行评估。

我如何在Python中批量打印多个PDF文件?

遍历文件路径列表,为每个文件调用PdfDocument.FromFile(path)pdf.Print()。将每次迭代包裹在try-except块中,以捕获每个文件的错误而不会停止整批。对于高容量作业,考虑异步执行以避免阻塞主线程。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
版本: 2026.5 just released
Still Scrolling Icon

还在滚动吗?

想快速获得证据?
运行示例看着你的HTML代码变成PDF文件。