自动打印PDF

时间:2010-02-01 13:41:50

标签: c# winforms web-services pdf

我有一个网络服务,它有一个水晶报告,可以从我的数据库生成发票,然后将水晶导出到PDF,然后导出到流中,然后在网络方法上以字符串形式返回。

在客户端,我有一个Winforms C#应用程序,可以调用此Web服务。我希望能够在不打开Acrobat Reader的情况下自动在客户端打印PDF

我最好不想保存PDF,因为目前我必须保存PDF然后使用进程打开Acrobat Reader然后打印PDF

3 个答案:

答案 0 :(得分:4)

有一个名为SumatraPDF的免费实用程序,可让您以静默方式打印PDF文档。我已成功在winform应用程序中使用它。

private void print(string printerName, string fileName)
        {
            try
            {
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo.FileName = "SumatraPDF.exe";
                proc.StartInfo.Arguments = "-print-to " + '"' + printerName+ '"' + " " + '"' + fileName+ '"';
                proc.StartInfo.RedirectStandardError = false;
                proc.StartInfo.RedirectStandardOutput = false;
                proc.StartInfo.UseShellExecute = true;
                proc.Start();
                proc.WaitForExit();
            }
            catch (Exception ex)
            {
                EventLog.WriteEntry("InboundServicioImpresion", ex.Message + " " + ex.StackTrace);
            }
        }

对于“自动打印”,您可以使用Timer或执行上述方法的无限循环。

答案 1 :(得分:1)

我遇到了类似的挑战。我所做的解决方案是购买一个名为PDFTron的组件。它有一个API,可以通过无人值守服务将pdf文档发送到打印机。我在博客中发布了一些相关信息。看看吧!

How to print a PDF file programmatically???

谢谢,

Roberto Lopes

答案 2 :(得分:0)

您可以使用命令行:

acrord32 /t "out.pdf" "Acrobat Distiller" "AdobePS Acrobat Distiller" "in.pdf"

语法为:

  

acroRd32.exe / t path printername drivername portname

     
      
  • 启动Acrobat Reader,在禁止Acrobat打印对话框的同时打印文件,然后   终止读者。
  •