Создание шаблонов
Для создания шаблонов воспользуйтесь средствами визуальной разработки, которые поддерживают необходимые форматы.
Например, для генератора Jasper Report шаблоны могут быть созданы в специализированной программе Jaspersoft Studio.
В Jaspersoft Studio необходимо сформировать файл
.jrxml
, который будет являться шаблоном отчёта.- Шаг 1. Создание пустого отчета
Для создания пустого отчета нужно вызвать File → New → Jasper Report. Далее выбрать Blank A4.


Увеличить
- Шаг 2. Создание параметров
Для создания параметров шаблона (заголовки, поля таблицы, подписи) необходимо на вкладке Outline в строке Parameters нажать правую кнопку мыши, и выбрать Create Parameter.


Увеличить
Как правило, все параметры – это текстовые данные. Они имеют тип String.


Увеличить
На каждую таблицу заводится отдельный параметр, через который будет передаваться JSON с данными для наполнения таблицы. Тип у него также String:


Увеличить
- Шаг 3. Установка текстовых данных
Для установки на форму шаблона каких-либо текстовых данных (например, заголовков или подписей) необходимо добавить поля Text Field или Static Text.


Увеличить
В Static Text может быть только текст, в Text Field возможно задавать переменные: например, номер документа, дату или время.


Увеличить
- Шаг 4. Установка таблиц
Для установки на форму шаблона каких-либо таблиц необходимо добавить поле Table.


Увеличить
Запустится Table Wizard. Необходимо выбрать новый DataSet, указать его имя, выбрать Create an empty dataset.
При выборе соединения с БД указать в поле Use JRDatasource expression:
new net.sf.jasperreports.engine.data.JsonDataSource(new ByteArrayInputStream($P{tableData}.getBytes()), null)
Это означает, что данные для таблицы будут получены из параметра tableData, переданого в формате JSON.


Увеличить
После внесения всех необходимых параметров можно проверить корректность визуального представления шаблона. Для этого в Jaspersoft Studio реализована функция Preview.
Загрузка шаблона в сервис Печати
Для загрузки шаблона в сервис печати необходимо сформировать файл
.zip
, в котором будет шаблон отчета в формате .jrxml
и файл .json
с параметрами отчета.
Формат JSON следующий:configuration.json type=json{ "templateCode": "TemplateDoc", "description": "TemplateDoc", "selectionStrategy": "BASED_ON_DATE", "activeVersions": [ { "versionCode": "version_01", "description": "version description", "activationDate": "15.02.2021", "engine": "JASPERREPORTS", "defaultFormat": "PDF", "templateFileName": "templateDoc.jrxml" } ] }
Компонент использует движок Apache FreeMarker версии 2.3.30. Apache FreeMarker — это шаблонный движок: библиотека Java для генерации текста (HTML-страницы, электронные письма, файлы конфигурации, исходный код и другое) на основе шаблонов и изменяемых данных. Шаблон представляет собой текстовый файл или HTML-файл с конструкциями Freemarker. Шаблон может содержать списки, строковые и арифметические операции, условные выражения, циклы, макросы и другое. Шаблоны написаны на простом специализированном языке шаблонов FreeMarker (FreeMarker Template Language, FTL).
Компонент поддерживает следующие типы для передачи параметров ресурсов при генерации:
- InputStream;
- String.
Движок FreeMarker не поддерживает работу с ресурсами по умолчанию, но, если необходимо использовать в шаблоне изображения, их можно передавать в формате
base64
, в виде пути до файла либо в виде ссылки.Для описания картинки, которая затем будет встроена в шаблон, необходимо в шаблоне FTL добавить стандартный тег HTML
<img ... src="${image}" ... />
с установкой всех необходимых атрибутов (размер и т.д.), где image — название параметра в конфигурационном файле шаблона, через который будет получена картинка.Пример шаблона с параметром с названием image:
Раскрыть type=html<html> <head> <meta charset="utf-8"> <title>Анкета сотрудника</title> </head> <body> <h1>Анкета сотрудника</h1> <img alt="Фото сотрудника" src="${image}" width=100 height=100 align="left"/> </body> </html>
Более подробная инструкция о разработке шаблона документа для движка Apache FreeMarker приведена на официальном сайте.
Компонент использует версию 2.0.2. Для работы с ним можно использовать любой из этих офисных пакетов: MS Office, LibreOffice или OpenOffice. Компонент поддерживает синтаксис Freemarker.
Формат загружаемых шаблонов, которые будут созданы с помощью XDocReport, —
odt
. Компонент поддерживает InputStream
для передачи параметров ресурсов при генерации. XDocReport поддерживает только вставку картинок в качестве ресурсов. Для добавления картинки, которая затем будет заменена, необходимо:- В шаблон формата
.odt
добавить картинку-заглушку. - Установить картинке имя, совпадающее с именем параметра в конфигурационном файле шаблона, через который будет получена картинка.
Картинку нужно добавить в целевое место и с желаемыми размерами.
Более подробная инструкция по разработке шаблонов документов с помощью XDocReport приведена здесь.
Для загрузки созданного архива шаблонов на сервер необходимо выполнить POST-запрос к сервису
template-registry
.При работе на стенде из вашего неймспейса используйте следующий адрес:
curl --location --request POST '{env.PARAMETERS_IMPORT_SERVICE_URL}/template-registry/api/v1/templates?file_name=zip.zip' \ --header 'Content-Type: application/octet-stream' \ --data-binary ‘@<путь к файлу>’ В рамках данного вызова необходимо изменять только путь до архива с шаблоном. При локальной работе с вашей машины используйте адрес вида: ```bash type=bash collapsible=false curl --location --request POST 'http://<адрес виртуальной машины>:8083/template-registry/api/v1/templates?file_name=zip.zip' \ --header 'Content-Type: application/octet-stream' \ --data-binary ‘@<путь к файлу>’
В рамках данного вызова необходимо изменять путь до архива с шаблоном и адрес виртуальной машины. Узнать адрес виртуальной машины можно в паспорте стенда вашего проекта. Дополнительную информацию можно получить у аккаунт-менеджера.
В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
Генерация печатной формы
Генерация печатных форм с заданным форматом и набором полей, загрузка готовых шаблонов