Forme: движок для генерации PDF из HTML и CSS на JavaScript
Forme — это движок для работы с документами на JavaScript, написанный на Rust и скомпилированный в WASM. Он позволяет создавать PDF-документы на основе уже имеющегося HTML и CSS, либо генерировать их из компонентов React, Svelte, Vue и Preact, минуя браузеры.
Проект решает проблему, с которой сталкиваются многие разработчики: необходимость борьбы с CSS-разбивкой страниц и отсутствие адекватных инструментов для динамических данных. Forme способен быстро рендерить документы без использования headless браузеров, что обеспечивает высокую производительность. Это может быть полезно в веб-приложениях, где требуется автоматическая генерация PDF, например, для отчётов или инвойсов.
Запуск прост — достаточно выполнить команду npx @formepdf/html invoice.html -o invoice.pdf, чтобы получить PDF из HTML. Однако стоит отметить, что система всё ещё на ранней стадии, и документация охватывает лишь часть возможностей. Учти, что потребуется поддержка современных браузеров, чтобы получить оптимальные результаты.
Проект Forme представляет собой движок для создания документов на JavaScript, который написан на Rust и компилируется в WASM. Он позволяет рендерить HTML и CSS для печати без использования браузера. Это решение предлагает пользователям удобные инструменты для генерации PDF-документов прямо из их существующих HTML-страниц или компонентов, созданных с помощью React, Svelte, Vue или Preact.
Зачем это нужно
В отличие от многих других PDF-инструментов, Forme не требует подключения к headless browser, таким как Chrome, чтобы создавать PDF. Это решение было разработано для того, чтобы упростить процесс рендеринга документов, обеспечивая при этом высокую скорость работы и возможность работать на любых платформах — будь то Node.js, браузер или edge-сервера.
Как установить и запустить
Для начала работы с Forme, ты можешь использовать команду для генерации PDF из HTML:
npx @formepdf/html invoice.html -o invoice.pdf
Если у тебя нет готового HTML, ты можешь подключить библиотеку и создавать компоненты для PDF-документов. Вот базовые шаги для установки:
npm install @formepdf/cli @formepdf/react @formepdf/core
После этого ты можешь использовать следующий пример кода для генерации PDF-документа:
const pdf = await renderDocument(
Invoice #2024-001
Widget Pro
$49.00
);
Возможности
Forme предоставляет множество функций для создания PDF-документов, в том числе:
- Поддержка динамических разметок с использованием CSS и компонентов.
- Автоматическое управление переносами строк и разбиением на страницы.
- Поддержка встроенных шрифтов и возможность работы с различными типами медиа (JPEG, PNG, SVG).
- Загрузка пользовательских шрифтов с автоматическим подмножением.
- Возможность создания интерактивных форм с использованием компонентов AcroForm.
- Генерация PDF/UA и PDF/A документов для соответствия стандартам доступности и архивирования.
Ограничения
При использовании Forme стоит учитывать, что он не генерирует или не проверяет содержимое формы EN 16931, то есть пользователи должны предоставлять XML-содержимое (например, из своей ERP-системы) самостоятельно. Также следующие функции не поддерживаются: рендеринг в браузере с использованием сложных CSS, требующих особой обработки, а также экзотические шаблоны для сложных графиков.
Полная документация и дальнейшие примеры использования доступны на официальном сайте: docs.formepdf.com.
Открыть на GitHub: danmolitor/forme →
RepoRadar