首页 >后端开发 >C++ >如何从 .NET 应用程序自动打印 PDF?

如何从 .NET 应用程序自动打印 PDF?

Susan Sarandon
Susan Sarandon原创
2025-01-23 22:17:12389浏览

How to Automate PDF Printing from .NET Applications?

如何自动打印 PDF 文档

自动打印 PDF 文档是各种应用程序中的常见任务。在本文中,我们将探讨如何高效地将 PDF 文件发送到打印机队列并直接从代码中打印它们。

.NET Windows 窗体方法

对于在 Windows XP 上运行的 Windows Forms .NET 4 应用程序,一种方法是利用命令行来打印 PDF 文件。实现方法如下:

using System.Diagnostics;
using System.IO;

public void SendToPrinter(string filePath)
{
    // Convert full file path to short path for command line use
    string shortPath = Path.GetShortPathName(filePath);

    // Prepare the command line arguments
    string args = $"/p \"{shortPath}\"";

    // Create a new Process object
    Process process = new Process();
    process.StartInfo.FileName = "cmd.exe";
    process.StartInfo.Arguments = "/C start " + args;
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.CreateNoWindow = true;

    // Execute the command line
    process.Start();
}

使用 PdfiumViewer 的增强型解决方案

另一个特别适合 PDF 打印的选项是利用 Google Pdfium 库及其 . NET 包装器,PdfiumViewer。这个开源库提供了强大的 PDF 打印功能:

using PdfiumViewer;

public bool PrintPDF(
    string printer,
    string paperName,
    string filePath,
    int copies)
{
    try {
        // Create printer settings
        var printerSettings = new PrinterSettings {
            PrinterName = printer,
            Copies = (short)copies,
        };

        // Create page settings for paper size
        var pageSettings = new PageSettings(printerSettings) {
            Margins = new Margins(0, 0, 0, 0),
        };
        foreach (PaperSize paperSize in printerSettings.PaperSizes) {
            if (paperSize.PaperName == paperName) {
                pageSettings.PaperSize = paperSize;
                break;
            }
        }

        // Print PDF document
        using (var document = PdfDocument.Load(filePath)) {
            using (var printDocument = document.CreatePrintDocument()) {
                printDocument.PrinterSettings = printerSettings;
                printDocument.DefaultPageSettings = pageSettings;
                printDocument.PrintController = new StandardPrintController();
                printDocument.Print();
            }
        }
        return true;
    } catch {
        return false;
    }
}

这种增强的方法提供了对打印过程的更多控制,并且无需用户交互即可实现静默打印。

以上是如何从 .NET 应用程序自动打印 PDF?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn