@Markizzio
fullstack-developer

Как генерировать PDF в JS?

Здравствуйте, появился вопрос на счет генерации PDF документов. Необходимо генерировать PDF файл на основе JSON или HTML, рассмотрел 2 варианта, на беке с помощью puppeteer, и на фронте с помощью jsPDF или Print.js, придерживаюсь варианта на беке, потому что документов много, и их количество скорее всего будет расти, и тащить все шаблоны на фронт не очень хочется, да и с кодировкой в jsPDF все не очень хорошо. Собственно интересует какой подход правильнее использовать? Может быть есть какой то не очевидный для меня вариант?
  • Вопрос задан
  • 2841 просмотр
Решения вопроса 3
@salikovpro
По опыту скажу, лучше использовать полноценные инструменты для генерации PDF нежели варианты с автоматическим преобразованием html в pdf. Я бы посоветовал pdfkit.org
Ответ написан
Комментировать
dyuriev
@dyuriev
A posteriori
Из предложенных автором вариантов однозначно puppeteer. На фронте начнете страдать с кроссбраузерностью кода, лимитами (многостраничные pdf вас заставят врасплох), да и качество - на фронте как правило html=>растр=>pdf и все плывет при увеличении. puppeteer (через хромиум) сохраняет честный вектор там где это уместно. Да и верстку html не придется делать под армию браузеров, а только под хромиум заранее известной версии.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
на фронте много вариантов, на бэке самым "точным" будет вариант с хеадлесс хромом, ну или что-то а-ля пупитир, все остальные достаточно глючные и не поддерживают нормальную верстку. Как упомянул Семен Кузнецов - простой вариант - печать в пдф из хрома, собственно это практически аналог хеадлес хрома на бэкенде, только на фронте. Если это не коммерческий продукт для платных юзеров, то этот вариант вообще вне конкуренции.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
catdesign
@catdesign
Веб-разработчик
Тебе генерация массовая нужна?
То есть сгенерировать зачем-то, я даже не могу представить зачем, сотню pdf. Или элементарно, что бы какой-нибудь менеджер нажал кнопочку скачать и ему прилетел PDF файл, например со статистикой?
Ответ написан
@fear-cry
Frontend Developer
Есть еще такой вариант (на чистом бекенде): шаблоны заранее готовить в PDF формате со всеми статическими данными (например, банковскими реквизитами). При запросе скачивания дописывать в пустые поля и отдавать файл. И не придется морочить голову с генерацией PDF с нуля, т.к. дописывать данные в существующий PDF это легкая операция. На проде так и сделали.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы