跳至页脚内容
使用 IRONPRINT

如何在不使用 Adob​​e 的情况下,使用IronPrint在.NET中打印 PDF

在.NET中打印 PDF 文档需要一个库来处理渲染、打印机通信和设置管理,而无需强制您安装 Adob​​e Reader 或其他第三方依赖项。 IronPrint通过简洁的 API 解决了这个问题,该 API 可在 Windows、macOS、Linux 和移动平台上运行。 本指南将引导您完成从安装软件包到处理常见打印错误的每一步,以便您可以快速自信地将 PDF 打印功能添加到您的 VB .NET应用程序中。

在本教程结束时,您将知道如何静默打印、显示 Windows 打印对话框、应用自定义设置(例如 DPI 和纸张方向)、枚举可用打印机以及如何优雅地处理异常情况。

如何在.NET项目中安装IronPrint ?

通过NuGet包管理器安装IronPrint只需几秒钟。 在 Visual Studio 中打开包管理器控制台并运行:

Install-Package IronPrint

安装完成后,在任何需要打印的文件顶部添加命名空间导入语句,然后在调用任何IronPrint方法之前应用您的许可证密钥:

Imports IronPrint

' Apply your license key (get a free trial key at ironsoftware.com)
License.LicenseKey = "YOUR-LICENSE-KEY"
Imports IronPrint

' Apply your license key (get a free trial key at ironsoftware.com)
License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

IronPrint 的目标平台为.NET Framework 4.6.2 及以上版本,以及.NET 6、7、8、9 和 10。它为每个平台都配备了原生渲染引擎,因此您无需安装 Adob​​e Acrobat、Ghostscript 或任何其他 PDF 渲染器。 同一个NuGet包适用于用.NET编写的 Windows Forms、WPF、控制台应用程序和ASP.NET项目。

支持的文档格式包括 PDF、PNG、HTML、TIFF、GIF、JPEG 和 BMP。您可以在IronPrint统一打印 API 参考文档中了解其全部功能。

有关许可和激活的更多信息,请访问IronPrint许可证密钥文档

如何在.NET中静默打印PDF?

静默打印是指直接将文档发送到打印机,而不显示任何对话框。 此模式对于自动化工作流程、批量发票处理、报表生成管道以及没有用户在场的服务器端文档打印至关重要。

根据微软关于.NET中 GDI+ 打印的文档,传统的.NET打印涉及创建一个 PrintDocument 对象,挂钩到 PrintPage 事件,并手动处理页面布局。 IronPrint省去了所有这些样板代码:

Imports IronPrint

Module SilentPrinting
    Sub Main()
        Dim pdfPath As String = "invoice.pdf"

        ' Print to the system default printer
        Printer.Print(pdfPath)

        ' Print to a specific printer by name
        Dim settings As New PrintSettings()
        settings.PrinterName = "Microsoft Print to PDF"
        Printer.Print(pdfPath, settings)
    End Sub
End Module
Imports IronPrint

Module SilentPrinting
    Sub Main()
        Dim pdfPath As String = "invoice.pdf"

        ' Print to the system default printer
        Printer.Print(pdfPath)

        ' Print to a specific printer by name
        Dim settings As New PrintSettings()
        settings.PrinterName = "Microsoft Print to PDF"
        Printer.Print(pdfPath, settings)
    End Sub
End Module
$vbLabelText   $csharpLabel

Printer.Print 方法在内部处理所有 PDF 渲染。 当您调用 Printer.Print(pdfPath) 而不带 PrintSettings 参数时, IronPrint会自动选择系统默认打印机。 当您提供一个带有 PrintSettings 值的 PrinterName 对象时,它会将作业路由到该特定设备。

对于批量处理场景,您可以遍历文件路径列表,并对每个文件调用 Printer.Print。 由于IronPrint不会为静默打印打开任何 UI 线程,因此它在控制台应用程序、Windows 服务和ASP.NET请求处理程序中都能正常工作。

要深入了解可用选项,请阅读IronPrint打印设置文档

如何在打印前显示打印对话框?

有时,在执行打印作业之前,需要让用户选择打印机、调整页面范围或设置份数。 IronPrint为这种情况提供了 Printer.ShowPrintDialog

Imports IronPrint

Module DialogPrinting
    Sub Main()
        ' Display the standard Windows print dialog
        Printer.ShowPrintDialog("report.pdf")
    End Sub
End Module
Imports IronPrint

