Инструмент Folio экономит деньги компании и сам делает счета с QR-кодами.
Если ваша компания генерирует PDF-документы - счета, акты, отчёты - и платит за это облачному сервису, то каждый месяц вы отдаёте деньги за то, что вполне можно делать самостоятельно, быстрее и без передачи данных на чужие серверы. Folio - это библиотека с открытым кодом для создания PDF, написанная на Go - языке программирования, который ценят за скорость и экономность в потреблении памяти. Лицензия Apache 2.0: бесплатно, в том числе для коммерческого использования.
Folio превращает HTML-вёрстку в PDF без браузера
Самый распространённый способ сделать красивый PDF из кода - запустить в фоне полноценный браузер Chrome, открыть в нём страницу и «распечатать» её в файл. Это работает, но платить за это приходится дорого: браузер занимает в памяти в 10-20 раз больше места, чем нужно для самой задачи. На сервере, который обрабатывает тысячи документов в час, это превращается в настоящую проблему с железом и деньгами.
Folio идёт другим путём. Он понимает HTML и CSS - включая современные способы вёрстки Flexbox и Grid, которые сегодня используют все веб-разработчики, - и сам, без браузера, превращает это в PDF. Никакого Chrome, никакого Python в зависимостях. Вся библиотека компилируется в один исполняемый файл, который просто работает.
Это не просто быстрее. Это принципиально другая архитектура: вместо «притворяемся браузером» - честный движок вёрстки, который считает положение каждого элемента на странице математически точно.
Цифровые подписи и штрих-коды - без сторонних сервисов
Отдельно стоит сказать о том, что обычно требует подключения дополнительных инструментов. Folio умеет подписывать документы цифровой подписью по стандарту PAdES - это тот формат, который признаётся юридически значимым в большинстве стран, включая Россию. Подпись накладывается прямо при генерации, сертификат хранится у вас, никуда не уходит.
Штрих-коды - QR, Code128, EAN-13 - генерируются встроенными средствами. Если вы делаете этикетки для склада или билеты на мероприятие, не нужно обращаться к стороннему сервису за каждым кодом. Всё происходит локально, на вашем компьютере или сервере.
Ещё одна деталь, которая выглядит скучно, но на практике очень важна: Folio поддерживает формат PDF/A. Это специальная версия PDF, которая гарантирует, что документ будет выглядеть одинаково через 20 лет на любом устройстве. Для архивного хранения договоров или бухгалтерских документов это не опция, а требование.
Детерминизм: один и тот же файл каждый раз
Есть деталь, о которой разработчики Folio говорят особо, и она заслуживает внимания. Библиотека гарантирует так называемый детерминизм: если вы дважды сгенерируете документ из одних и тех же данных, вы получите два абсолютно идентичных файла - вплоть до последнего байта.
Звучит как техническая мелочь, но на практике это означает, что вы можете сравнивать файлы автоматически, хранить только изменения, а не полные копии, и быть уверены, что повторная генерация счёта за прошлый месяц даст ровно тот же документ, что был отправлен клиенту. Многие библиотеки этого не гарантируют - каждый раз могут появляться незначительные различия в метаданных или порядке объектов внутри файла.
Движок вёрстки построен на иммутабельных функциях - это значит, что при расчёте положения элементов на странице сами элементы не меняются. Звучит как программистская абстракция, но именно это исключает целый класс случайных ошибок, когда текст «едет» при повторном рендеринге.
Где Folio пока уступает
Честно о слабых сторонах. Проект очень молодой - активная разработка началась совсем недавно. Это означает, что способ, которым программы общаются с библиотекой, ещё может измениться. Если вы строите на этом что-то серьёзное прямо сейчас, закладывайте время на возможные обновления.
Готовых шаблонов в комплекте нет. Хотите счёт-фактуру или резюме - вёрстайте сами на HTML. Для команды с разработчиком это не проблема, но если вы рассчитывали на набор готовых бланков, придётся подождать или сделать самому.
Наконец, для глубокой настройки нужен Go. Для базовых операций - объединить несколько PDF в один файл или извлечь из документа текст - есть инструмент, управляемый текстовыми командами, и он не требует программирования. Но если хотите нестандартную логику вёрстки, без знания языка не обойтись.
Сколько стоит не платить Adobe
Облачные сервисы генерации PDF берут деньги по-разному, но порядок цифр такой: Adobe Document Services - от 1 800 рублей в месяц за небольшой объём, DocRaptor - от 1 300 рублей. При серьёзных объёмах документов счёт идёт на десятки тысяч рублей в год. Folio стоит ноль рублей и работает на вашем сервере, а не на чужом.
Попробовать библиотеку можно прямо в браузере - у проекта есть веб-песочница, где достаточно вставить HTML и посмотреть, что получится в PDF. Никакой установки, никакой регистрации.
Использование целого браузера для рендеринга одной страницы текста - это, по большому счёту, признание того, что нормального инструмента под рукой не было. Folio претендует на то, чтобы стать таким инструментом для тех, кто пишет на Go.
Вопрос к тем, кто занимается автоматизацией документов: вы уже перешли с браузерного рендеринга на что-то нативное, или Chrome в фоне до сих пор справляется?
Источник: Folio