如何在C#中打印PDF文件

Chaknith related to 如何在C#中打印PDF文件
查克尼特·宾
2023年十月10日
更新 2025年一月6日
分享:
This article was translated from English: Does it need improvement?
Translated
View the article in English

通过 .NET C# 代码将 PDF 发送到打印机可实现打印过程自动化,使您能够将打印功能集成到应用程序中,减少人工操作,并确保 PDF 文件生产的一致性。 它提供了对打印过程的精确控制。

IronPDF支持通过一个方法调用快速编程打印到物理打印机,使您可以打印多个PDF文件。 打印机的分辨率也可以通过可配置的水平和垂直DPI来指定。 使用接受 Microsoft PrinterSettingsPrintController 的方法,以进一步控制 PDF 打印过程。


开始使用IronPDF

立即在您的项目中开始使用IronPDF,并享受免费试用。

第一步:
green arrow pointer


打印 PDF 文件示例

Print 方法可通过 PdfDocument 对象使用,允许您打印新创建和现有的 PDF 文件。 默认情况下,该方法使用系统的默认打印机,但您可以通过将打印机的名称作为字符串传递给Print方法来指定其他打印机。

请注意
所有打印功能仅支持 "Windows "操作系统。

:path=/static-assets/pdf/content-code-examples/how-to/print-pdf-print.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Test printing</h1>");

// Send the document to "Microsoft Print to PDF" printer
pdf.Print("Microsoft Print to PDF");
Imports IronPdf

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Test printing</h1>")

' Send the document to "Microsoft Print to PDF" printer
pdf.Print("Microsoft Print to PDF")
$vbLabelText   $csharpLabel
打印队列

打印机分辨率

您可以通过向Print方法提供所需的DPI值来指定打印PDF的分辨率,该值将同时应用于水平和垂直尺寸。 要使用不同的DPI值,请向方法传递两个参数:第一个参数用于水平(x)DPI,第二个参数用于垂直(y)DPI。

:path=/static-assets/pdf/content-code-examples/how-to/print-pdf-dpi.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Test printing</h1>");

// Set custom DPI
pdf.Print(300);

// Specify printing resolution
pdf.Print(10, 10, "Microsoft Print to PDF");
Imports IronPdf

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Test printing</h1>")

' Set custom DPI
pdf.Print(300)

' Specify printing resolution
pdf.Print(10, 10, "Microsoft Print to PDF")
$vbLabelText   $csharpLabel

让我们在下一个示例中看看如何栅格化和打印 PDF 文件。


打印到文件

PrintToFile 方法通过将 PDF 文档转换为位图(基于像素的)图像并将其保存为 PDF 文件来有效地光栅化 PDF 文档。此过程由 Windows 内置打印机(如“Microsoft Print to PDF”)处理。值得注意的是,此方法在不将 PDF 发送到物理打印机的情况下将其保存到磁盘。

:path=/static-assets/pdf/content-code-examples/how-to/print-pdf-print-to-file.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Test printing</h1>");

// Print to file
pdf.PrintToFile("");
Imports IronPdf

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Test printing</h1>")

' Print to file
pdf.PrintToFile("")
$vbLabelText   $csharpLabel

探索打印PDF文档设置

要自定义打印选项,请使用GetPrintDocument方法,该方法接受Microsoft PrinterSettingsPrintController对象。 此方法返回当前打印文档对象。 PrinterSettings允许您配置选项,如页面范围和打印机选择,而PrintController则可以控制打印过程,包括处理异常、进度报告、打印对话框、打印预览及其他相关任务。 代码示例下方提供了PrinterSettings选项的详细描述。

:path=/static-assets/pdf/content-code-examples/how-to/print-pdf-printer-setting.cs
using IronPdf;
using System.Drawing.Printing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Testing</h1>");

PrinterSettings settings = new PrinterSettings() {
    PrinterName = "Microsoft Print to PDF",

    // Number of Copy
    Copies = 2,

    // Page range to print
    FromPage = 2,
    ToPage = 4,
};

