【问题标题】:How can I print files (eg. pdf) directly from within C# code? [duplicate]如何直接从 C# 代码中打印文件(例如 pdf)? [复制]
【发布时间】:2018-07-03 12:28:48
【问题描述】:

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

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

有什么建议吗?谢谢!

【问题讨论】:

标签: c# windows printing windows-10


【解决方案1】:

“打印文件”相当模糊。

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

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

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

希望对你有帮助

【讨论】:

  • 感谢 Trevor 的详细解释。是的,我的目标是在文件系统上打印一个可以打开和打印的任意文件;因此,我将尝试按照 Mark 下面列出的方向进行操作!
【解决方案2】:

根据这篇文章 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();


如果安装了 Adob​​e Acrobat Reader 之类的 pdf 阅读器,它就可以正常工作!

【讨论】:

  • 谢谢马克,会试试的!
猜你喜欢
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 2019-01-03
  • 1970-01-01
  • 2010-10-22
  • 2014-11-29
相关资源
最近更新 更多