debugging 在wkhtmltopdf中调试javascript

gg0vcinb  于 2022-11-14  发布在  Java
关注(0)|答案(4)|浏览(189)

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

vcudknz3

vcudknz31#

在WKHTMLTOPDF中调试javascript的另一种(我认为是最简单的)方法是下载QT Browser(WKHTMLTOPDF使用的底层浏览器),并从浏览器中检查页面的javascript执行情况。
您可以从here下载
QT here中调试javascript的说明
基本上,您可以在QT浏览器中调试JavaScript,就像在Chrome或Firefox中一样。

xmq68pz9

xmq68pz92#

呈现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
x6h2sr28

x6h2sr283#

虽然达菲朋克的答案是正确的,我有一个额外的想法几个星期前,这帮了我很多。这我想分享:在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
pod7payv

pod7payv4#

要 查看 wkhtmldopdf 产生 的 js 错误 , 请 在 命令 中 使用 " --debug-javascript " 参数 。
请 ! 不要 使用 wkhtmltopdf - 〉 ( " -q " 或 " --quiet " ) 的 安静 模式 , 因为 它 会 使 您 的 js 错误 安静 下来 , 您 将 看不到 任何 东西 。
另外 , 如果 你 想 创建 类似 console.log ( ) 东西 , 如果 你 想 更 详细 地 调试 你 的 js , 你 可以 使用 :throw new Error(yourVar) , 您 将 在 wkhtmltopdf 的 响应 中 看到 内容 ( 确保 将 您 要 作为 错误 抛出 的 变量 转换 为 string ( 如果 它 是 一 个 对象 或 其他 对象 .. ) )
wkhtmltopdf 文档 :https://wkhtmltopdf.org/usage/wkhtmltopdf.txt 的 最 大 值

相关问题