Сравнения

gPdf против Puppeteer

Сравнение gPdf и Puppeteer: API JSON в PDF на edge против headless Chromium на сервере. Задержка, стоимость, среда выполнения и задачи, где каждый подход действительно сильнее.

Кратко

Puppeteer — универсальный инструмент автоматизации браузера, который умеет печатать страницы в PDF. gPdf — PDF-движок для структурированных документов, работающий на edge за единицы миллисекунд. Для счетов, транспортных этикеток и выписок в боевой эксплуатации gPdf дает задержку ниже в 50-100 раз и стоимость ниже в 10-20 раз. Если нужно конвертировать произвольные живые веб-страницы или делать PDF-снимки существующего HTML, Puppeteer остается правильным выбором.

Бок о бок

Критерий gPdf Puppeteer Преимущество
p50 рендера (счет A4 на 1 страницу)
Оба числа измерены на одном входном документе за 1 000 запусков.
3 ms 312 ms gPdf
Холодный старт ~12 ms (первый запрос в новом isolate) 1,5-2,5 s (запуск Chromium) gPdf
Среда выполнения
Puppeteer требует бинарный браузер на 200-800 МБ; gPdf поставляется как WASM-модуль примерно на 2 МБ.
V8-изоляты Cloudflare Workers Долгоживущий Node.js + контейнер Chromium gPdf
Edge-регионы Более 300 Cloudflare PoP Там, где развернут ваш контейнер, обычно 3-6 регионов gPdf
Соответствие PDF/A PDF/A-1b · 2b · 3b · 4 выбирается для каждого запроса Нет встроенной поддержки; нужна постобработка через Ghostscript или veraPDF gPdf
Электронный счет (Factur-X / ZUGFeRD) Встроенный эндпоинт; встраивает CII XML в PDF/A-3b Не поддерживается; нужен отдельный этап обработки gPdf
Векторные штрихкоды
Puppeteer напечатает то, что отрисовала страница, но геометрия штрихкода, тихие зоны и размер под термопринтер остаются ответственностью приложения.
Более 30 встроенных символогий (QR, GS1-128, PDF417, DataMatrix, ...) Зависит от библиотеки штрихкодов на странице, выбора SVG/canvas и размеров для печати gPdf
Шрифты CJK NotoSans CJK встроен; автоматическая подстановка глифов Зависит от шрифтов, установленных в контейнере; нужна настройка ОС gPdf
Точность HTML/CSS-макета Не применимо — gPdf принимает JSON, не HTML Лучший вариант для этого класса задач: рендерит любую веб-страницу. Puppeteer
Лучше для web -> PDF в стиле скриншота Нет Да Puppeteer
Публичная цена для 100 000 одностраничных документов
Puppeteer как библиотека бесплатен. Платной становится служба Chromium, которую команда строит вокруг него.
Basic plan за 5 USD/мес. включает 100 000 страниц Лицензии нет; вы оплачиваете хостинг, хранение, мониторинг и инженерное время gPdf
Стоимость владения в боевой эксплуатации Хостинговый API на edge, визуальный процесс в Studio, шаблоны, шрифты, примитивы штрихкодов, маршруты PDF/A и электронных счетов Контейнеры Chromium, теплый пул, региональная емкость, HTML-шаблоны, шрифты, повторы, наблюдаемость gPdf
Детерминированность (те же входные данные -> те же байты) Да — байт-в-байт одинаковый вывод между изолятами Нет — хинтинг шрифтов и растеризация Chromium меняются между версиями gPdf

Когда что выбрать

Выбирайте gPdf, если
  • Вы создаете структурированные документы: счета, транспортные этикетки, выписки, расчетные листки или билеты.
  • В интерактивном процессе нужен рендер за единицы миллисекунд, например предпросмотр перед отправкой.
  • Нужны PDF/A для архива или электронные счета ЕС Factur-X / ZUGFeRD.
  • Вам надоели давление Chromium на память, стоимость теплого пула для контейнеров или каскады таймаутов на холодном старте.
  • Нужны детерминированные PDF, одинаковые байт-в-байт, для тестов или аудита.
  • Вы рендерите ближе к пользователю и хотите более 300 PoP, а не 3-6 регионов.
Выбирайте Puppeteer, если
  • Вы конвертируете произвольные живые веб-страницы: лендинги, новостные статьи или маркетинговые снимки.
  • Источник истины для документа — HTML/CSS, который уже корректно выглядит в браузере, и вы не хотите переписывать его в JSON.
  • Вы печатаете клиентские JavaScript-визуализации, например графики и панели, которым нужен настоящий браузер.
  • Объем небольшой, меньше 1 000 рендеров в день, а задержка или стоимость одного рендера не критичны.
  • По юридическим или экспертным причинам PDF должен пиксель-в-пиксель совпадать с DOM на экране.
Возможности

gPdf — это edge-native API преобразования JSON в PDF для больших объёмов счетов, документов, транспортных этикеток, штрихкодов, PDF/A и электронных счетов. PDF-рендеринг миллисекундного класса в глобальной edge-сети — оптимизирован для предсказуемой генерации документов промышленного уровня. Цены уровня инфраструктуры, достаточно низкие, чтобы заменить создание и эксплуатацию собственной PDF-инфраструктуры.

Возможности

Puppeteer отлично подходит, когда продукт — веб-страница

Puppeteer управляет настоящим Chromium. В этом его сила. Если источник истины — существующая HTML-страница, панель с JavaScript-графиками, юридический снимок уже отрисованного веб-приложения или экспорт в стиле скриншота, Puppeteer часто оказывается правильным продуктовым выбором.

Ключевой вопрос: ваш PDF действительно является веб-страницей или это структурированный бизнес-документ? Счета, транспортные этикетки, выписки, квитанции, билеты и формы обычно собираются из данных, а не из живого DOM. Для таких процессов запуск полноценного браузера часто оказывается архитектурой тяжелее, чем нужно самому документу.

Тот же артефакт, другая граница продукта

Puppeteer превращает HTML в печатный PDF через Chromium. Приложение отвечает за HTML-шаблоны, правила CSS для печати, установку шрифтов, среду выполнения браузера, емкость воркеров, повторные попытки и региональное развертывание.

gPdf напрямую превращает структурированный JSON в PDF. Приложение отправляет DocumentRequest или template_id + data; рендерер на edge отвечает за выполнение макета, встроенные шрифты, примитивы штрихкодов, профили PDF/A и упаковку электронного счета. Нет процесса браузера, каскада CSS и контейнера Chromium, который нужно держать теплым.

Соответствие задаче: веб-захват против генерации документов

Выбирайте Puppeteer, когда документ должен выглядеть точно как существующая веб-страница или когда финальное визуальное состояние формирует клиентский JavaScript. Это веб-архивы, динамические панели, отчеты с тяжелым DOM и процессы, где переписывание макета в JSON добавит больше риска, чем пользы.

Выбирайте gPdf, когда продукт — именно генерация документов: транспортная этикетка, счет, билет, выписка, сертификат, квитанция или пакет для соответствия требованиям, который должен каждый раз одинаково создаваться из чистых данных.

Время разработки: отладка печати HTML против API-шаблонов

Puppeteer быстро стартует, когда HTML уже есть. Реальное время разработки появляется позже: CSS для печати, разрывы страниц, установка шрифтов внутри контейнеров, крайние случаи с верхними и нижними колонтитулами, размеры штрихкодов и дрейф поведения между версиями браузера.

gPdf начинается со структурированного шаблона. Команды могут писать JSON напрямую, использовать AI для черновика макета, валидного по схеме, или открыть gPdf Studio, чтобы визуально добавлять и перетаскивать текст, таблицы, изображения, фигуры, колонтитулы и штрихкоды. После сохранения шаблона боевые вызовы остаются простыми: template_id + data.

Модель цены: бесплатная библиотека против собственной браузерной службы

У Puppeteer нет лицензионного платежа. Это не делает боевой PDF-сервис на Puppeteer бесплатным.

Стоимость возникает вокруг службы Chromium:

  • Контейнер или бессерверная среда для бинарного браузера.
  • Теплый пул или очередь, чтобы переживать холодные старты.
  • Запас памяти для страниц, шрифтов, изображений и PDF-байтов.
  • Региональное развертывание, если склады или клиенты распределены по миру.
  • Мониторинг, повторные попытки, обновления браузера и патчи безопасности.

gPdf тарифицирует саму генерацию PDF. Basic plan начинается с 5 USD/мес. за 100 000 страниц, а публичная цена сверх лимита начинается с 0,00005 USD за страницу. Нет мест пользователей, отдельных платежей за test/prod-среды и пула Chromium, который нужно эксплуатировать.

Генерация на edge меняет профиль задержки и стоимости

С Puppeteer браузер обычно живет там, где вы его развернули. Если склад, клиент или бэкенд-задача находятся далеко от этого региона, путь рендера включает сетевую задержку плюс работу самого браузера. Добавление регионов означает дублирование браузерной службы, пайплайна развертывания, мониторинга и плана емкости.

gPdf работает на V8-изолятах Cloudflare Workers. Для структурированных PDF рендерер достаточно мал, чтобы запускаться рядом с вызывающей стороной, а не централизовать каждый рендер в одном регионе. Бизнес-эффект — не только более быстрый p50; это еще и удаление регионального парка Chromium из продукта.

Возможности продукта, которые обычно решают сравнение

Для операционных документов список возможностей важен не меньше сырой скорости рендера:

  • Встроенные элементы штрихкодов для транспортных этикеток, билетов и складских документов.
  • Встроенные CJK-шрифты и подстановка шрифтов для разных языков.
  • Профили вывода PDF/A для архивных процессов.
  • Упаковка электронных счетов Factur-X/ZUGFeRD.
  • PDF с паролем и управление метаданными на старших тарифах.
  • Визуальная итерация макета через gPdf Studio.

Puppeteer может поддержать многое из этого через код страницы, настройку браузера или постобработку. Вопрос в том, хочет ли ваша команда владеть всем этим стеком.

Когда Puppeteer всё ещё правильный ответ

Есть категория, где gPdf не конкурирует: произвольная конвертация HTML в PDF. Если документ уже отрисован, источник истины для дизайна — HTML, и нужен настоящий браузер для выполнения JavaScript или совпадения с DOM, Puppeteer остается правильным инструментом.

Если нагрузка небольшая и задержка не важна, операционная стоимость тоже может быть приемлемой. Несколько внутренних экспортов в день не оправдывают переписывание стабильного HTML в JSON.

Форма миграции

Для команд, которые переносят счета или транспортные этикетки с Puppeteer на gPdf, миграция обычно выглядит так:

- // Before: render an HTML template through Chromium
- const browser = await puppeteer.launch({ headless: 'new' });
- const page = await browser.newPage();
- await page.setContent(invoiceHtml);
- const pdf = await page.pdf({ format: 'A4' });
+ // After: POST the structured DocumentRequest
+ const res = await fetch('https://api.gpdf.com/api/v1/template-render', {
+   method: 'POST',
+   headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
+   body: JSON.stringify({ template_id: 'invoice-v2', data }),
+ });
+ const pdf = Buffer.from(await res.arrayBuffer());

Главная работа не в API-вызове, а в том, чтобы один раз собрать шаблон. После этого каждый рендер — один HTTPS POST.

Связанные сценарии генерации PDF

Если вы сравниваете Puppeteer и gPdf, обычно рядом возникают задачи генерации PDF из JSON, PDF счетов, транспортных этикеток, штрихкодов в PDF, PDF/A-архива и электронных счетов Factur-X. Для оценки инфраструктуры также полезен разбор того, почему edge-рендеринг PDF становится важен после 10 000 счетов в день.

FAQ

Puppeteer бесплатен?

Puppeteer бесплатен как библиотека. В боевой эксплуатации стоимость переносится на браузерную службу: контейнеры, память, холодные старты, региональную емкость, мониторинг, повторные попытки и обслуживание.

Может ли gPdf рендерить произвольные HTML-страницы?

Нет. gPdf работает нативно с JSON. Если источник истины — произвольный HTML или живая веб-страница, Puppeteer подходит лучше.

Зачем сравнивать Studio с Puppeteer?

Потому что многие команды используют HTML отчасти ради того, чтобы дизайнеры и разработчики видели результат. gPdf Studio дает структурированным PDF-шаблонам визуальную поверхность редактирования, не превращая среду выполнения в браузер.

См. также