Сделайте Chrome безголовым, чтобы дождаться Ajax перед печатью в PDF

Я пытаюсь использовать Chrome Headless для печати своей веб-страницы в файл PDF. В файле PDf нет данных, потому что безголовый хром печатает его до завершения команд ajax.

Есть идеи, как заставить его подождать?

Вот команда, которую я сейчас использую:

chrome --headless http://localhost:8080/banana/key --run-all-compositor-stages-before-draw --print-to-pdf=C:\\tmp\\tmp.pdf

person Gil Shamgar    schedule 02.04.2018    source источник
comment
Быстрый поиск в Google показывает, что еще несколько человек столкнулись с этой проблемой. Вы пробовали использовать Puppeteer для программного запуска Chrome Headless? вместо? Он может открывать такие свойства, как запросы в полете, которые вы можете использовать для управления задержкой, или, если хотите, вы можете даже вручную включить задержку по времени.   -  person Mike Hill    schedule 02.04.2018
comment
@MikeHill Puppeteer похоже на то, что нужно, спасибо за предложение! Он может дождаться загрузки страницы и простоя сети, а также вы получите полный контроль над макетом PDF.   -  person OverZealous    schedule 31.05.2018


Ответы (1)


chrome --headless http://localhost:8080/banana/key --run-all-compositor- этапы-перед-рисованием --print-to-pdf = C: \ tmp \ tmp.pdf --virtual-time-budget = 10000

Попробуйте это, виртуальный бюджет времени - это параметр, который может задержать его.

person Izayoi Sakuya    schedule 12.04.2018
comment
Это также положительно влияет на веб-шрифты, даже если шрифты загружаются с локального диска. В противном случае у Chrome возникают проблемы с загрузкой некоторых веб-шрифтов вовремя ... странный мир. - person JepZ; 19.07.2018
comment
Работает как шарм. Спасибо за указание на это. Если подумать, очевидно, что Chrome не может угадать, когда страница действительно готова для создания снимка экрана. - person Sir Hackalot; 01.11.2018
comment
--virtual-time-budget указывается в миллисекундах, для справки в будущем. - person JimJty; 29.11.2018
comment
@Ivan: аргумент указывает максимальное время ожидания хрома (в данном случае 10000 мс). Он продолжится раньше, если загрузка страницы завершится раньше. - person lauxjpn; 23.12.2018
comment
Это успешно ожидает загрузки шрифтов Google, на которые есть ссылка в файле CSS через @import. - person lauxjpn; 23.12.2018
comment
есть также вариант --timeout, но он не работал у меня так же, как --virtual-time-budget - person Wlad; 28.07.2019