Sign inSign up

limebeck/template-editor

By limebeck

Updated almost 6 years ago

Image
0

316

limebeck/template-editor repository overview

Редактор шаблонов

Описание

Инструмент для тестирования и разработки шаблонов в формате 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)

Как пользоваться:

  1. Клонировать проект
  2. Собрать в одну папку все исходники:
    • Шаблон
    • JSON файл с данными
    • Meta-файл с описанием шаблона (template_meta.json), который оформить по примеру:
    {
       // Название шаблона
       "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"
           }
       ]
    }
    
    • Все остальные исходники (css, js и т.д.)
    • Пример шаблона можно посмотреть по пути example/simple_template
  3. В файле docker-compose.yml:
    • В разделе volumes указать полный путь к папке с исходниками вместо ./data
  4. Запустить контейнер командой docker-compose up
  5. По умолчанию, шаблон доступен по адресу http://localhost:3000, сгенерированный по нему PDF файл - http://localhost:3000/out.pdf (в терминале эти адреса тоже будут выведены)
  6. Завершить работу с редактором шаблонов можно по нажатию CTRL+C

Дополнительные функции в шаблонизаторе:

  1. Генерация QR кода:

    • getQRCode - генерация простого QR кода. Принимает 3 параметра: данные, ширина картинки, высота картинки. Пример использования:
      <img src="${getQRCode("hello",256,200)}"/>
      
    • getQRCodeAndLogo - генерация QR кода с логотипом внутри. Принимает 4 параметра: данные, ширина картинки, высота картинки, имя ресурса логотипа. Логотип должен быть в формате png, jpg Пример использования:
      <img src="${getQRCodeAndLogo("hello",512,460, "logo")}"/>
      
  2. Использование ресурсов в шаблонах:

    • Для импорта шаблонов друг в друга используется такая конструкция:
      <#include "resource:footer">
      
      При обработке шаблона, затребованный ресурс будет обработан и заинлайнен в результирующий html файл.
      Сам ресурс должен быть предварительно описан в template_meta.json
    • getResourceUrl - для получения ссылки на ресурс. Принимает один параметр - название ресурса. Примеры использования:
      <img src="${getResourceUrl("logo")}"/>
      
      <link rel="stylesheet" type="text/css" href="${getResourceUrl("style")}">
      
    • getResourceBase64 - для получения всего ресурса, закодированного в Base64. Принимает один параметр - название ресурса. Пример использования:
      <img src="${getResourceBase64("logo")}"/>
      
  3. Изменять размер получаемого PDF можно свойством CSS:

    @page {
        size: 105mm 148mm;
    }
    

Tag summary

Content type

Image

Digest

Size

128.3 MB

Last updated

almost 6 years ago

docker pull limebeck/template-editor