Skip to content

PDF Generator Runner

Описание

runner-pdf-generator — раннер для генерации PDF-документов из HTML-шаблонов с подстановкой переменных. Принимает HTML-разметку, подставляет переменные и конвертирует результат в формат PDF.

Возможности

  • Генерация PDF из HTML-шаблонов
  • Подстановка переменных по маске
  • Автоматическая конвертация HTML → PDF
  • Загрузка готового документа как артефакт

Конфигурация

Общие параметры runner-common

См. Общая документация.

Специфичные параметры

PDF Generator не имеет специфичных параметров — используются только общие параметры runner-common.

Семантика команды

Command

Содержит HTML-шаблон документа. Поддерживается полная HTML-разметка:

html
<!DOCTYPE html>
<html>
  <body>
    <h1>Отчет за {{ year }}</h1>
    <p>Пользователь: {{ userName }}</p>
    <table>
      <tr><th>ID</th><th>Название</th></tr>
      <tr><td>{{ item_id }}</td><td>{{ item_name }}</td></tr>
    </table>
  </body>
</html>

Variables

Список переменных для подстановки. Каждая переменная имеет name и value:

Variables: [
  { name: "year", value: "2025" },
  { name: "userName", value: "Иван Иванов" },
  { name: "item_id", value: "123" },
  { name: "item_name", value: "Товар" }
]

Формат подстановки

Переменные подставляются по маске :

{{ year }}      → 2025
{{ userName }}  → Иван Иванов

Допустимые имена переменных: буквы, цифры и подчеркивание, начинаются с буквы или подчеркивания.

Результат

Артефакт

  • Имя файла: document.pdf (по умолчанию)
  • Кастомизация: через переменную PDF_FILENAME
  • Формат: PDF (A4, portrait)
  • Содержимое: сконвертированный HTML с подставленными переменными

Статус команды

json
{
  "job_id": "command-id",
  "status": "completed",
  "output": "PDF artifact generated: document.pdf",
  "artifact_id": "artifact-id"
}

Примеры использования

Простой документ

Command:

html
<h1>Договор</h1>
<p>Дата: {{ date }}</p>
<p>Клиент: {{ client_name }}</p>

Variables:

date: "01.01.2025"
client_name: "ООО Ромашка"

Табличный отчет

Command:

html
<h2>Отчет о продажах</h2>
<table border="1">
  <tr>
    <th>Продукт</th>
    <th>Количество</th>
    <th>Сумма</th>
  </tr>
  {{ table_rows }}
</table>
<p>Итого: {{ total }}</p>

Variables:

table_rows: "<tr><td>Товар А</td><td>10</td><td>1000</td></tr>"
total: "1000 руб."

Кастомное имя файла

Variables:

PDF_FILENAME: "contract_2025.pdf"

Процесс генерации

  1. Получение HTML-шаблона из Command
  2. Подстановка переменных по маске
  3. Конвертация HTML в PDF (A4, portrait, отступы 10mm)
  4. Сохранение как document.pdf (или имя из PDF_FILENAME)
  5. Загрузка артефакта в хранилище
  6. Возврат artifact_id в статусе команды

Ограничения

  • Поддерживается базовая HTML-разметка и CSS
  • JavaScript не выполняется
  • Для конвертации используется wkhtmltopdf

Остановка

Корректно обрабатывает SIGINT и SIGTERM.