我有一个网络服务,它有一个水晶报告,可以从我的数据库生成发票,然后将水晶导出到PDF
,然后导出到流中,然后在网络方法上以字符串形式返回。
在客户端,我有一个Winforms C#
应用程序,可以调用此Web服务。我希望能够在不打开Acrobat Reader的情况下自动在客户端打印PDF
。
我最好不想保存PDF
,因为目前我必须保存PDF
然后使用进程打开Acrobat Reader然后打印PDF
。
答案 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打印对话框的同时打印文件,然后 终止读者。