如何将文件打印到特定的打印机

时间:2011-08-20 17:59:49

标签: c# .net printing windows-services

我用C#开发了一个Windows服务。现在我正在寻找一种方法,它可以将特定文件(可以是TIFF,PDF,HTML,MHT或文本)打印到特定的打印机。问题是,当我使用Process和print作为动词时,我该如何设置特定的打印机?是否也可以在Windows服务中使用Process? - 它不应该显示一个窗口。

4 个答案:

答案 0 :(得分:2)

" Printto"动词需要打印机名称的参数。有关详细信息,请参阅this sample in MSDN

答案 1 :(得分:2)

我认为这种提议的方法可能会失败。使用shell动词进行打印将调用关联的应用程序来执行打印。对于其中许多文件类型,这将导致显示的UI将在服务中失败。

您提及的所有文件类型都可以直接从您的服务打印而无需借助其他应用程序。它需要更多编码,但我相信它是服务最可行的解决方案。

或者,您可以从在交互式桌面上运行的标准应用程序执行此操作。这应该工作正常,我认为你将控制运行此代码的机器的硬件和软件配置。否则使用shell动词将是一个非常脆弱和脆弱的方法 - 谁知道随机客户的机器上有什么文件关联?!

答案 2 :(得分:0)

请注意,如果是PDF,则无人值守打印PDF会违反Adobe EULA。假设.pdf扩展名与Adobe PDF Reader(或此场景中的打印机......)相关联。

答案 3 :(得分:0)

如何通过服务处理打印存在安全性。如果您使用Windows帐户运行,则该服务可以不使用UI进行打印。我在具有专用用户帐户的服务器上有打印服务,它每天要打印1000个文件。到80多种不同的网络打印机。
您的服务必须具备以下条件:

  1. 它必须以标准Windows用户身份运行
  2. 它必须有权访问可以保存要打印文件的文件结构。无论您要打印什么,都必须将其存储为文件,并且发送到打印机的文件不要忘记进行文件清理。
  3. 打印机的连接方式必须与连接到打印机以打印电子邮件的方式一样
  4. 在发送打印作业之前在打印机之间切换时,您必须分别重新设置默认打印机
  5. Telerik和Windows单词Interop均可用于打印。