如何在 C# 中使用对话框进行打印

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

IronPrint 提供 Printer.ShowPrintDialog():一个方法,该方法会打开操作系统的原生打印对话框,捕获用户的打印机和纸张选择,并将文档发送到打印队列。 安装一个NuGet包并写一行代码。

打印对话框是标准的操作系统窗口,允许用户在打印前选择打印机、设置副本、选择页面范围和调整纸张选项。 需要在每个作业前给予用户控制权的桌面应用程序是主要的使用案例。

快速入门:使用对话框进行打印

  1. 使用 NuGet 包管理器安装 https://www.nuget.org/packages/IronPrint

    PM > Install-Package IronPrint
  2. 复制并运行这段代码。

    using IronPrint;
    
    // Display the print dialog and print the document
    Printer.ShowPrintDialog("document.pdf");
  3. 部署到您的生产环境中进行测试

    通过免费试用立即在您的项目中开始使用IronPrint

    arrow pointer

C# 中的打印对话框如何工作?

Printer.ShowPrintDialog() 方法将打开操作系统的原生打印对话框。 用户可以看到完整的打印选项:打印机选择、拷贝数量、页面范围、方向和纸张大小。他们可以点击"打印"发送作业,或者点击"取消"来关闭对话框而不打印。

在底层实现中,原生 .NET 方法需要创建一个 System.Windows.Forms.PrintDialog 实例,将其连接到 PrintDocument,处理 PrintPage 事件以将内容绘制到 PRINT 图形表面,检查 DialogResult,然后调用 PrintDocument.Print()。 该配置通常需要 15 至 25 行代码。 其本身也不包括内置PDF或图像渲染(通过本地对话框打印PDF意味着首先需要解析PDF为可绘制页面,这需要另一个库)。

IronPrint 通过一次调用即可处理整个流程:

输入

传递给 ShowPrintDialog 的 quarterly-report.PDF 是一份格式规范的企业第三季度财务摘要,包含 KPI 指标卡和部门收入表,代表了发送至 PRINT 对话框的典型商业文档。

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-show-print-dialog-open-and-print.cs
using IronPrint;

// Open the print dialog and print
Printer.ShowPrintDialog("quarterly-report.pdf");
Imports IronPrint

' Open the print dialog and print
Printer.ShowPrintDialog("quarterly-report.pdf")
$vbLabelText   $csharpLabel

输出

通过ShowPrintDialog打开的本地打印对话框

通过ShowPrintDialog为季度报告打开的本地打印对话框。

该方法接受文件路径作为 string,或原始文件数据作为 byte[]。 IronPrint 会检测文档格式,通过相应的引擎进行渲染,并显示对话框。 用户确认后,文档将按其选择的设置进行打印。 打印文档教程将更详细地介绍完整的打印生命周期。

如何预配置对话框设置?

我们可以通过创建一个 PrintSettings 对象并将其作为第二个参数传递,在对话框打开前设置默认值。 对话框打开时将预先选中这些值,用户可以直接接受,也可以覆盖任何设置。

输入

预加载为A4纵向设置的invoice.pdf,300 DPI:一个带有明细项、折扣、税费和电汇说明的专业账单发票,显示一个应用程序已经知道所需纸张大小和方向的实际文档。

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-preconfigure-dialog-settings.cs
using IronPrint;

// Pre-configure default dialog settings
var settings = new PrintSettings
{
    PrinterName = "HP LaserJet Pro",
    PaperSize = PaperSize.A4,
    PaperOrientation = PaperOrientation.Portrait,
    Dpi = 300,
    NumberOfCopies = 2,
    Grayscale = false
};

// Open the dialog with pre-filled settings
Printer.ShowPrintDialog("invoice.pdf", settings);
Imports IronPrint

' Pre-configure default dialog settings
Dim settings As New PrintSettings With {
    .PrinterName = "HP LaserJet Pro",
    .PaperSize = PaperSize.A4,
    .PaperOrientation = PaperOrientation.Portrait,
    .Dpi = 300,
    .NumberOfCopies = 2,
    .Grayscale = False
}

' Open the dialog with pre-filled settings
Printer.ShowPrintDialog("invoice.pdf", settings)
$vbLabelText   $csharpLabel

输出

带有预配置设置的Windows打印对话框

以预配置A4纵向设置打开的本地打印对话框。

当应用程序能预先知晓可能使用的打印机或纸张规格时,此功能非常有用。 例如,一个始终使用特定热敏打印机打印收据的销售点系统,可以默认 PrinterName 设置为该设备。用户仍可在对话框中选择更改该设置。

要查询系统中可用的打印机,我们调用 Printer.GetPrinterNames(),该方法将返回一个包含所有已安装打印机的 List<string>。 同样地,Printer.GetPrinterTrays() 会返回指定打印机可用的纸盒。

可配置属性的完整列表包括 Flatten(用于 PDF 表单字段)以及 Tray打印设置指南通过代码示例详细介绍了每个属性。 PrintSettings 中未设置的任何属性将默认采用所选打印机的标准配置。

如何异步显示对话框?

Printer.ShowPrintDialogAsync() 方法返回 Task,使其与 await 兼容。 这可以防止对话框阻塞UI线程,这对于WPF、MAUI和任何冻结界面会带来不良用户体验的应用程序至关重要。

输入

report.pdf异步等待:一个多部分的IT基础设施和安全报告,代表一种长篇文档,在文件加载时,非阻塞对话框展示保持界面响应。

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-show-print-dialog-async.cs
using IronPrint;

// Open the print dialog asynchronously
await Printer.ShowPrintDialogAsync("report.pdf");
Imports IronPrint

' Open the print dialog asynchronously
Await Printer.ShowPrintDialogAsync("report.pdf")
$vbLabelText   $csharpLabel

