我在一个由 PHP 脚本调用的批处理文件中有以下代码shell_exec()
:
"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"
/t "D:\xampp\htdocs\instrument\app\webroot\Repair Tickets\%1.pdf"
\\hnurenfp01\Accounts_FS-1128MFP
参数 %1 是作为参数从 PHP 脚本发送到批处理文件的文件名。
观察到的行为:
- PHP页面成功调用具有正确参数的批处理文件
- AcroRd32.exe 的两个实例在服务器上静默启动
- PDF 文件打印到网络打印机
- AcroRd32.exe 实例不结束/关闭
- 批处理文件继续运行(直到手动结束 AcroRd32.exe 进程)
- PHP 脚本一直在执行,因此阻止客户端机器做任何进一步的事情
预期行为:
- PHP页面成功调用具有正确参数的批处理文件
- AcroRd32.exe 的两个实例在服务器上静默启动
- PDF 文件打印到网络打印机
- AcroRd32.exe 实例结束/关闭
- 批处理脚本完成(这反过来应该释放 PHP 脚本)
- PHP 脚本继续并最终结束以允许最终用户继续他们的工作
失败的解决方案:
- 在批处理文件中使用 TASKKILL 在打印后结束 AcroRd32.exe 进程,但 AcroRd32.exe 保持打开状态,即使使用 /F(强制)标志也是如此。当我手动结束 AcroRd32.exe 进程时,批处理文件继续执行,然后执行 TASKKILL 行,这当然会返回“找不到进程”错误,因为它不再存在。所以看起来控件在打印后没有返回到批处理文件,它仍然保留在 AcroRd32.exe 中。
有没有人知道如何在 PDF 打印后关闭 Adobe Reader?