Инструмент для тестирования и разработки шаблонов в формате Fanzilla Template Service.
Основан на шаблонизаторе Apache FreeMarker (ссылка на документацию: https://freemarker.apache.org/docs/index.html), с добавлением собственного формата описания ресурсов шаблона и упаковки (Template Meta File), а также с расширенным функционалом, задействованным в сервисе.
Позволяет генерировать PDF таким, как он будет получен после заливки шаблона на сервер.
Для генерации PDF используется Headless Chrome, поэтому при разработке шаблонов для распечатки можно использовать все доступные CSS свойства и задействовать минимальный набор JS (минимальный, так как скорость отрисовки - КРИТИЧНЫЙ фактор).
При разработке шаблонов, ориентированных на отображение в вебе стоит учесть основные актуальные браузерные движки - Chrome, Firefox, Safari и использовать вендорные свойства CSS
Обязательно нужно прикладывать все используемые шрифты, как ресурсы и явно добавлять их на страницу. В Headless Chrome шрифтов по умолчанию самый минимум, не факт, что используемый будет входить в их число. Также не факт, что устройства клиентов будут иметь этот шрифт. (Да, даже если это Times New Roman или Comic Sans)
{
// Название шаблона
"name": "TEMPLATE_NAME",
// Версия шаблона (по умолчанию используйте 1)
"version": "1",
// Основной файл шаблона
"content": "index.ftl",
// Описание всех ресурсов, используемых в шаблоне
"resources": [
{
// Название ресурса, по которому он доступен из шаблона
"name": "logo",
// Путь к файлу относительно корня шаблона
"file": "assets/logo.png",
// Тип файла (MIME, content-type)
"contentType": "image/png"
},
{
"name": "style",
"file": "assets/style.css",
"contentType": "text/css"
},
{
"name": "footer",
"file": "footer.ftl",
"contentType": "text/plain"
}
]
}
example/simple_templatedocker-compose.yml:
./datadocker-compose uphttp://localhost:3000,
сгенерированный по нему PDF файл - http://localhost:3000/out.pdf
(в терминале эти адреса тоже будут выведены)Генерация QR кода:
<img src="${getQRCode("hello",256,200)}"/>
png, jpg
Пример использования:
<img src="${getQRCodeAndLogo("hello",512,460, "logo")}"/>
Использование ресурсов в шаблонах:
<#include "resource:footer">
template_meta.json<img src="${getResourceUrl("logo")}"/>
<link rel="stylesheet" type="text/css" href="${getResourceUrl("style")}">
<img src="${getResourceBase64("logo")}"/>
Изменять размер получаемого PDF можно свойством CSS:
@page {
size: 105mm 148mm;
}
Content type
Image
Digest
Size
128.3 MB
Last updated
almost 6 years ago
docker pull limebeck/template-editor