🔥

Тред (Влад Шилов)


Большая часть проблем, которые в 2017 году были у нас в рендеринге PDF из HTML+CSS, были вызваны тем, что Wicked PDF использовал Qt Webkit, который работал с устаревшей на несколько лет версией движка Webkit. 👇

Это, к слову, стало одной из причин закрытия PhantomJS, который тоже работал на Qt Webkit. Вот интересное интервью с мэйнтейнером PhantomJS на эту тему: medium.com/devschacht/pha…

Пока мы думали, что же делать, команда Хрома выпустила Puppeteer и все недовольные пользовали Wicked PDF, включая нас, начали мигрировать на него. Генерация PDF через Puppeteer, по сути, аналогична тому, что вы откроете Print в Chrome и вместо принтера выберете "Сохранить в PDF"

Мы переделали архитектуру рендеринга и сделали новый изолированный сервис, который запускал Puppeteer. Сам код для получение PDF с помощью Puppeteer был простым и выглядел примерно так:
notion image

Что не маловажно, мы не удалили наш Wicked PDF рендерер. И он, и наш новый сервис работали с HTML+CSS, а значит были совместимы. Поэтому настроили архитектуру таким образом, чтобы в случае падения нового движка, рендеринг резюме временно переходил на старый.

После миграции на Puppeteer жизнь стала в разы легче, PDF-ки стали рисоваться без багов, а клиенты стали на порядок довольней. Однако, в 2018 году стало понятно, что эпопея с рендерингом и превью PDF не закончилась...