GhostScript - 合并来自不同目录的pdf

时间:2014-09-05 13:40:42

标签: php ghostscript

我必须合并一些pdf文件,并使用详细解决方案here来构建Ghostscript命令:

// $output_file_name = 'test_file_complete.pdf'
// $original_file = 'test_file.pdf'
// $append_files = array('../toappend/1.pdf', '../toappend/2.pdf', '../toappend/3.pdf', '../toappend/4.pdf')
public function merge_documents($output_file_name, $original_file, $append_files) 
{
    $cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$output_file_name ";

    $cmd .= $original_file . " ";

    foreach($append_files as $file) {
        $cmd .= $file . " ";
    }

    $result = shell_exec($cmd);
 }

我构建的$ cmd字符串是:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=test_file_complete.pdf test_file.pdf ../toappend/1.pdf ../toappend/2.pdf ../toappend/3.pdf ../toappend/4.pdf

请注意,要合并的第一个文件位于当前目录中,其他文件位于另一个目录中的某个级别。

在命令行中,当我导航到原始文件的目录并运行它时,它完美地运行。但是,在我的函数中,它失败并显示消息:

  

(string)错误:/ undefinedfilename in   (TEMP_quote_2014_09_05_13_16_04.pdf)操作数堆栈:

     

执行堆栈:%interp_exit .runexec2 --nostringval--
  --nostringval---nostringval-- 2%stopped_push --nostringval---nostringval---nostringval-- false 1%stopped_push字典堆栈: - dict:1162/1684(ro)(G) -
  --dict:0/20(G) - --dict:77/200(L) - 当前分配模式是本地上一次操作系统错误:2

如果我只使用" toappend"中的文件运行该代码目录,它将合并那些罚款。

1 个答案:

答案 0 :(得分:0)

如果我使用绝对路径,这不再是一个问题。对我来说这没有问题,但this info on how ghostscript finds files对于有类似问题的人来说可能会派上用场。