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

时间:2013-11-22 10:47:47

标签: c# printing process system.printing system.management

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

3 个答案:

答案 0 :(得分:1)

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

请参阅this question及其答案,了解不同方法的概述。

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

答案 1 :(得分:0)

此问题已在此处How can I send a file document to the printer and have it print?得到解答。

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

编辑:约翰更快

答案 2 :(得分: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。使用上面的代码我的PDF打印没有一个问题,但我很清楚为什么它不适用于其他人。

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