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.