跳至页脚内容
使用 IRONPRINT

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

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

完成本教程后,您将掌握如何静默打印、显示 Windows 打印对话框、应用 DPI 和纸张方向等自定义设置、枚举可用打印机,以及优雅地处理异常。

如何在 VB.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"
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。它为每个平台都提供了原生渲染引擎,因此您无需安装 Adobe Acrobat、Ghostscript 或任何其他 PDF 渲染器。 同一个 NuGet 包适用于使用 VB.NET 编写的 Windows Forms、WPF、控制台应用程序以及 ASP.NET 项目。

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

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

如何在 VB.NET 中静默 PRINT 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
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 打印设置文档

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

有时,您需要让用户在提交打印任务前选择打印机、调整页码范围或设置复印份数。 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
Imports IronPrint

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

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

此方法可自然地集成到 Windows Forms 应用程序中。 您可以在按钮点击处理程序中调用它,并确信该对话框的行为将与用户已熟悉的其他 Windows 应用程序保持一致。

使用 IronPrint 在不打开 Adobe 的情况下通过 VB.NET 打印 PDF:图 1 - 打印对话框

打印对话示例页面展示了更多使用场景,包括在对话框打开前预先选择打印机或预设复印份数。

如何在 VB.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
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

理解关键的 PrintSettings 属性

Dpi 属性控制输出分辨率。 Professional文档的标准字数为 300 字; 600 适合用于高质量图形或工程图纸。 较低的数值(如 150)适用于草稿打印,此时速度比质量更为重要。

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

PaperOrientation 接受 PaperOrientation.PortraitPaperOrientation.Landscape。 若为横向设计的 PDF 文件选择了错误的纵向方向,会导致内容被裁剪或缩小。 明确设定此格式可确保输出内容与文档设计保持一致。

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

选择正确的打印机名称

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

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

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

在Enterprise环境中,工作站通常可以访问数十台网络打印机。 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
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)以及通过第三方软件安装的任何打印机驱动程序。

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

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

使用 IronPrint 在不打开 Adobe 的情况下通过 VB.NET 打印 PDF:图 2 - 打印机选择

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

如何处理 VB.NET 中的 PRINT 错误?

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

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
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

常见错误及修正方法

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

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

使用 IronPrint 在不打开 Adobe 的情况下通过 VB.NET 打印 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 文件

要了解如何在.NET中从 HTML 生成 PDF,请访问IronPDF for .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 小时在线。
聊天
电子邮件
打电话给我