You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6中如何无需外部进程实现PDF打印?

.NET无外部进程PDF打印实现方案

.NET标准库的局限

.NET自带的PrintDocument类本身不支持直接解析和打印PDF文件,它仅负责将自定义绘制的内容(如文本、图形)发送到打印机。如果要通过它打印PDF,必须先自行实现PDF内容的渲染逻辑(将PDF页面转换为可绘制的图像/图形对象),但.NET标准库没有内置PDF解析能力,因此单独使用PrintDocument无法完成需求。

MIT协议开源库推荐

以下是几个符合MIT协议、可直接在进程内处理PDF打印的开源库:

PdfiumViewer

基于Google的Pdfium库开发,支持直接加载PDF并生成PrintDocument对象,无需额外渲染步骤,使用简单:

  1. 安装NuGet包:PdfiumViewer
  2. 示例代码:
using PdfiumViewer;
using System.Drawing.Printing;

public void PrintPdf(string pdfFilePath, string targetPrinter)
{
    using var pdfDoc = PdfDocument.Load(pdfFilePath);
    using var printDoc = pdfDoc.CreatePrintDocument();
    
    printDoc.PrinterSettings.PrinterName = targetPrinter;
    // 可选:配置打印参数(页码范围、份数等)
    // printDoc.PrinterSettings.FromPage = 1;
    // printDoc.PrinterSettings.ToPage = pdfDoc.PageCount;
    // printDoc.PrinterSettings.Copies = 2;
    
    printDoc.Print();
}

PdfSharpCore

一款.NET跨平台PDF处理库,可将PDF页面渲染为GDI+图形后通过PrintDocument打印:

  1. 安装NuGet包:PdfSharpCore
  2. 示例代码:
using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
using System.Drawing.Printing;

public void PrintPdfViaRender(string pdfFilePath, string targetPrinter)
{
    using var pdfDoc = PdfReader.Open(pdfFilePath, PdfDocumentOpenMode.Import);
    var printDoc = new PrintDocument
    {
        PrinterSettings = { PrinterName = targetPrinter }
    };

    printDoc.PrintPage += (sender, e) =>
    {
        var pageIndex = e.PageSettings.PrintableArea.Page;
        if (pageIndex < pdfDoc.PageCount)
        {
            var pdfPage = pdfDoc.Pages[pageIndex];
            using var gfx = XGraphics.FromGraphics(e.Graphics, new XSize(e.PageBounds.Width, e.PageBounds.Height));
            gfx.DrawPage(pdfPage, 0, 0);
        }
    };

    printDoc.Print();
}

方案对比

相比你之前通过ProcessStartInfo调用外部阅读器的方式,上述开源库方案无需依赖外部进程,避免了进程等待、强制终止等不确定问题,打印逻辑完全可控。

内容的提问来源于stack exchange,提问作者Eagle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:55:15