Forme: движок для генерации PDF из HTML и CSS на JavaScript

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 →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте