ちょっとしたコメントです。 Ghostscriptはではなく、の 'merge' PDFファイルを入力として複数のPDFファイルを取り込み、視覚的な外観を入力と同じにする必要がありますが、PDFファイルと入力をマージしない新しいPDFファイルを作成できます完全に解釈され、新しいファイルには入力ファイルと共通の外観があります。
Ghostscriptが正しく動作していますか? 1つのPDFファイルを処理しようとしましたか? それは動作しますか?
そうでない場合は、$ PATH環境変数にGhostscript実行可能ファイルが格納されているディレクトリを持っていない可能性があります(よくある問題です)。あなたは、コマンドラインでのGhostscript実行可能ファイルへの完全修飾パスを供給することによってこれをテストするので、代わりにすることができます:あなたはへのパスを変更する必要があります明らかに
$cmd = "/usr/local/bin/gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$output ";
:
$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$output ";
のようなものを試してみてくださいあなたの設定に合ってください。それがうまくいけば、問題はディレクトリが$ PATHにないことになります。追加するか、フルパスを使うだけです。
私はあなたを助けることができない論理的なエラーもあります。
「foreach」は、配列内の各ファイルに対してcmdを一度呼び出すように見えます。これは、各ファイルがGhostscriptの呼び出しによって処理されることを意味します。したがって、各ファイルは個別のPDFファイルを生成します。彼らはすべて同じOutputFileを使用しているので、お互いを上書きします。
すべてのファイルの入力を使用して1つの出力を作成する場合は、入力ファイルごとに一度ではなく、を一度にと呼ぶ必要があります。コマンドラインにすべての入力ファイルを含める必要があります。あなたが今持っているもの。本質的に
は次のとおりです。
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=single.pdf 1.pdf
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=single.pdf 2.pdf
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=single.pdf 3.pdf
何をしたいです:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=single.pdf 1.pdf 2.pdf 3.pdf
私はそれを修正する方法を伝えることはできませんPHPについて何も知らないので。
これを実行する代わりに$ cmdをエコーしてみました。これをコピーして端末に貼り付けて、コマンドが有効で動作していることを確認できますか? –
私はそれを試すことができますが、どの端末を使用するのですか?私は自分のサーバーをチェックしたところ、PDFファイルが最終的にマージされ、出力結果が正しいことがわかりました。私は最後のテストから何もしなかった。だから私はそれはちょうど時間の問題かもしれないと思う。それにかかる時間を計算する方法はありますか? – user3292788