C# 从asp.net应用程序以静默方式打印pdf文件

C# 从asp.net应用程序以静默方式打印pdf文件,c#,asp.net,pdf,C#,Asp.net,Pdf,我搜索了谷歌,找到了几个解决方案。我使用了以下代码。当应用程序通过带IIS Express的Visual Studio运行时,它可以打印到我的网络打印机,但当我将应用程序托管到本地主机时,以下代码不会打印任何内容 ProcessStartInfo psi = new ProcessStartInfo(pdfFileName) { Verb = "Print" }; psi.CreateNoWindow = true; psi.WindowStyle

我搜索了谷歌,找到了几个解决方案。我使用了以下代码。当应用程序通过带IIS Express的Visual Studio运行时,它可以打印到我的网络打印机,但当我将应用程序托管到本地主机时,以下代码不会打印任何内容

ProcessStartInfo psi = new ProcessStartInfo(pdfFileName) { Verb = "Print" };
            psi.CreateNoWindow = true;
            psi.WindowStyle = ProcessWindowStyle.Hidden;
            Process p = new Process();
            p.StartInfo = psi;
            Process.Start(psi);
            System.Threading.Thread.Sleep(5000);
            if (false == p.CloseMainWindow())
            {
                p.Kill();
            }
            else
            {
                p.WaitForInputIdle();
            }

我完全卡住了。请给我建议或给我示例代码或链接。

如果我理解正确,您将使用PDF文件名启动一个新进程,并尝试向进程传递动词,以便它知道该做什么(打印PDF)

我会注释掉“CreateNoWindow”部分,看看会发生什么。服务器上是否有能够打开和显示PDF文件的内容?PDF可以由Edge、Adobe Reader、Reader应用程序(8.1版)、IrfanView等处理,这些应用程序无疑会以不同的方式处理“打印”动词

你的睡眠功能也会产生不一致的结果,因为它在等待一段特定的时间。使用AutoItX工具包中的WinWaitActive之类的东西可能会更幸运(因为您正在进行UI自动化)

还有,不做,

if (false == p.CloseMainWindow())
你能行

if (!p.CloseMainWindow())
这可以提高代码的可读性(该!与“not”基本相同,因此它会检查返回值是否为True)

编辑:其他注意事项是IIS Express将在您的本地帐户下运行,这无疑会安装打印机。完整的IIS服务器可能会作为网络服务帐户运行,该帐户可能没有安装任何打印机


你可能会认为这是一个潜在的更明智的设计决策,比如说,将PDF文件生成到一个文件夹中,然后在服务器上运行另一个C应用程序,作为一个服务来打印这个文件夹中的所有文件。您可以作为安装了这些打印机的用户运行该服务。您可以实现一个FileSystemWatcher,只在新文件放入该目录时触发,处理打印作业,然后删除PDF。请参见此处了解所有这些的工作原理(其中的文件查看部分):

感谢刘易斯的评论。从你的评论中我不清楚什么。您的服务器上是否有能够打开和显示PDF文件的内容?谢谢Lewis的评论。我注释掉了“CreateNoWindow”,但应用程序无法从服务器端打印。从你的评论中我不清楚什么。1.服务器上是否有能够打开和显示PDF文件的内容?2.服务器上运行的另一个C#应用程序作为一项服务,用于打印此文件夹中的所有文件。在您的第二条评论中,是什么样的服务?同样,同样的问题提出了服务将如何从服务器端发送打印命令?我在一个文件夹中生成了一个PDF文件,并试图从该文件夹打印。我找到了另一个代码,但它仍然无法打印PDF文件。代码如下。System.Diagnostics.Process.Start(@“C:\\Programs\Adobe\Reader 9.0\Reader\AcroRd32.exe”,@“/t C:\test.pdf\\Server\Printer”)。虽然,在此代码中,指定了acrobat reader、pdf文件和打印机名称,但它无法打印pdf文件。我找到了另一个链接。无法从IIS Express或本地IIS打印。我需要马上解决。有什么建议、想法或示例代码吗?