Debugging javascript in wkhtmltopdf

后端 未结 3 540
没有蜡笔的小新
没有蜡笔的小新 2021-01-01 13:57

Where I can see the output of javascript debug when wkhtmltopdf runs in debug mode (--debug-javascript)

相关标签:
3条回答
  • 2021-01-01 14:41

    Another (I would say easiest) means of debugging javascript in WKHTMLTOPDF is to download QT Browser, the underlying browser used by WKHTMLTOPDF, and to inspect the javascript execution for your page from within the browser.

    You can download it from here

    Instructions on debugging javascript in QT here

    You can basically debug your JavaScript in QT Browser just as you would in Chrome or Firefox.

    0 讨论(0)
  • 2021-01-01 14:45

    Rendering test.html

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

    like this

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

    should return something like this

    Loading pages (1/5)
    Warning: :0 Hi!                                                   
    Resolving links (2/5)                                              
    Counting pages (3/5)                                                      
    Printing pages (5/5)                                                      
    Done 
    
    0 讨论(0)
  • 2021-01-01 14:46

    Although Daffy Punks answer is correct, I had an additional idea some weeks ago, that helped me a lot. This I want to share: Show it inside PDF

    When rendering the layout for PDF I put an additional (hidden) DIV #pdf_errors

    And very early in source - if #pdf_errors is here - I let point console output to fill this div, and on error - I show it. Its not really debugging, but at least I see now what was going wrong.

    Source in coffeescript, my plain javascript times are long gone ...

    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
    
    0 讨论(0)
提交回复
热议问题