Ghostscript exec:PHP与Python

时间:2014-11-03 22:59:38

标签: php python ghostscript

我正在尝试执行一个简单的Ghostscript命令来获取PDF页面的数量。 这是PHP cmd:

$pages = 'sudo gs -q -dNODISPLAY -c "(' . $input . ') (r) file runpdfbegin pdfpagecount = quit"';

尝试了exec(),system(),shell_exec()和passthru() - none返回stdout。

对于s& g,我尝试过Python:

>>> import os
>>> os.system('sudo gs -q -dNODISPLAY -c "(/Users/me/Downloads/multi-page.pdf) (r) file runpdfbegin pdfpagecount = quit"')

得到32的输出。

主要目标是让它在PHP中运行 - 我缺少什么?

1 个答案:

答案 0 :(得分:0)

这是可执行文件未找到的功能,没有任何来自PHP的指示。 我绕道而行:

Python脚本:

>>> #!/usr/bin/python
>>> import sys
>>> import os
>>> input_file = sys.argv[1].replace("2>&1", "")
>>> num_pages = os.system('gs -q -dNODISPLAY -c "(' + input_file + ') (r) file runpdfbegin pdfpagecount = quit"')

>>> print num_pages

PHP脚本envoking Python脚本:

$cmd_path = base_path('backend/misc/get_pdf_pages.py');
$pages_cmd = "python -u {$cmd_path} " . escapeshellarg($input) . " 2>&1";
exec($pages_cmd, $ret);
echo $ret[0];

导致:" sh:gs:命令未找到"

感谢这个提示,我将gs更改为/ usr / local / bin / gs,在Python中工作,在PHP中尝试过同样的事情,在PHP中工作。获得的经验教训 - 使用二进制文件的绝对路径。