C# 自动打印PDF

C# 自动打印PDF,c#,winforms,web-services,pdf,C#,Winforms,Web Services,Pdf,我有一个web服务,它有一个crystal报告,该报告从我的数据库生成发票,然后将crystal导出到一个PDF,再导出到一个流中,然后在web方法上作为字符串返回 在客户端,我有一个WinformsC应用程序调用这个Web服务。我希望能够在客户端自动打印PDF,而无需打开Acrobat Reader 我最好不要保存PDF,因为当前我必须保存PDF,然后使用一个过程打开Acrobat Reader,然后打印PDF,您可以使用命令行: acrord32 /t "out.pdf" "Acrobat

我有一个web服务,它有一个crystal报告,该报告从我的数据库生成发票,然后将crystal导出到一个
PDF
,再导出到一个流中,然后在web方法上作为字符串返回

在客户端,我有一个Winforms
C
应用程序调用这个Web服务。我希望能够在客户端自动打印
PDF
,而无需打开Acrobat Reader


我最好不要保存
PDF
,因为当前我必须保存
PDF
,然后使用一个过程打开Acrobat Reader,然后打印
PDF
,您可以使用命令行:

acrord32 /t "out.pdf" "Acrobat Distiller" "AdobePS Acrobat Distiller" "in.pdf"
语法是:

acroRd32.exe/t路径打印机名称驱动器名称端口名

  • 启动Acrobat Reader,在抑制Acrobat打印对话框的同时打印文件,然后 终止读卡器

您可以使用命令行:

acrord32 /t "out.pdf" "Acrobat Distiller" "AdobePS Acrobat Distiller" "in.pdf"
语法是:

acroRd32.exe/t路径打印机名称驱动器名称端口名

  • 启动Acrobat Reader,在抑制Acrobat打印对话框的同时打印文件,然后 终止读卡器

我也遇到过类似的挑战。我提出的解决方案是购买一个名为PDFTron的组件。它有一个API,可以从无人值守的服务向打印机发送pdf文档。我在我的博客上发布了一些关于这个的信息。看一看

谢谢


罗伯托·洛佩斯

我也遇到了类似的挑战。我提出的解决方案是购买一个名为PDFTron的组件。它有一个API,可以从无人值守的服务向打印机发送pdf文档。我在我的博客上发布了一些关于这个的信息。看一看

谢谢


罗伯托·洛佩斯(Roberto Lopes)

有一个名为苏门答腊PDF的免费实用程序,可以让您以静默方式打印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);
            }
        }

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

有一个名为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);
            }
        }

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

为什么服务器不能只打印发票?为什么服务器不能只打印发票?url已更改。现在很遗憾,url已经更改。现在是嗨,约翰,这不是一个可靠的解决方案。我以前试过。此外,如果违反Acrobat许可证。几年前我就此事联系了Adobe,他们说acrobat是一款用于“查看”pdf文件的桌面应用程序。当时我选择了使用PDFTron,它仍然像一个魔咒一样运行。啊,谢谢你的反馈,罗伯托。我在早些时候(三年前,当这个答案被写出来的时候)使用过它,没有任何问题,但今天我又尝试了一次,它看起来确实有点古怪。谢谢嗨,约翰,这不是一个可靠的解决方案。我以前试过。此外,如果违反Acrobat许可证。几年前我就此事联系了Adobe,他们说acrobat是一款用于“查看”pdf文件的桌面应用程序。当时我选择了使用PDFTron,它仍然像一个魔咒一样运行。啊,谢谢你的反馈,罗伯托。我在早些时候(三年前,当这个答案被写出来的时候)使用过它,没有任何问题,但今天我又尝试了一次,它看起来确实有点古怪。谢谢苏门答腊PDF是缓慢的,如果你正在做大量的打印在一批,你需要速度。来自苏门答腊PDF论坛:“苏门答腊一般不擅长打印,因此我不建议在这种情况下使用它。目前,我们通过为每个页面生成位图并将这些位图发送到打印机来打印。Adobe更智能。”是的。6年前听起来不错,但经验表明,在批处理场景中,它的速度非常慢,而且需要大量资源。我还没有使用过它,但看起来VeryPDF有一个PDF打印机软件,这可能是一个更好的选择。只是不知道它的性能是什么样子。如果你在一批中进行大量打印,并且需要速度,那么SumatraPDF的速度会很慢。来自苏门答腊PDF论坛:“苏门答腊一般不擅长打印,因此我不建议在这种情况下使用它。目前,我们通过为每个页面生成位图并将这些位图发送到打印机来打印。Adobe更智能。”是的。6年前听起来不错,但经验表明,在批处理场景中,它的速度非常慢,而且需要大量资源。我还没有使用过它,但看起来VeryPDF有一个PDF打印机软件,这可能是一个更好的选择。只是不知道它的表现是什么样子。