wee*_*ave 5 php batch-file shell-exec
我在一个批处理文件中有以下代码,由 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
Run Code Online (Sandbox Code Playgroud)
参数 %1 是作为参数从 PHP 脚本发送到批处理文件的文件名。
观察到的行为:
预期行为:
失败的解决方案:
有谁知道如何在 PDF 打印后关闭 Adobe Reader?
我在http://www.robvanderwoude.com/commandlineswitches.php#Acrobat找到了以下引用
静默打印 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 时,打印作业应该完成,您可以终止剩余的进程。无论如何理论上:)
祝你好运。