我使用'process'在C#app中打印pdf文件 . 但我无法获得打印状态 . 我发现可以通过System.management和System.printing与打印机/队列进行交互 . 我做了很多试验n错误使用这两个名称空间但无法打印文件 . 有关如何使用这些名称来打印pdf文档到打印机的任何示例?
System.Printing不能用于打印PDF . 必须首先将PDF呈现为可打印文件 .
请参阅this question及其答案,以便对不同方法进行全面概述 .
如果您使用的是Linux,则可以轻松调用 lp 命令 .
lp
这个问题已在这里得到解答How can I send a file document to the printer and have it print? .
您无法使用标准方法打印pdf,因为它需要首先呈现,您可以使用Ghostscript,Adobe Acrobat或其他内容 .
编辑:约翰更快
如果您有 WPF 应用程序,则使用 System.Printing .
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.NET 或 Windows Service 不相符 . 它不应该与 Windows Forms 一起使用,因为它有 System.Drawing.Printing . 我不知道为什么它对别人不起作用 .
ASP.NET
Windows Service
Windows Forms
System.Drawing.Printing
我应该提一下,当你将信息直接发送到打印机时,你必须有一台支持直接打印的打印机 . 根据我的经验,这适用于兄弟HL系列和夏普企业打印机 . 我希望这可以用于其他事情,例如Excel文档,但事实并非如此 . 幸运的是,这些很容易以其他方式打印 .
3 回答
System.Printing不能用于打印PDF . 必须首先将PDF呈现为可打印文件 .
请参阅this question及其答案,以便对不同方法进行全面概述 .
如果您使用的是Linux,则可以轻松调用
lp
命令 .这个问题已在这里得到解答How can I send a file document to the printer and have it print? .
您无法使用标准方法打印pdf,因为它需要首先呈现,您可以使用Ghostscript,Adobe Acrobat或其他内容 .
编辑:约翰更快
如果您有
WPF
应用程序,则使用System.Printing
.这是代码:
现在,此命名空间必须与
WPF
应用程序一起使用 . 它与ASP.NET
或Windows Service
不相符 . 它不应该与Windows Forms
一起使用,因为它有System.Drawing.Printing
. 我不知道为什么它对别人不起作用 .我应该提一下,当你将信息直接发送到打印机时,你必须有一台支持直接打印的打印机 . 根据我的经验,这适用于兄弟HL系列和夏普企业打印机 . 我希望这可以用于其他事情,例如Excel文档,但事实并非如此 . 幸运的是,这些很容易以其他方式打印 .