21

当 wkh​​tmltopdf 在调试模式下运行时,我可以在哪里看到 javascript 调试的输出 (--debug-javascript)

4

3 回答 3

42

在 WKHTMLTOPDF 中调试 javascript 的另一种(我想说最简单的)方法是下载 WKHTMLTOPDF 使用的底层浏览器 QT Browser,并从浏览器中检查页面的 javascript 执行情况。

你可以从这里下载

在此处调试 QT 中的 javascript 的说明

您基本上可以像在 Chrome 或 Firefox 中一样在 QT 浏览器中调试 JavaScript。

于 2015-10-15T04:39:28.040 回答
19

渲染 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 
于 2014-02-13T15:00:37.483 回答
7

尽管 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
于 2017-07-18T13:44:11.147 回答