1

このトピックが既に存在することは知っていますが、どの回答も役に立ちませんでした... wkhtml フォルダーを HDD からサーバーにコピーしました。exec('"../wkhtmltopdf/wkhtmltopdf.exe" "www.estiroad.com/export.php" "C:/EXTREM.pdf"'); を実行すると

何も起こりません... パスを正しく入力していますか? つまり、exec コマンドを実行する場所に応じて、wkhtmltopdf への正確なパスを入力する必要がありますよね? また、ユーザーのHDDに保存したい場合は、絶対パスを使用する必要がありますよね? 奇妙なのは、エラーが発生せず、黙って何もしないということです... PHPバインディングについて見つけましたが、それらの使用方法がわかりません...誰もがその問題を解決するのはLinuxだけであり、それは私にとって無価値です:(どんな助けでも大歓迎です。

4

3 に答える 3

2

knplabsのsnappyを使用してください。wkhtmltopdfのラッパーであり、ケースを処理します。

于 2012-10-27T11:00:35.420 に答える
1

ライブラリを引用符で囲む必要はありません。次の方法でコマンドの出力をキャッチできます。

$commandString = '../wkhtmltopdf/wkhtmltopdf-i386 http://www.estiroad.com/export.php file.pdf 2>&1';
$output       = shell_exec($commandString);

UNIXの2>&1は、出力が通過することを意味します。1 は標準出力です。2 は標準エラーです。お役に立てれば。

またはウィンドウで

$commandString = '../wkhtmltopdf/wkhtmltopdf.exe http://www.estiroad.com/export.php file.pdf 2> output';
print $out ? $out : join("", file("output"));

パーミッションの問題から、Linux でプロダクション スクリプトを実行しているようです。本番サーバーに移動して実行します

$ uname -a

次のようなものが得られます。

Linux ora100 2.6.5-7.252-smp #1 SMP Tue Feb 14 11:11:04 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux

x86_64 は、64 ビット CPU を実行していることを示唆しています。その場合は amd64 バージョンのバイナリをダウンロードし、そうでない場合は i386 バージョンをダウンロードします。どちらも次の URL から取得できます: http://code.google.com/p/wkhtmltopdf/downloads/list

Windows バイナリを保持します。設定ファイルはありますか?その場合は、環境に基づいてライブラリ パスを定数に割り当てるスイッチがあることを確認してください。

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    // this is windows server
    define('WKHTML_LIB', "../wkhtmltopdf/wkhtmltopdf.exe");
} else {
    // or the 64 bit binary?
    define('WKHTML_LIB', "../wkhtmltopdf/wkhtmltopdf-i386");
}

次に、wkhtmltopdf を開始するコードを変更します。

$commandString = WKHTML_LIB' http://www.estiroad.com/export.php file.pdf 2> output';
print $out ? $out : join("", file("output"));
于 2012-08-06T09:57:39.813 に答える
1

(私は wkhtmltopdf の経験がありますが、* nix のみ)

私のアドバイス: まず、すべてを PHP なしで実行し、exec() なしで実行してください。

コマンドラインでコマンドを入力して PDF を作成できることを確認してください。

マシンに WebKit をインストールしたことは確かですか? wkhtmltopdf.exe はそれに依存しています。

コマンドラインから生成できることを確認してから、アクションを PHP に変換してみてください。また、PHP に wkhtmltopdf.exe を実行する適切な権限があり、C:/EXTREM.pdf に書き込む適切な権限があることも確認してください。

于 2012-08-06T09:54:29.167 に答える