2

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

4

3 回答 3

2

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

有关不同方法的详细概述,请参阅此问题及其答案。

如果你在linux上,你可以很容易地调用lp命令。

于 2013-11-22T11:04:00.117 回答
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.NETor一起使用Windows Service。它不应该与 一起使用Windows Forms,因为它有System.Drawing.Printing。使用上述代码打印 PDF 时我没有任何问题,但我很清楚为什么它对其他人不起作用。

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

于 2014-12-11T17:58:28.183 回答
0

此问题已在此处得到解答如何将文件文档发送到打印机并进行打印?.

您无法使用标准方法打印 pdf,因为它需要先渲染,您可以使用 Ghostscript、Adobe Acrobat 或其他工具。

编辑:约翰更快

于 2013-11-22T11:06:33.873 回答