2016-09-20 10 views
0

しばらくの間、私はwfhtmltopdfをpdfドキュメントのオンザフライ世代用に使用しました。一般に、これはPHPの他のツールと比較してはるかに早いです。wkhtmltopdfでjavascriptやhttpのエラーを解決するにはどうしたらいいですか?

しかし、このプロセスの最も基本的なデバッグでさえ、大きな苦痛です。 通常のブラウザでは、alert(var);またはconsole.log(var);となり、「var」がundefinedであることがわかります。再び、ブラウザコンソールのどこかで404または500 httpエラーが簡単に表示されます。例えばこのため

テイク:

wkhtmltopdf.exe http://localhost/mypage.html C:/temp/myfile.pdf 

pdfファイルが作成されます行いますがjavscriptやAJAXに依存して特定の側面が欠落しているので、不完全です。

wkhtmltopdfでは、mypage.htmlに存在する場合、これらの種類のエラーをどのように調べるのが最適でしょうか?

答えて

2

--debug-javascriptコマンドラインオプションを使用する必要があります。私は、Linuxでそれをテストしたが、それはWindows上で、おそらく同じです:

$ echo '<script>console.log("YAY!");</script>' > test.html 
$ wkhtmltopdf --debug-javascript test.html test.pdf 
Loading pages (1/6) 
Warning: file:///tmp/test.html:1 YAY! 
Counting pages (2/6) 
Resolving links (4/6) 
Loading headers and footers (5/6) 
Printing pages (6/6) 
Done 

404と500エラーの場合は、私はよく覚えている場合wkhtmltopdfは、あまりにも、コマンドライン上のいくつかのものを印刷しなければなりません。

+0

ありがとう@ lorenzo-s:トンネルの端に荒れた光。コマンドラインでrawコマンドを実行すると、次のようにわかりにくいものが出てきます: 'Warning:undefined:0 TypeError: 'null'はオブジェクトではありません。さて、私は実際にPHP経由でwkhtmltopdfを呼び出しています。さて、 'shell_exec()'と 'exec()'を使って、それらのどれもphpで何も出力しません! –

+0

'TypeError: 'null'はオブジェクトではありません.'おそらく、null参照のプロパティにアクセスしようとしています。残念なことに、どこにいらっしゃるのかわからないので、ランダムな 'console.log()'を追加して停止する行を探してみてください。 PHPから 'wkhtmltopdf'を呼び出すと何も変わりません。出力がstdoutではなくstderrにあるため、出力を見ることができません。私はWindows上でどのように動作するのかわかりませんが、Linuxでは '2>&1'をコマンドに追加する必要があります。 –

+0

私はテストのためにコマンドラインに固執し、PHP出力の問題を気にしませんでした。そして、私は最終的に、行ごとの 'console.log()'を使って問題のスクリプトブロックを追跡することができました。確かに、私が今日学んだ最大のことは、あなたが実際にwkhtmltopdfを使って 'console.log'できることです!どうもありがとうございます。 –

1

私にはあなたのブラウザでソースページを開く必要があります。ブラウザのデバッガで問題を追跡できます。ページが完璧であることがわかったら、wkhtmltopdfで実行できます。

+0

ご入力いただきありがとうございます。ソースページは実際には完全に動作していますが、PDFは動作しません。 –

+0

ページの要素がjavascriptで構築されている場合、wkhtmltopdf simpleは内部で正しく処理しない可能性があります。できるだけ純粋なHTML/CSSでできるだけページを再構築しようとします。 –

+0

これが失敗した場合は、常にTCPDFを試して出力PDFを完全に制御できます。それは完全なコントロールを提供しますが、急な学習曲線の代償を払っています。急いで何かが必要な場合は、オプションではありません。 –

関連する問題