Отладка JavaScript в wkhtmltopdf

Где я могу увидеть выходные данные отладки javascript, когда wkhtmltopdf работает в режиме отладки (--debug-javascript)

4 ответа

Решение

Другое (я бы сказал, самое простое) средство отладки javascript в WKHTMLTOPDF - это загрузка QT Browser, базового браузера, используемого WKHTMLTOPDF, и проверка выполнения javascript для вашей страницы из браузера.

Вы можете скачать его здесь

Инструкция по отладке javascript в QT здесь

Вы можете в основном отлаживать свой JavaScript в QT Browser так же, как в Chrome или Firefox.

Рендеринг 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 

Хотя ответ Даффи Панкс правильный, несколько недель назад у меня была дополнительная идея, которая мне очень помогла. Это я хочу поделиться: показать это в 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

Чтобы увидеть ошибки js, сделанные wkhtmltopdf, используйте "" в вашей команде.

ПОЖАЛУЙСТА! не используйте тихий режим для wkhtmltopdf -> ("" или ""), потому что это заглушит ваши ошибки js, и вы ничего не увидите.

ТАКЖЕ! если вы хотите сделать что-то вроде console.log(), если вы хотите более подробно отладить свой js -> вы можете использовать:и вы увидите содержимое в ответе wkhtmltopdf (убедитесь, что вы конвертируете переменную, которую хотите выдать как ошибку, в строку (если это объект или что-то в этом роде..))

документация wkhtmltopdf:https://wkhtmltopdf.org/usage/wkhtmltopdf.txt

Другие вопросы по тегам