这很可能不是一件容易的事,但情况如下:
我编写了一个 C# 命令行应用程序,其中:
- 使用 ITextSharp 创建 PDF
- 将其写入磁盘
- uses
Acrord32.exe
(这是 Acrobat Reader)通过System.Diagnostics.Process
以静默打印生成的 PDF
如果我构建我的解决方案并双击pdfGen.exe
,它按预期工作。 PDF 已创建并打印。
现在,我的应用程序必须部署在运行 IIS 7 的 Windows Vista 内部服务器上。该服务器运行一些 PHP Web 应用程序。它将通过 PHP 调用shell_exec()
这样生成的 PDF 将在连接到服务器的打印机上打印。
所以我的 PHP 页面基本上是这样的:
shell_exec('/path/to/pdfGen.exe');
但这里出了问题。根据任务管理器等会发生什么:
-
pdfGen.exe
starts
- PDF 已创建
-
Acrord32.exe
starts
-
pdfGen.exe
永远挂起(PHP 脚本也是如此)并且不打印任何内容
我很确定这是一些权限相关问题。我已经给了IIS_IUSRS
访问默认打印机以及所在目录Acrord32.exe
位于。但仍然没有打印。但是,如果我手动启动 pdfGen.exe,它就可以工作。
知道我缺少什么吗?
EDIT:
我不必使用 Acrobat Reader 来打印 PDF。如果有另一种方法可以silently在服务器端打印创建的 PDF,我一点也不介意。
为了检查发生了什么,请尝试运行
这Sysinternals 的进程监视器 http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx并将事件过滤到 adobe acrobat 进程。你会看到acrobat的系统调用,它会让你或多或少地知道出了什么问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)