如何使用 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.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()
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-print-pdf-1.py
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

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

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-print-pdf-3.py
from ironpdf import *
PYTHON

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

设置您的许可证密钥

生产环境使用需要许可证密钥。 在进行任何其他IronPDF调用之前设置:

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-print-pdf-4.py
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对象,准备打印、操作或检查。

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-print-pdf-5.py
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,然后再发送到打印机。


Icon Quote related to 支持的输入来源

我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。

Milan Jovanovic related to 支持的输入来源

Milan Jovanovic

微软MVP

查看案例研究
Icon Quote related to 支持的输入来源

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle related to 支持的输入来源

Brent Matzelle

首席技术官,OPYN

查看案例研究
Icon Quote related to 支持的输入来源

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones related to 支持的输入来源

David Jones

首席软件工程师,Agorus Build

查看案例研究

如何使用默认设置打印PDF?

Python脚本调用pdf.Print(),结果打印作业在Windows打印队列中可见

使用IronPDF的`Print()`方法的Python脚本将PDF作业发送到系统默认打印机。

Print()方法使用默认页面设置将文档发送到系统的默认打印机。 无需额外配置。

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-print-pdf-6.py
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

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

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

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-print-pdf-7.py
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() 显示PrinterSettings属性,包括在Python脚本中设置的PrinterName、FromPage、ToPage和Copies

IronPDF的`GetPrintDocument()`方法返回一个PrintDocument对象,具有对PrinterSettings属性的完全访问权限。

PrinterSettings API。 这允许在发送作业之前选择命名打印机、设置页面范围、控制副本和整理以及配置双面模式。

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-print-pdf-8.py
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打印机名称。 设置无效的打印机名称将导致打印作业在运行时失败,因此在构建面向用户的打印对话框时请根据已安装的打印机列表验证名称。

[System.Drawing.Printing.PrinterSettings]::InstalledPrinters,或使用pywin32的Python win32print模块以编程方式枚举打印机。

选择页面和管理副本

ToPage属性定义了包含的页面范围。 页码从1开始。设置ToPage = 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.GetPrintDocument()的自定义设置输出。 这两种方法在Windows、Linux和macOS上都可以工作,不需要特定的平台代码。

在生产应用程序中扩展这些模式时请考虑:

免费试用许可证开始,以在您的环境中测试打印。 许可选项从$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.6 刚刚发布
Still Scrolling Icon

还在滚动吗?

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