Создание шаблона для офисного принтера.
Шаблон должен находиться в папке "PrinterOffice", иметь расширение .json и название соответствующее шаблону переменных-vars.
Настраиваем принтер в Л2.
Для нового принтера выбираем тип "USB" (не имеет отношения к тому, как принтер подключен на самом деле). И модель "Office".
Далее в списке адресов выбираем драйвер нужного нам принтера.
Для теста полезно выбрать Print to PDF. Данный драйвер будет просто запрашивать сохранения листа в .pdf файле, вместо печати физического принтера на реальной бумаге.
Для этого нужно будет зайти в Win + R , далее optionalfeatures.exe, ищем Microsoft Print to PDF и отмечаем галкой. Перезапустить службу "Диспетчер очереди печати" / перезагрузить систему.
(ВАЖНО!) Виртуальные принтеры работают только при запуске Л2 из консоли. При запуске как службы принтер не сможет открыть диалоговое окно сохранения файла.
______________________________________________________________________________________________________________________________________________
Шаблон состоит из доп. переменных / элементов шаблона.
Базовая структура шаблона:
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
}
}
В additionalSettings можно указать кол-во кол-во origins (исходных точек) для отпечатков. На каждую исходную точку будет создан отпечаток с началом в соответствующей координате.
Пример:
{
"variables" : {
"<code_128>" : {
"type" : "CODE_128"
}
}
}
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
},
{
"x" : 60.0,
"y" : 100.0
}
]
},
"additionalVariables" :{
"<code_128>" : {
"x" : 0,
"y" : 100,
"height" : 30,
"fontSize" : 12,
"innerSpace" : 10
}
}
}
Передача в элемент типа и значения.
В additionalVariables указываются элементы шаблона.
Каждый элемент имеет тип (те же типы, что и у переменных-vars) и значение. Есть несколько путей передачи в элемент типа.
1. Элемент назван так же, как и переменная-vars. Тип унаследуется от переменной-vars.
2. Тип указан в поле "type". Указанный тип всегда будет приоритетней унаследованного.
Также есть несколько путей передачи в элемент значения.
1. Элемент назван так же, как и переменная-vars. Значение унаследуется от переменной-vars.
2. В поле элемента "value" указано название нужной переменной-vars. В этом поле также можно указать несколько переменных-vars или любой другой текст. Вместо названий будут подставлены значения переменных-vars, так же, как и в других принтерах. Указанное значение всегда будет приоритетней унаследованного.
Пример 1 (тип и значение указаны вручную):
{
"variables" : {
"<gtin>" : {
"type" : "GTIN"
},
"<total_capacity>" : {
"type" : "TOTAL_CAPACITY"
},
}
}
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
"code_128" : {
"x" : 0,
"y" : 100,
"height" : 30,
"fontSize" : 12,
"type" : "CODE_128",
"value" : "02<gtin>10<total_capacity>",
"innerSpace" : 10
}
}
}
Пример 2 (тип и значения наследуются от переменной-vars):
{
"variables" : {
"<code_128>" : {
"type" : "CODE_128"
}
}
}
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
"<code_128>" : {
"x" : 0,
"y" : 100,
"height" : 30,
"fontSize" : 12,
"innerSpace" : 10
}
}
}
______________________________________________________________________________________________________________________________________________
Параметры элементов:
Каждый элемент имеет ряд параметров. Для каждого присущи параметры "x" и "y" - это координаты.
Если не указать числовой параметр, то он будет равен 0.
(ВАЖНО) Все параметры длины, ширины, отступов и тд указываются в миллиметрах.
(Размер текста в типографских пунктах)
Список типов элементов шаблона:
DATAMATRIX_GS, DATAMATRIX_NON_GS
width - ширина
height - высота
Пример:
{
"variables" : {
"dm" : {
"type" : "DATAMATRIX_GS",
"index" : 1
}
}
}
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
"dm" : {
"x": 30,
"y" : 100,
"width" : 100,
"height": 100
}
}
}
GTIN ( фактически печатается как EAN-13)
Берётся необрезанный код 14ти единиц длиной, и обрезается слева до 13ти.
width - ширина
height - высота
underlineNumbersRatio - (Вещественное число с точкой) Соотношение высоты внутреннего отступа EAN-13
ко всей высоте кода. При отсутствии значения или значении "нуль" отступа у кода не будет, как и нижних чисел.
Пример 1 (указан underlineNumbersRatio):
{
"variables" : {
"<gtin>" : {
"type" : "GTIN"
}
}
}
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
"<gtin>" : {
"x": 30,
"y" : 100,
"width" : 100,
"height": 30,
"underlineNumbersRatio" : 0.2
}
}
}
Пример 2 (не указан underlineNumbersRatio)
CODE_128 (code 128 / gs1 128)
Если в коде указан FNC символ (то есть код - gs1 128), то коды Application Identifiers (AI) при генерации человеко-читаемого кода будут браться в кавычки (см. пример).
width - ширина
height - высота
fontSize - размер шрифта
innerSpace - вертикальный интервал между нижней границей кода и началом текста.
drawBrackets - нужно ли рисовать скобки у HRI у GS1-128 (по умолчанию true) (true/false)
humanReadableText - нужно ли рисовать HRI (по умолчанию true) (true/false)
Пример 1 (без FNC - code 128):
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
"<code_128>" : {
"x" : 0,
"y" : 100,
"height" : 30,
"fontSize" : 12,
"innerSpace" : 5
}
}
}
{
"variables" : {
"<code_128>" : {
"type" : "CODE_128"
}
}
}
Пример 2 (указан FNC - gs1 128)
{
"variables" : {
"<code_128>" : {
"type" : "CODE_128"
}
}
}
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
"<code_128>" : {
"x" : 0,
"y" : 100,
"height" : 30,
"fontSize" : 12,
"innerSpace" : 5,
"value" : "\u00F10105412345000013\u001D17251231\u001D10ABC123\u001D21DEF456789"
}
}
}
IMAGE
width - ширина
height - высота
Пример:
{
"variables" : {
"<image>" : {
"type" : "IMAGE",
"value" : "img.bmp"
}
}
}
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
"<image>" : {
"x" : 70,
"y" : 100,
"height" : 100,
"width" : 100
}
}
}
Все остальные типы применимые к переменным-vars генерируются как текст.
width - незначимое свойство
height - незначимое свойство
fontSize - размер шрифта (в типографских пунктах)
fontFamily - семейство шрифта. Шрифт должен быть зарегистрирован в системе.
Посмотреть шрифты в системе:
windows:
dir C:\Windows\Fonts
linux:
fc-list
bold - жирный текст (true/false)
italic - курсивный текст (true/false)
maxWidth - Максимальная ширина строки текста превышая которую он будет перенесен на следующую строку.
innerSpace - Межстрочный интервал текста.
Перенос текста по строкам:
Перенос может быть:
- Автоматический, если задано свойство maxWidth (мм). В данном случае текст будет переноситься при достижении длины строки значения maxWidth или при достижения края страницы.
- Ручной, с помощью символа переноса строки '\n'.
- Два режима можно сочетать. Одновременно может быть и включено ограничение по длине, и проставлены символы переноса строки вручную: там, где текст должен быть перенесен в любом случае - например, начало абзаца.
Пример 1 (maxWidth задан - автоматический перенос строки при достижении maxWidth, а также при достижении края страницы):
{
"variables" : {
"<text>" : {
"type" : "TEXT",
"value" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
}
}
}
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
"<text>" : {
"x" : 60,
"y" : 40,
"fontFamily" : "WINGDNG2",
"fontSize": 12,
"bold" : true,
"italic" : true,
"innerSpace" : 4,
"maxWidth" : 150
}
}
}
Пример 2 (maxWidth отсутствует - перенос строки осуществляется с помощью \n)
{
"variables" : {
"<text>" : {
"type" : "TEXT",
"value" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit,\n sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi \nut aliquip ex ea commodo consequat. \nDuis aute irure dolor in reprehenderit in voluptate velit esse \ncillum dolore eu fugiat nulla pariatur. \nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui \nofficia deserunt mollit anim id est laborum."
}
}
}
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
"<text>" : {
"x" : 60,
"y" : 40,
"fontFamily" : "WINGDNG2",
"fontSize": 12,
"bold" : true,
"italic" : true,
"innerSpace" : 4
}
}
}
Поворот элемента.
Каждый элемент может быть повернут с помощью свойства rotation (градусы)
Пример:
{
"variables" : {
"<image>" : {
"type" : "IMAGE",
"value" : "img.bmp"
}
}
}
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
]
},
"additionalVariables" :{
"<image>" : {
"x" : 70,
"y" : 100,
"height" : 100,
"width" : 100,
"rotation" : 90
}
}
}
Было (0 градусов) Стало (90 градусов)
Формат бумаги
Шаблон поддерживает форматы от A0 до A13.
Формат указывается как строка в свойстве "paperFormat" в "additionalSettings".
Пример:
{
"additionalSettings": {
"origins" : [
{
"x" : 0.0,
"y" : 0.0
}
],
"paperFormat" : "A3"
},
"additionalVariables" :{
"<image>" : {
"x" : 70,
"y" : 100,
"height" : 100,
"width" : 100,
"rotation" : 90
}
}
}















No Comments