php pdf打印错误,php – 打开adobe reader打印PDF的批处理文件不会结束/关闭

我在使用shell_exec()的PHP脚本调用的批处理文件中有以下代码:

"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进程,但即使使用/ F(强制)标志,AcroRd32.exe仍保持打开状态.当我手动结束AcroRd32.exe进程时,批处理文件继续,然后执行TASKKILL行,当然返回“无法找到进程”错误,因为它不再存在.所以看起来打印后控件没有返回到批处理文件,它仍然是AcroRd32.exe.

有没有人有任何想法如何在PDF打印后关闭Adobe Reader?

解决方法:

静默打印PDF文件:

AcroRd32.exe / N / T PdfFile PrinterName [PrinterDriver [PrinterPort]]

最后一个命令将打开一个新的Adobe Reader窗口,打印PDF文件然后终止

它的窗口除非该窗口恰好是唯一的Adobe Reader窗口:至少有一个Adobe Reader窗口将保持打开状态.

最后一句话是坏消息.

您可以通过START命令调用带有/ N和/ T选项的AcroRD32.exe,然后您的批处理文件可以在执行打印作业时立即继续.如果您不介意读者的一个实例保持打开状态,那么您就完成了.

如果你必须关闭阅读器,那么你的批次将不得不杀死它.但我不确定您的批处理文件如何告诉打印作业何时完成.您可以使用TIMEOUT引入任意延迟,但这听起来很危险.

我对打开的“两个AcroRd32.exe实例”感到有点困惑.如果这是程序的工作方式,那么听起来/ N开关将关闭2个实例中的1个.您的批处理可以通过START启动打印作业,延迟几秒钟以使打印作业进程有时间启动,然后使用TASKLIST | FINDSTR监视循环中的AcroRd32.exe进程数.当计数从2变为1时,打印作业应该完成,您可以终止剩余的过程.理论上无论如何:)

祝好运.

标签:php,batch-file,shell-exec

来源: https://codeday.me/bug/20190630/1333822.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值