Module DialogPrinting
    Sub Main()
        ' Display the standard Windows print dialog
        Printer.ShowPrintDialog("report.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

运行此方法时,Windows 将显示其标准打印对话框。 用户可以选择任何已安装的打印机,选择页面范围,选择份数,并调整双面打印设置。 用户点击"打印"或"取消"后,控制权将返回到您的代码。

这种方法可以自然地集成到 Windows Forms 应用程序中。 你可以从按钮点击处理程序中调用它,并相信该对话框的行为将与用户已知的其他 Windows 应用程序的行为保持一致。

 .NET使用IronPrint无需打开 Adob​​e 即可打印 PDF:图像 1 - 打印对话框

打印对话框示例页面显示了其他使用案例,包括在对话框打开之前预先选择打印机或预先填充份数。

如何在.NET中自定义PDF打印设置?

PrintSettings 类使您可以完全通过编程方式控制打印作业的各个方面。 您可以在作业到达打印队列之前设置 DPI、纸张尺寸、方向、份数和目标打印机:

Imports IronPrint

Module CustomPrintSettings
    Sub Main()
        Dim settings As New PrintSettings() With {
            .Dpi = 300,
            .NumberOfCopies = 2,
            .PaperOrientation = PaperOrientation.Landscape,
            .PaperSize = PaperSize.A4,
            .PrinterName = "Office Printer"
        }

        Printer.Print("document.pdf", settings)
    End Sub
End Module
Imports IronPrint

Module CustomPrintSettings
    Sub Main()
        Dim settings As New PrintSettings() With {
            .Dpi = 300,
            .NumberOfCopies = 2,
            .PaperOrientation = PaperOrientation.Landscape,
            .PaperSize = PaperSize.A4,
            .PrinterName = "Office Printer"
        }

        Printer.Print("document.pdf", settings)
    End Sub
End Module
$vbLabelText   $csharpLabel

了解关键打印设置属性

Dpi 属性控制输出分辨率。 专业文件的标准值为 300; 600 适用于高质量图形或工程图纸。 对于草稿打印来说,速度比质量更重要,因此可以使用较低的值,例如 150。

NumberOfCopies 告诉打印机一次作业要打印多少份。 将此值设置为 3 相当于用户按下 Ctrl+P 并在副本字段中输入 3——但您可以通过代码控制它,而无需任何 UI 交互。

PaperOrientation 接受 PaperOrientation.PortraitPaperOrientation.Landscape。 如果将横向设计的 PDF 文件选择错误的方向,会导致内容被裁剪或缩小。 明确设置此项可确保输出与文档设计一致。

PaperSize 接受标准尺寸,例如 PaperSize.LetterPaperSize.Legal。 当您的打印环境混合使用装有不同尺寸纸张的纸盒时,这一点尤为重要。

选择正确的打印机名称

PrinterName 字符串必须与打印机在 Windows 中注册的名称完全匹配,包括大小写和空格。 使用 Printer.GetPrinterNames()(将在下一节中介绍)在运行时检索有效名称列表。

如需更多高级自定义选项,请访问高级打印自定义功能页面

如何通过编程方式枚举和选择打印机?

在企业环境中,工作站通常可以访问数十台网络打印机。 IronPrint可以轻松列出所有可用打印机,并在运行时选择正确的打印机:

Imports IronPrint

Module PrinterManagement
    Sub Main()
        ' Retrieve all available printers
        Dim printers As List(Of String) = Printer.GetPrinterNames()

        Console.WriteLine($"Found {printers.Count} printer(s):")
        For Each printerName As String In printers
            Console.WriteLine($"  - {printerName}")
        Next

        ' Print to the first available printer
        If printers.Count > 0 Then
            Dim settings As New PrintSettings()
            settings.PrinterName = printers(0)
            Printer.Print("document.pdf", settings)
        Else
            Console.WriteLine("No printers found. Check system configuration.")
        End If
    End Sub
End Module
Imports IronPrint

Module PrinterManagement
    Sub Main()
        ' Retrieve all available printers
        Dim printers As List(Of String) = Printer.GetPrinterNames()

        Console.WriteLine($"Found {printers.Count} printer(s):")
        For Each printerName As String In printers
            Console.WriteLine($"  - {printerName}")
        Next

        ' Print to the first available printer
        If printers.Count > 0 Then
            Dim settings As New PrintSettings()
            settings.PrinterName = printers(0)
            Printer.Print("document.pdf", settings)
        Else
            Console.WriteLine("No printers found. Check system configuration.")
        End If
    End Sub
End Module
$vbLabelText   $csharpLabel

Printer.GetPrinterNames() 查询 Windows 打印子系统,并返回当前用户可以访问的所有打印机,包括本地 USB 打印机、网络打印机、虚拟打印机(如 Microsoft Print to PDF)以及通过第三方软件安装的任何打印机驱动程序。

将文档路由到正确的打印机

在多打印机配置中,您可能希望将大型文档发送到高速部门打印机,而将小型文档发送到附近的桌面设备。您可以通过检查文档的页数或文件大小,然后从列表中选择相应的打印机名称来实现此逻辑。

 .NET使用IronPrint无需打开 Adob​​e 即可打印 PDF:图 2 - 打印机选择

阅读打印机信息功能文档,了解您可以查询的其他属性,例如打印机状态和默认纸盒。

如何在.NET中处理打印错误?

生产打印代码必须能够优雅地处理故障。 文件路径可能错误,打印机可能处于脱机状态,或者用户帐户可能缺少打印权限。 将打印调用封装在结构化的异常处理中,可以防止未处理的异常导致应用程序崩溃:

Imports IronPrint
Imports System.IO

Module 错误Handling
    Sub Main()
        Dim filePath As String = "document.pdf"

        If Not File.Exists(filePath) Then
            Console.WriteLine("PDF file not found. Verify the path and try again.")
            Return
        End If

        Try
            Dim settings As New PrintSettings()
            settings.PrinterName = "Office Printer"
            Printer.Print(filePath, settings)
            Console.WriteLine("Print job sent successfully.")
        Catch ex As Exception
            Console.WriteLine($"Printing failed: {ex.Message}")
        End Try
    End Sub
End Module
Imports IronPrint
Imports System.IO

Module 错误Handling
    Sub Main()
        Dim filePath As String = "document.pdf"

        If Not File.Exists(filePath) Then
            Console.WriteLine("PDF file not found. Verify the path and try again.")
            Return
        End If

        Try
            Dim settings As New PrintSettings()
            settings.PrinterName = "Office Printer"
            Printer.Print(filePath, settings)
            Console.WriteLine("Print job sent successfully.")
        Catch ex As Exception
            Console.WriteLine($"Printing failed: {ex.Message}")
        End Try
    End Sub
End Module
$vbLabelText   $csharpLabel

常见错误及解决方法

下表列出了最常见的印刷错误及其解决方法:

.NET PDF 打印常见错误及解决方案
错误 原因 解决方案
未找到打印机 打印机名称与 Windows 注册表项不匹配 调用`Printer.GetPrinterNames()`并使用返回的确切名称
打印空白页 文件路径无效或PDF文件已损坏。 使用`File.Exists`验证路径;在查看器中打开 PDF 文件以检查完整性
打印质量差 DPI设置过低 将`PrintSettings.Dpi`设置为 300 或更高
拒绝访问 打印权限不足 使用对目标打印机具有打印权限的用户帐户运行该应用程序。
打印机离线 网络或设备连接问题 请检查Windows设备和打印机中的打印机状态;重新连接后重试。

 .NET使用IronPrint无需打开 Adob​​e 即可打印 PDF:图像 3 - 示例错误

如需更多故障排除指导,请参阅IronPrint工程请求和故障排除指南或联系Iron Software技术支持

如何在.NET中将PDF生成和打印结合起来?

常见的工作流程是在运行时生成 PDF 文件并立即打印——例如,一步到位地从数据库记录创建发票并将其发送到打印机。IronPDF 负责生成 PDFIronPDF,而IronPrint负责输出:

为什么要将IronPDF和IronPrint结合使用?

IronPDF可以将 HTML、ASPX 和现有文档转换为格式正确的 PDF 文件。 PDF 文件一旦加载到内存或保存到磁盘, IronPrint即可将其发送到打印机,而无需 Adob​​e Reader。 这两个库都采用相同的基于 NuGet 的部署模型,因此您只需添加两个包,然后编写简单的 VB .NET代码即可完成整个生成和打印管道。

这种方法尤其适用于:

-发票和收据打印——从 HTML 模板生成 PDF 文件,立即打印 -报表生成——将数据库查询结果转换为格式化的PDF文件,按需打印 标签和条形码打印——结合IronBarcode生成条形码和IronPrint输出条形码 -批量文档处理——循环遍历记录,为每条记录生成一个 PDF 文件,并按顺序打印每个 PDF 文件

要了解如何在 VB .NET中从 HTML 生成 PDF,请访问IronPDF for VB .NET文档

根据W3C 的印刷媒体查询规范,通过 CSS 规则控制印刷布局是 HTML 到印刷工作流程的标准方法。 IronPDF在渲染过程中会遵循这些 CSS 规则,因此在IronPrint将 PDF 发送到打印机之前,生成的 PDF 将具有正确的边距、分页符和大小。

如何打印多页并控制页面范围?

打印大型文档时,您可能只需要打印特定页面——例如,50 页报告中的第 1 至 5 页。 IronPrint 的 PrintSettings 类支持页面范围配置:

配置页面范围

您可以在 PrintSettings 对象中指定起始页和结束页。 页码从 1 开始,符合用户在标准打印对话框中所期望的惯例。 如果省略页码范围, IronPrint将打印整个文档。

页面范围打印在打印量大的环境中尤其有用,因为重印单个损坏的页面比重印整个文档要快得多。 结合 NumberOfCopies,您可以精确控制哪些页面的复印份数到达出纸托盘。

有关 PrintSettings 属性(包括页面范围)的完整列表,请访问IronPrint打印设置操作指南

灰度打印

有些打印机即使文档不包含任何颜色内容,也会默认输出彩色文档,造成墨粉或墨水浪费。 您可以通过 PrintSettings 强制输出灰度图像。 此设置在 Windows 和 macOS 目标系统上均可用,并且适用于所有支持的文档格式,而不仅仅是 PDF。

IronPrint功能概述列出了所有可用的打印设置,并为每个平台提供了示例。

下一步计划是什么?

现在您已经掌握了在.NET应用程序中进行PDF打印的基本要素:

-静默打印-- Printer.Print(path) 用于自动化工作流程 -对话框打印-- Printer.ShowPrintDialog(path) 用于用户控制的作业 -自定义设置-- PrintSettings 用于 DPI、方向、份数和打印机选择 -打印机枚举-- Printer.GetPrinterNames() 用于动态打印机路由 -错误处理——结构化的异常处理,并带有预检文件验证 -组合工作流程IronPDF用于生成, IronPrint用于输出

要体验这些功能,请开始您的IronPrint免费试用,并探索以下其他资源:

IronPrint入门指南——完整设置步骤 -带对话框的打印示例-- 对话框自定义模式 高级打印设置功能——完整设置参考 -打印机信息功能-- 查询打印机属性 IronPrint API 参考——完整的类和方法文档 IronPrint故障排除指南——解决常见问题

常见问题解答

什么是 IronPrint?

IronPrint是一个库,它简化了在.NET中打印 PDF 文档的过程,无需 Adob​​e Reader 和其他依赖项。

IronPrint如何在.NET中实现 PDF 打印?

IronPrint通过提供一种简单的方法,使.NET能够打印 PDF 文件,该方法可在包括 Windows、macOS 和移动设备在内的多个平台上运行。

我可以使用IronPrint进行静默打印吗?

是的, IronPrint支持静默打印,允许在不显示对话框或无需用户交互的情况下打印 PDF 文档。

IronPrint是否兼容移动平台?

是的, IronPrint旨在跨 Windows、macOS 和移动平台运行,为 PDF 打印应用提供灵活性。

IronPrint需要任何外部依赖吗?

不, IronPrint是一个无依赖项的解决方案,这意味着您不需要像 Adob​​e Reader 这样的额外软件即可在.NET中打印 PDF。

与传统的PDF打印方法相比, IronPrint有哪些优势?

IronPrint提供了一种简化且高效的 PDF 打印流程,无需复杂的变通方法和外部依赖项,从而更容易集成到.NET应用程序中。

我可以使用IronPrint自定义打印设置吗?

是的, IronPrint提供了通过 PrintSettings 类自定义打印设置的选项,允许开发人员控制 DPI、纸张方向、份数和打印机选择。

IronPrint如何改进 VB .NET应用程序中的 PDF 打印流程?

IronPrint改进了 PDF 打印流程,提供了一种简单易用的方法,无需额外软件即可在各种平台上进行打印。

IronPrint是否适合跨平台开发?

是的, IronPrint适合跨平台开发,因为它支持在 Windows、macOS、Linux 和移动平台上进行打印。

IronPrint为开发者提供哪些支持?

IronPrint通过详细的文档、代码示例和技术支持,为开发人员提供支持,确保流畅的开发体验。

Curtis Chau
技术作家

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

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

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我