PrintDocument document = pdf.GetPrintDocument(settings);

// Print
document.Print();
Imports IronPdf
Imports System.Drawing.Printing

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Testing</h1>")

Private settings As New PrinterSettings() With {
	.PrinterName = "Microsoft Print to PDF",
	.Copies = 2,
	.FromPage = 2,
	.ToPage = 4
}

Private document As PrintDocument = pdf.GetPrintDocument(settings)

' Print
document.Print()
$vbLabelText   $csharpLabel
  • CanDuplex:表示打印机是否支持双面打印。 如果为真,则可以实现双面打印; 否则,它就无法做到。
  • 整理:指定打印时是否应将多个 PDF 文件或 PDF 文档的副本进行整理(按顺序组织)。 当为真时,打印机会整理副本; 当为 false 时,它不会。
  • 副本:设置要打印的 PDF 文档的副本数量。 它确定将打印多少份相同的文档。
  • DefaultPageSettings:表示打印机的默认页面设置,包括纸张大小、边距和方向。
  • 双面打印:指定要使用的双面(双面打印)模式。 选项包括 Duplex.Default、Duplex.Simplex(单面)、Duplex.Horizontal 和 Duplex.Vertical。
  • InstalledPrinters:提供系统上已安装的打印机名称集合。 您可以遍历此集合以获取可用打印机的名称。
  • IsDefaultPrinter:指示PrinterName中指定的打印机是否已设置为系统的默认打印机。
  • IsPlotter:确定打印机是否为绘图仪。 绘图打印机常用于大幅面打印,例如用于建筑或工程图纸。
  • IsValid:指示打印机设置是否有效并可用于打印PDF文件。
  • LandscapeAngle:指定打印机的横向方向角度(旋转),通常为90度以适应纵向。
  • MaximumCopies:表示可以为打印PDF指定的最大副本数量。
  • MaximumPage:指定可用于打印或转换的最大页码。
  • MinimumPage:指定可设置用于打印或转换的最小页码。
  • PaperSizes:为打印机提供支持的纸张尺寸集合。 您可以查询此集合以确定可用的纸张尺寸。
  • PaperSources:提供打印机可用的纸张来源或纸盘的集合。 在选择打印 PDF 文件的纸张来源时,这可能很有用。
  • PrinterName: 指定用于打印或转换的打印机名称。
  • PrinterResolutions:提供可用的打印机分辨率集合,允许您选择打印质量。
  • PrintFileName:获取或设置使用 PrintToFile 打印到文件时的文件名。
  • PrintRange:指定要打印的PDF页面范围,例如所有页面、特定范围或选择的页面。 使用此功能打印特定页面。
  • FromPage:指定打印或转换的起始页码。 打印将从这一页开始。
  • ToPage:指定打印或转换的结束页码。 打印将在到达此页后停止。
  • PrintToFile:表示是否打印到文件而不是物理打印机。 当为真时,您可以使用PrintFileName指定文件路径。
  • SupportsColor:指示打印机是否支持彩色打印。 如果为真,则支持彩色打印; 否则,它仅限于黑白(单色)打印。

    最后,要将默认打印机配置为打印 PDF,可以进入机器设置的 "打印机和扫描仪 "部分。

Chaknith related to 探索打印PDF文档设置
软件工程师
Chaknith 是开发者中的福尔摩斯。他第一次意识到自己可能在软件工程方面有前途,是在他出于乐趣做代码挑战的时候。他的重点是 IronXL 和 IronBarcode,但他为能帮助客户解决每一款产品的问题而感到自豪。Chaknith 利用他从直接与客户交谈中获得的知识,帮助进一步改进产品。他的轶事反馈不仅仅局限于 Jira 票据,还支持产品开发、文档编写和市场营销,从而提升客户的整体体验。当他不在办公室时,他可能会在学习机器学习、编程或徒步旅行。