输出

通过ShowPrintDialogAsync打开的异步打印对话框

通过ShowPrintDialogAsync异步打开的本地打印对话框,控制台确认非阻塞执行。

ShowPrintDialogAsync() 接受与同步版本相同的参数:文件路径或字节数组,以及一个可选的 PrintSettings 对象。 异步模式遵循现代 .NET 开发中通用的基于 Task 的异步模式

IronPrint 支持 WinForms、WPF、MAUI 及控制台应用程序。 对话框的外观会根据宿主平台和操作系统版本进行适配,因此用户始终能看到其预期的原生打印窗口。

何时应使用对话框打印,何时应使用静默打印?

当用户需要在每个作业前选择打印机设置时使用对话框; 在不需要人为决策的自动化工作流程中使用静默打印。

翻译标准 带对话框的打印 无声印刷
用户交互 用户选择打印机、复印、页码范围 无需交互; prints immediately
最适合 桌面应用、单次打印、面向用户的功能 批处理作业、后台服务、自助终端应用
打印机选择 用户通过对话框进行选择 通过 PrintSettings 进行程序化设置
IronPrint 方法 Printer.ShowPrintDialog() Printer.Print()
异步版本 ShowPrintDialogAsync() PrintAsync()

报告导出、发票打印以及任何错误打印机会浪费材料的作业都是对话框的理想人选。 静默打印适合不需要人为决策的自动化工作流程。

打印对话框支持哪些文件格式?

Printer.ShowPrintDialog() 支持与静默打印相同的格式:PDF、PNG、TIFF、JPEG、GIF、HTML 和 BMP。无论文件格式如何,我们都会传递文件路径,而 IronPrint 负责处理渲染和与打印队列的通信。 也接受以 byte[] 格式存储的数据,这在文档于内存中生成或从数据库检索时尤为有用。

输入

monthly-report.PDF 被读取为 byte[],表示从数据库中检索或在内存中生成后发送至对话框的文档。

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-print-dialog-image-and-byte-array.cs
using IronPrint;

// Print an image with the dialog
Printer.ShowPrintDialog("product-photo.png");

// Print from a byte array
byte[] reportData = File.ReadAllBytes("monthly-report.pdf");
Printer.ShowPrintDialog(reportData);
Imports IronPrint

' Print an image with the dialog
Printer.ShowPrintDialog("product-photo.png")

' Print from a byte array
Dim reportData As Byte() = File.ReadAllBytes("monthly-report.pdf")
Printer.ShowPrintDialog(reportData)
$vbLabelText   $csharpLabel

输出

对话框像上面的例子中一样打开。 格式检测是自动进行的:无论我们传入文件路径还是 byte[],IronPrint 都会渲染文档并显示相同的原生对话框。

代码示例页面展示了更多特定于不同格式的应用场景。 对于特定于PDF的工作流程(生成PDF并立即打印),IronPDF与IronPrint自然而然地配合使用。

下一步

使用对话框进行PRINT主要有两种方法:Printer.ShowPrintDialog() 用于同步调用,Printer.ShowPrintDialogAsync() 用于非阻塞执行。 使用 PrintSettings 预设默认值,并允许用户在此基础上进行调整。 这两种方法均支持 IronPrint 的所有文档格式,并适用于 WinForms、WPF、MAUI 和控制台项目。

请查阅 IronPrint 教程以获取完整操作指南,查阅 Printer 类 API 参考以了解所有可用方法,或查阅打印设置指南以进行高级配置。 更新日志记录了最近的改进和新功能。

开始免费30天试用在实时项目中测试对话框打印,无需信用卡。 准备发布时,请查看起始于 $999 的许可选项

常见问题解答

IronPrint 的主要功能是什么?

IronPrint 允许开发人员在 C# 应用程序中显示和配置打印对话框,轻松打印具有预配置设置的 PDF 和图像。

如何使用 IronPrint 显示打印对话框?

您可以通过使用 IronPrint 的 ShowPrintDialog() 方法在您的 C# 应用程序中显示打印对话框,它提供了一种交互配置打印设置的方式。

IronPrint 支持异步打印吗?

是的,IronPrint 支持异步打印,这允许您的应用程序在处理打印任务时保持响应。

我可以使用 IronPrint 预配置打印设置吗?

是的,IronPrint 允许您在显示打印对话框之前预配置打印设置,例如纸张尺寸、方向和打印机选择。

可以使用 IronPrint 打印图像吗?

IronPrint 支持打印 PDF 和图像,为您的 C# 应用程序中不同的文档类型提供了灵活性。

IronPrint 如何增强 C# 的打印对话框体验?

IronPrint 通过允许开发人员轻松自定义和配置打印设置,同时支持同步和异步操作,提升了打印对话框的体验。

我可以使用 IronPrint 打印哪种类型的文档?

使用 IronPrint,您可以直接从您的 C# 应用程序中打印各种文档,包括 PDF 和图像。

IronPrint 可以集成到现有的 C# 应用程序中吗?

是的,IronPrint 设计易于集成到现有的 C# 应用程序中,提供了一种简单的方法来添加打印对话框功能。

IronPrint 为 C# 开发者提供了哪些优势?

IronPrint 提供了如易于集成、可定制的打印设置、支持异步打印以及打印 PDF 和图像的能力等优势。

IronPrint 如何处理不同的打印机配置?

IronPrint 允许您配置不同的打印机设置,确保与各种打印机的兼容性,并能根据特定打印需求进行自定义。

Curtis Chau
技术作家

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

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

准备开始了吗?
Nuget 下载 41,154 | 版本: 2026.5 just released
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPrint
运行示例 观看您的文档打到打印机上。