Открытая библиотека Ruby для генерации файлов Word DOCX
Мощный бесплатный Ruby API, позволяющий разработчикам легко создавать документы Word DOCX. Позволяет разрабатывать документ.'s Layout, Apply Styles, and Use Mail Merge Fields as Placeholders for Dynamic Content.
Что такое библиотека Sablon?
В мире разработки программного обеспечения генерация динамических документов, таких как отчёты, счета‑фактуры или письма, является обычной задачей. Хотя многие библиотеки могут создавать документы с нуля, они часто требуют крутого обучения и утомительного кодинга для правильного форматирования. Здесь на выручку приходит Sablon, мощная открытая библиотека Ruby. Sablon меняет процесс генерации документов, используя знакомый Microsoft Word и мощь Ruby, позволяя создавать сложные и красиво оформленные документы с минимальными усилиями. Поддерживает создание Word Docx, вставку контента через поля MailMerge, расширенную поддержку форматирования, добавление аннотаций в шаблоны, конфигурируемое преобразование HTML и CSS и многое другое.
В ядре Sablon — процессор шаблонов документов для файлов .docx. Он использует встроенную в Word функцию Mail Merge, позволяя создавать шаблоны в привычной среде. Вы можете разрабатывать макет документа, применять стили и использовать поля Mail Merge как заполнители для динамического контента. Затем Sablon берёт этот шаблон и контекст данных (Ruby‑хеш), создавая окончательный документ Word, заполненный данными. Такой подход отделяет слой представления (шаблон Word) от слоя данных (ваш код Ruby), делая процесс генерации чистым и поддерживаемым. Синтаксис интуитивно понятен тем, кто знаком с Ruby и шаблонизаторами. Это удобно для дизайнеров; контент и дизайн полностью разделены. Дизайнеры могут работать прямо в Word, не трогая код.
Начало работы с Sablon
Рекомендуемый способ установки Sablon — использовать RubyGems. Пожалуйста, выполните следующую команду для беспроблемной установки.
Вставка контента с полями Word через Ruby
Самая базовая функция — вставка динамического контента. Открытая библиотека Ruby Sablon использует синтаксис встроенных полей Word для определения заполнителей. В вашем шаблоне Word вы вставляете код поля там, где нужен динамический контент. Sablon заменит это поле вашим значением. Пример показывает, как разработчики могут динамически вставить кусок контента, чтобы поприветствовать пользователя.
Как динамически вставить текст в файл Word Docs через Ruby?
require 'sablon'
template = Sablon.template(File.expand_path('~/template.docx'))
context = {
name: "Sarah Connor"
}
template.render_to_file(File.expand_path('~/output.docx'), context)
Template:
Hello, «name»! Welcome to our platform.
Output:
Hello, Sarah Connor! Welcome to our platform.
Преобразование HTML в WordML
Одна из выдающихся особенностей Sablon — возможность преобразования HTML в WordProcessingML (XML‑формат, используемый файлами .docx). Это чрезвычайно полезно, когда нужно вставить богатый текстовый контент, такой как отформатированные абзацы, списки или таблицы, из базы данных или редактора текста. Sablon преобразует строку HTML в правильно отформатированный раздел в документе Word, сохраняя заголовки, полужирный и курсивный текст, а также форматирование списков. Приведён простой пример, показывающий, как загрузить существующий шаблон и преобразовать HTML‑контент в файл Word Docx внутри Ruby‑приложения.
Как преобразовать HTML‑контент в файл Word Docx через библиотеку Ruby?
require "sablon"
template = Sablon.template(File.expand_path("template.docx"))
html_content = "Это подзаголовок
Это абзац с жирным и курсивом текстом.
- Первый элемент
- Второй элемент
"
context = {
article_content: Sablon.content(:html, html_content)
}
template.render_to_file(File.expand_path("output.docx"), context)
Conditional Rendering
Динамическая вставка изображений через Ruby
Открытая библиотека Sablon включает полезную функцию динамической вставки изображений в документы Word Docx с помощью Ruby. Всего несколькими строками кода разработчики могут динамически вставлять изображения в свои документы. Вы можете указать файл изображения, и Sablon встроит его в документ. Пример демонстрирует, как реализовать динамическую вставку изображений в документы Word.
Как динамически вставить изображение в Word Docx через библиотеку Ruby?
// You would have a placeholder image in your template with a special filename like «=company_logo».
context = {
company_logo: Sablon.content(:image, "path/to/your/logo.png")
}
Условный рендеринг через Ruby
Библиотека Sablon поддерживает условные блоки, позволяя пользователям показывать или скрывать части их Word‑документа в зависимости от наличия или значения переменной. Это идеально для настройки документов под конкретные условия. Например, следующий пример показывает, как пользователи могут задавать команды для скрытия или отображения определённой информации внутри Word‑документа. Если show_extra_info равно true, содержимое между тегами if и endIf будет включено в финальный документ. Если значение false или nil, содержимое будет удалено.
Как отображать или скрывать части документов Word Docx с помощью Ruby?
context = {
show_extra_info: true # or false
}