web-dev-qa-db-ja.com

wkhtmltopdfでのJavaScriptのデバッグ

Wkhtmltopdfをデバッグモードで実行したときのjavascriptデバッグの出力を確認できる場所(--debug-javascript)

20
Janusz Krawiec

WKHTMLTOPDFでjavascriptをデバッグするもう1つの(最も簡単な)方法は、WKHTMLTOPDFで使用される基盤となるブラウザーであるQTブラウザーをダウンロードし、ブラウザー内からページのjavascriptの実行を検査することです。

あなたはそれをダウンロードすることができます ここ

QTでJavaScriptをデバッグする手順 ここ

基本的に、ChromeまたはFirefoxの場合と同じように、QTブラウザでJavaScriptをデバッグできます。

34
CShark

Test.htmlのレンダリング

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    BODY
    <script>
      console.log('Hi!');
    </script>
  </body>
</html>

このような

wkhtmltopdf test.html test.pdf --debug-javascript

このようなものを返す必要があります

Loading pages (1/5)
Warning: :0 Hi!                                                   
Resolving links (2/5)                                              
Counting pages (3/5)                                                      
Printing pages (5/5)                                                      
Done 
17
Jasper

Daffy Punksの答えは正しいですが、数週間前に追加のアイデアがあり、それは私を大いに助けました。これを共有したい:PDF内に表示する

PDFのレイアウトをレンダリングするとき、追加の(非表示)DIV #pdf_errorsを配置します

そして、ソースの非常に早い段階で-#pdf_errorsがここにある場合-私はポイントコンソール出力にこのdivを埋めさせ、エラーが発生した場合はそれを表示します。実際にはデバッグしていませんが、少なくとも今は何が問題になっているのかがわかります。

Coffeescriptのソース、私のプレーンなjavascriptの時代はずっと過ぎています...

if ($pdf=$("#pdf_is_here")).length
    for type in ["log","warn","error"]
        do (type) =>
            console[type]= (a...) =>
                $pdf.append("<div class='#{type}'>#{s}</div>") for s in a

    window.onerror= (messageOrEvent, source, lineno, colno, error) =>
        $pdf.append("<div class='critical'>#{messageOrEvent}</div>")
        $pdf.show()

    $pdf.hide() # just in case css is not here
6
halfbit