如何直接从C#代码中打印文件(例如pdf)?

时间:2018-01-24 12:44:41

标签: c# windows printing windows-10

这是一个来自C#newbie的简单问题。

我的目标是直接从C#代码打印文件,理想情况下不显示打印对话框并选择一些选项。我可以依赖并调用任何Windows API吗?例如,可以让我选择要打印多少份副本,哪台打印机直接发送给它。

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:0)

根据这篇文章 Print Pdf in C#

你只需要开始一个新的过程:

Process p = new Process();
p.StartInfo = new ProcessStartInfo()
{
    CreateNoWindow = true,
    Verb = "print",
    FileName = path //put the correct path here
};
p.Start();


当安装了Adobe Acrobat Reader之类的PDF阅读器时,它工作正常!

答案 1 :(得分:0)

“打印文件”相当含糊。

如果您可以找到一个.NET库(或编写自己的)来打开特定类型的文件,阅读内容,然后呈现内容,您可以使用内置的.NET类,如FixedDocument类(在Auto print without dialog中引用)以构建您的打印输出并将其发送到打印机。

如果要在文件系统上打印任意文件,并假设安装了可以打开并打印该类型文件的程序,并且程序在右键菜单中安装了“打印”动词,那么你应该可以使用Mark上面的答案中的“ProcessStartInfo”方法。这模拟了用户右键单击文件并选择名为“Print”的选项。

无论哪种方式,在没有用户输入的情况下在Windows上打印本身就是一个单独的问题。出现的打印对话框通常是该特定打印机驱动程序的一部分(而不是通用的Windows打印机对话框),并包含特定于该打印机的选项,例如双面打印或选择特定的纸盘等。其中许多驱动程序根本不提供设置这些选项的编程方法,而那些通常需要特定于该驱动程序的代码。您可以以编程方式指定通用选项(例如副本数),但任何额外功能都将被禁用或将使用默认值。

希望这有帮助