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


Split a PDF into single pages using PHP exec() and Python PDF stapler tool

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

注意:在我的例子中,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.

SOLVED:通过使用-d选项,我可以指定输出目录。不需要更改apache运行的用户,我就可以从PHP执行订书机。

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

$output的Dump:

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."
}

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

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

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