使用PHP exec()和Python PDF订书机工具将PDF拆分为单个页面

时间:2013-05-23 00:33:19

标签: php python permissions pdf-generation exec

我正在研究的基于PHP的网站需要将PDF文档拆分为单个页面。 经过深入和广泛的搜索,我终于决定使用Stapler(https://github.com/hellerbarde/stapler),这是Python替代PDFtk。

注意:在我的情况下,PDF文件与public_html一起放在公共访问上方的目录中。我也在这里放置了订书机。


当我通过控制台运行时,该工具可以很好地工作。使用-v verbose选项,我得到以下输出:

[root@server directory]# python2 stapler -v burst filename.pdf
Mode: burst
filename_1.pdf
filename_2.pdf

2 page(s) in 1 file(s) processed.

已解决:通过使用-d选项,我可以指定输出目录。在没有对用户进行任何更改的情况下运行apache,我能够从PHP执行订书机。

exec("python2 ../directory/stapler -vd ../directory burst ../directory/filename.pdf 2>&1", $output, $return_var);

$ output的转储:

Dump => array(5) {
  [0] => string(11) "Mode: burst"
  [1] => string(16) "filename_1.pdf"
  [2] => string(16) "filename_2.pdf"
  [3] => string(0) ""
  [4] => string(33) "2 page(s) in 1 file(s) processed."
}

1 个答案:

答案 0 :(得分:1)

你确定你的PHP脚本中你提供的路径(filename.pdf)指向一个有效的文件吗?

我会在你的脚本中创建一个绝对路径,通过realpath的审查,并在你的命令中提供一个参数。

此外,您可以使用getcwd检查调用exec时使用的路径,并查看它是否与您在命令行中使用的路径相同。