22 ноября 2012 г.

wkhtmltopdf и долгий javascript

Случилось так, что необходимо мне было сгенерировать pdf на основе html странички с большим количеством графиков на js.  Сделал с помощью wkhtmltopdf и вроде бы всё работало, но иногда графики отрисовывались не полностью. Складывалось впечатление, что в какой то случайный момент времени вебкиту надоедает ждать исполнение кода и он делает скриншот того, что уже уже есть.

 Покопался в доке, нашёл несколько интересных параметров:
  • --javascript-delay
  • --debug-javascript
  • --no-stop-slow-scripts
Прикрутили задержку на побольше, приказали не тормозить яваскрипт и врубили дебаг. Всё осталось как прежде, но благодаря дебагу вылезло 3 варнинга яваскрипта о неких неопределённых переменных. Начали раскапывать и дошли до того, что некоторые js скрипты, подключенные в коде страницы, доходят до вебкита не полностью (О.о), притом что в браузере эта страничка отрабатывает на все сто.

В итоге помогло отключение gzip сжатия статики для юзерагента вебкита. То бишь вебкит не до конца распаковывал сжатые nginx-ом js файлы.

Комментариев нет: