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-шаблонам визуальную поверхность редактирования, не превращая среду выполнения в браузер.
См. также
- Полный справочник по API gPdf — эндпоинты, форма запроса, ошибки.
- Почему рендер PDF на edge становится важным после 10 000 счетов в день — подробная математика задержки.
- PDF/A и Factur-X для инженеров — релевантно, если к вашей нагрузке применяются требования ЕС к электронным счетам.