c# – 通过PHP启动服务器端打印作业

这很可能不是一件容易的事,但情况如下:

我编写了一个C#命令行应用程序:

>使用ITextSharp创建PDF
>将其写入磁盘
>通过System.Diagnostics.Process使用Acrord32.exe(这是Acrobat Reader)以静默打印生成的PDF

如果我构建我的解决方案并双击pdfGen.exe,它将按预期工作. PDF已创建并打印.

现在,我的应用程序必须部署在运行IIS 7的Windows Vista的内部服务器上.此服务器运行一些PHP webapp.它将通过PHP使用shell_exec()调用,以便生成的PDF将打印在连接到服务器的打印机上.

所以我的PHP页面看起来基本上是这样的:

shell_exec('/path/to/pdfGen.exe');

但这里出了问题.根据任务经理等情况会发生什么:

> pdfGen.exe启动
> PDF已创建
> Acrord32.exe启动
> pdfGen.exe永远挂起(PHP脚本也是如此)并且不会打印任何内容

我很确定这是一些与许可相关的问题.我已经给IIS_IUSRS访问了默认打印机,以及Acrord32.exe所在的目录.但是,仍然没有打印.但是,如果我手动启动我的pdfGen.exe它可以工作.

知道我错过了什么吗?

编辑:

我不一定要使用Acrobat Reader来打印PDF.如果有另一种方法来静默打印创建的PDF服务器端,我根本不介意.

最佳答案 为了检查发生了什么,请尝试运行

process monitor from Sysinternals并将事件过滤到adobe acrobat进程.您将看到acrobat的系统调用,它将让您了解更多或更少的错误.

点赞