首页 文章

如何使用C#在C#中打印pdf

提问于
浏览
2

我使用'process'在C#app中打印pdf文件 . 但我无法获得打印状态 . 我发现可以通过System.management和System.printing与打印机/队列进行交互 . 我做了很多试验n错误使用这两个名称空间但无法打印文件 . 有关如何使用这些名称来打印pdf文档到打印机的任何示例?

3 回答

  • 1

    System.Printing不能用于打印PDF . 必须首先将PDF呈现为可打印文件 .

    请参阅this question及其答案,以便对不同方法进行全面概述 .

    如果您使用的是Linux,则可以轻松调用 lp 命令 .

  • 0

    这个问题已在这里得到解答How can I send a file document to the printer and have it print? .

    您无法使用标准方法打印pdf,因为它需要首先呈现,您可以使用Ghostscript,Adobe Acrobat或其他内容 .

    编辑:约翰更快

  • 0

    如果您有 WPF 应用程序,则使用 System.Printing .

    这是代码:

    var file = File.ReadAllBytes(pdfFilePath);
    var printQueue = LocalPrintServer.GetDefaultPrintQueue();
    
    using (var job = printQueue.AddJob())
    using (var stream = job.JobStream)
    {
        stream.Write(file, 0, file.Length);
    }
    

    现在,此命名空间必须与 WPF 应用程序一起使用 . 它与 ASP.NETWindows Service 不相符 . 它不应该与 Windows Forms 一起使用,因为它有 System.Drawing.Printing . 我不知道为什么它对别人不起作用 .

    我应该提一下,当你将信息直接发送到打印机时,你必须有一台支持直接打印的打印机 . 根据我的经验,这适用于兄弟HL系列和夏普企业打印机 . 我希望这可以用于其他事情,例如Excel文档,但事实并非如此 . 幸运的是,这些很容易以其他方式打印 .

相关问题