Опис
- Основні терміни
- Які пристрої підтримуються
Теги форматування
- Управління шрифтами
- Управління вирівнюванням
- Друк зображень
- Управління перенесенням тексту
- Інші теги форматування
Таблиці
- Визначення колонок
- Визначення комірок
- Вкладені таблиці
Макроси DocPreprocess.xslt
Приклади використання
Мова опису розмітки використовується для друкованої форми документів, які виводяться на принтери та фіскальні реєстратори (ФР).
Основна одиниця друку — документ у форматі xml з кореневим тегом <doc>.
Приклад 1. Найпростіший документ
Найпростіший документ у цій розмітці виглядає так:
<doc>текст для печати</doc>
Результат:
| текст для друку |
У прикладах наводиться очікуваний вивід на принтер з одним підтримуваним шрифтом і шириною стрічки в 30 символів. Для позначення початку і кінця рядка (країв паперу) використовується символ «|».
Розмітка документа не залежить від пристроїв і при виведенні адаптується під можливості конкретного пристрою. Після друку документа на пристроях, де це підтримується, виконується розрізка стрічки.
Розмітка документа повинна працювати на пристроях із шириною стрічки 16 символів — мінімальна ширина стрічки з пристроїв, які підтримуються на момент створення цієї статті.
Атрибути тегу <doc>
| Назва | Можливі значення | Призначення |
|---|---|---|
| bell | Порожній рядок (перевіряється тільки наявність) | Увімкнення кухонного дзвінка перед початком друку документа. Працює тільки для принтерів. |
| font | f0, f1, f2, barcode, qrcode | Вибір шрифту (див. Управління шрифтами) |
| align | center, justify, left, right | Вибір вирівнювання (див. Управління вирівнюванням) |
| formatter | cut, split, wrap | Вибір способу перенесення рядків (див. Управління перенесенням тексту) |
Є три розміри шрифту. Вони нумеруються цифрами від 0 до 2 в порядку збільшення розміру: шрифт номер 0 — найменший, шрифт номер 2 — найбільший. Якщо шрифт явно не вказаний, то за замовчуванням використовується шрифт номер 0.
Всі теги, зазначені в таблиці нижче, змінюють шрифт для всіх вкладених в них елементів.
Теги для управління шрифтами
| Назва | Призначення |
|---|---|
| <f0></f0> | Форматування вкладеного контенту шрифтом розміру 0. |
| <f1></f1> | Форматування вкладеного контенту шрифтом розміру 1. |
| <f2></f2> | Форматування вкладеного контенту шрифтом розміру 2. |
| <barcode></barcode> | Форматування вкладеного тексту як штрих-коду.Підтримує тільки текст. Якщо пристрій не підтримує друк штрих-кодів, то даний тег буде проігнорований. |
| <qrcode></qrcode> | Форматування вкладеного тексту як двовимірний штрих-код (QR-код).Підтримує тільки текст. Якщо пристрій не підтримує виведення штрих-кодів, то даний тег буде проігнорований. Опціональні атрибути розміру size QR-коду і ступеня стійкості до перешкод correction. Приклад тегу: <qrcode size="normal" correction="medium"> http://www.Syrve.co.uk/ </qrcode> |
Щоб змінити стиль шрифту, вкажіть один або кілька відповідних атрибутів: жирний, курсив, інверсія (білі літери на чорному тлі), підкреслення.Ці атрибути можна додати до тегів <f0>, <f1>, <f2>, <ct> та <c>, наприклад:
<f2 italic="off" reverse="on">
<left> text with space </left>
</f2>
Атрибути тегу <qrcode>
| Назва | Можливі значення | Значення за замовчуванням | Призначення |
|---|---|---|---|
| align | left, center, right | center | Вирівнювання зображення по горизонталі. |
| correction | low, medium, high, ultra | medium | Ступінь корекції (завадостійкості). Для малого розміру не слід вказувати значення ultra/high, оскільки це може призвести до помилки розпізнавання QR-коду. |
| size | tiny, small, normal, large, extralarge | normal | Розмір QR-коду |
Атрибути тегу <barcode>
| Назва | Можливі значення | Значення за замовчуванням | Призначення |
|---|---|---|---|
| align | left, center, right | center | Вирівнювання зображення по горизонталі. |
| heightRatio | будь-яке десяткове число (використовуйте крапку як роздільник цілої та дробової частини) | 0.3-0.35 | Співвідношення висоти штрих-коду до його ширини. Може дещо відрізнятися для різних моделей принтера, залежно від того, чи входить quiet zone в ширину штрих-коду чи ні. |
| hri | on, off | on | Вказує, чи необхідно додати текст штрих-коду (Human Readable Interpretation). |
Розміри шрифтів для деяких пристроїв
У таблиці для кожного розміру шрифту вказано кількість символів у рядку.
| Назва пристрою | Шрифт0 | Шрифт1 | Шрифт2 |
|---|---|---|---|
| Epson TM-T88 | 42 | 28 | 21 |
| Epson TM-U220 (кодування gb2312) | 32 | 32 | 16 |
| Epson TM-U220 (всі кодування крім gb2312) | 30 | 30 | 15 |
| Zebra Epl | Залежить від налаштувань dpi | Залежить від налаштувань dpi | Залежить від налаштувань dpi |
| Epson TM-U295 | 35 | 21 | 14 |
Перераховані ФР підтримують форматування тільки одним шрифтом, розміри якого задаються в налаштуваннях ФР, в Syrve Office.
Теги та атрибути зміни шрифтів заборонені всередині таблиць, для цього необхідно користуватися атрибутом font для комірок таблиці.
За замовчуванням у документі задано вирівнювання по лівому краю. У таблиці представлені теги, що дозволяють змінювати спосіб вирівнювання для всіх вкладених у них елементів.
Теги для керування вирівнюванням
| Назва | Призначення |
|---|---|
| <center></ center> | Вирівнювання по центру. |
| <justify></justify> | Вирівнювання по ширині. |
| <left></left> | Вирівнювання по лівому краю. |
| <right></right> | Вирівнювання по правому краю. |
За замовчуванням у документі друк зображень вимкнено.
Теги для друку зображень
| Назва | Призначення |
|---|---|
| <logo>index</logo> | Друк раніше завантаженого зображення з енергонезалежної пам'яті (NV image store) з числовим індексом index. |
| <image>base64</image> | Друк монохроматичного зображення, представленого у вигляді base64-рядка. |
Атрибути тегу <image>
| Назва | Можливі значення | Значення за замовчуванням | Призначення |
|---|---|---|---|
| align | left, center, right | center | Вирівнювання зображення по горизонталі. |
| resizeMode | clip, fit | clip | Режим зміни розміру зображення.
|
За замовчуванням у документі використовується перенесення тексту в будь-якому місці.
У таблиці перераховані теги, які можна використовувати для перенесення тексту в документі.
Теги для управління перенесенням тексту
| Назва | Призначення |
|---|---|
| <split></split> | Розбити текст на рядки, переносячи на пробільних символах (пробіл, табуляція та ін.). |
| <wrap></wrap> | Розбити текст на рядки, переносячи в будь-якому місці. |
| <cut></cut> | Обрізати текст, який не вміщується в рядок. |
| <br /> | Перехід на новий рядок. Перехід відбудеться тільки якщо поточний рядок порожній. Будь-яка кількість послідовних <br /> на виході дасть один порожній рядок. |
| <np /> | Новий параграф. Після його застосування наступний за ним текст почнеться з нового рядка, і при цьому, якщо попередній параграф був відформатований по ширині, то останній рядок цього параграфа буде вирівняний по лівому краю (аналогічно працює MS Word). |
| <nobr /> | Нерозривний пробіл. Слова, які йдуть через нерозривний пробіл, будуть сприйматися як одне слово. Це означає, що вони не будуть розбиватися при форматуванні при використанні split formatter або justify alignment. |
За замовчуванням порожній простір між символами заповнюється пробілами. Тег <fill /> дозволяє перевизначити цю поведінку.
Інші теги форматування
| Назва | Призначення |
|---|---|
| <fill /> | Перевизначає символ, що використовується для заповнення порожнього простору. Новий символ (або набір символів) задається атрибутом @symbol.Не успадковується таблицею, якщо її обернути тегом <fill />. |
Слід враховувати, що тег <fill /> не перевизначає пробільні символи користувацького тексту.
Приклад 2. Демонстрація тегу <fill />
<doc> <left> text with space </left> <fill symbols="."> <br /> <left> text with space </left> <np /> <table> <columns> <column /> <column /> </columns> <cells> <c>left text</c> <c> <right>right text</right> </c> </cells> </table> </fill></doc>
Результат
| text with space |
| text with space .............|
|..............................|
|left text right text|
Форматування таблиць — основний спосіб форматування документів.
Таблиця визначається тегом <table></table>, який містить обов'язкові дочірні теги: <columns></columns> (колонки таблиці), <cells></ cells> (комірки таблиці), які в свою чергу повинні містити хоча б одне визначення колонки і комірки відповідно.
Атрибути тегу <table />
| Назва | Можливі значення | Призначення |
|---|---|---|
| cellspacing | Ціле число, більше або рівне 0. За замовчуванням: 1 | Ширина, в символах, внутрішніх відступів між колонками. |
Приклад 3. Найпростіший документ з таблицею
<doc> <table> <columns> <column /> </columns> <cells> <c>Text</c> </cells> </table></doc>
Колонки визначаються тегами <column /> всередині тегу <columns /> у напрямку зліва направо.
Для всіх комірок кожної колонки можна задавати спосіб форматування за допомогою загальних атрибутів форматування: font, align і formatter (див. Загальний опис).
Атрибути тегу <column />
| Назва | Можливі значення | Призначення |
|---|---|---|
| autowidth | Будь-яке, важливий факт наявності атрибуту. | Чи розтягується колонка під вміст. |
| minwidth | Ціле число, більше або рівне 1.За замовчуванням: 1 | Мінімальна ширина колонки, в символах. Використовується тільки для розтяжних колонок. |
| maxwidth | Ціле число, більше або рівне 1.За замовчуванням: не задано | Максимальна ширина колонки, в символах. Використовується тільки для розтяжних колонок. |
| width | Ціле число, більше або рівне 1.За замовчуванням: не задано | Фіксована ширина колонки. Не можна використовувати разом з autowidth. |
| valign | bottom, center, topЗа замовчуванням: top | Вертикальне вирівнювання в комірках даного стовпця. |
| align | center, justify, left, right | Вибір вирівнювання (див. Управління вирівнюванням) |
| formatter | cut, split, wrap | Вибір способу перенесення рядків (див. Управління перенесенням тексту) |
Колонки, які не розтягуються (атрибут autowidth) і для яких явно не задано розмір в атрибуті width, розподіляють місце, що залишилося від інших колонок, порівну.
Комірки визначаються тегами <c /> або <ct /> всередині тегу <cells /> у напрямку зліва направо, зверху вниз.
За замовчуванням у кожному рядку таблиці відображається стільки ж комірок, скільки і стовпців.
Тег <c> може містити будь-який контент, у тому числі й інші теги форматування.
Тег <ct /> може містити тільки текст.
У розтягуваних колонках (з атрибутом autowidth) повинна бути хоча б одна комірка типу <ct />, і тільки за ними обчислюється ширина колонки для врахування розтягування колонки та обмежень minwidth і maxwidth.
Атрибути тегу <c /> і <ct />
| Назва | Можливі значення | Призначення |
|---|---|---|
| colspan | Ціле число, більше або рівне 0. За замовчуванням: 1 | Об'єднує вказану кількість стовпців.0 — комірка займає всю ширину таблиці. |
| font | f0, f1, f2 | Встановлює шрифт для рядка таблиці. Цей атрибут повинен бути встановлений для першої комірки рядка, атрибут в інших комірках ігнорується. |
Механізм форматування підтримує таблиці, вкладені в таблиці.
Але є особливість: якщо таблиця включена в комірку, яка не займає весь рядок, то шрифт в ній зафіксований і дорівнює поточному шрифту рядка батьківської таблиці. Атрибути зміни шрифтів для рядків вкладеної таблиці будуть проігноровані.
Вкладена таблиця, яка не займає весь рядок батьківської
<doc> <table> <columns> <column width="10" /> <column /> </columns> <cells> <c>some text</c> <c>some other text</c> <c font="f1"> <table cellspacing="0"> <columns> <column /> <column valign="bottom" /> </columns> <cells> <c>f0c1</c> <c>f0c2</c> <c font="f2">f2c1</c> <c>f2c2</c> </cells> </table> </c> <c>text in parent table</c> </cells> </table></doc>
<f0>, <f1> — це умовне позначення для рядків, що друкуються шрифтом f0 і <f1>.
У цьому прикладі для першого рядка застосовано шрифт <f0>, оскільки це шрифт за замовчуванням для документа і він не перевизначений.
Шрифт вкладеної таблиці визначається шрифтом, заданим для рядка батьківської таблиці, в якій знаходиться вкладена таблиця.
Перевизначення для другого рядка вкладеної таблиці (font=«f2») не спрацювало, оскільки таблиця не займає цілий рядок батьківської таблиці.
Макроси — це теги, які не визначені в базовому наборі тегів форматування і є скороченими версіями деяких типових конструкцій.
Будемо позначати @attribute значення атрибута attribute з вихідного тегу.
Макроси DocPreprocess.xslt
| Назва тегу | Опис |
|---|---|
| <line /> | Виводить один рядок, заповнений символом @symbols. За замовчуванням @symbols=“-”, тобто в результаті застосування тегу <line /> без атрибутів на виході вийде горизонтальна лінія на всю ширину документа.Підсумкова розмітка:<fill symbols="@symbols"><np /></fill> |
| <linecell /> | Додає комірку на всю ширину таблиці, заповнену символом @symbols. За замовчуванням @symbols=“-”, тобто в результаті застосування тегу <linecell /> без атрибутів на виході вийде горизонтальна лінія на всю ширину таблиці.Підсумкова розмітка:<c colspan="0"> <fill symbols="@symbols"> <np /> </fill></c> |
| <pair /> | Виводить в один рядок пару значень @left, @right, вирівняні вліво і вправо відповідно.Якщо @fit=“left”, то підсумкова розмітка:<table> <columns> <column align="left" autowidth="" /> <column align="right" /> </columns> <cells> <ct>@left</ct> <ct>@right</ct> </cells></table>Якщо @fit=“right”, то підсумкова розмітка: <table> <columns> <column align="left" /> <column align="right" autowidth="" /> </columns> <cells> <ct>@left</ct> <ct>@right</ct> </cells></table> |
| leftpair | Виводить в один рядок пару значень @left, @right, обидва вирівняні ліворуч. Підсумкова розмітка:<table> <columns> <column align="left" autowidth="" /> <column align="left" /> </columns> <cells> <ct>@left</ct> <ct>@right</ct> </cells></table> |
Приклад 4. Форматування пречека
<doc> <left> <split> ****************************************** My restaurant ----- Meat & Ale LLC Tax ID 45345345345656 ****************************************** </split> </left> <center>GUEST BILL</center> <pair fit="right" left=“Dining room: New section (1)" right=“Table: 2" /> <pair fit="right" left=“Open: 23.12.2010 4:37PM" right=“Order No. 852" /> <left>Waiter: James</left> <table> <columns> <column /> <column align="right" autowidth="" /> <column align="right" autowidth="" /> </columns> <cells> <linecell /> <ct>Name</ct> <ct>Qty</ct> <ct>Amount</ct> <linecell /> <c colspan="0">Guest 1</c> <ct>Sausage</ct> <ct>1</ct> <ct>10.00</ct> <ct> +1</ct> <ct /> <ct>1.00</ct> <ct>Vodka. Non-alcoholic. Yes, it’s possible ;)</ct> <ct>1</ct> <ct>20.00</ct> <ct> +9</ct> <ct /> <ct /> <c colspan="2" /> <c> <line /> </c> <c colspan="2">Amount due Guest 1:</c> <ct>31.00</ct> <linecell symbols=" " /> <c colspan="0">Guest 2</c> <ct>Sausage</ct> <ct>1</ct> <ct>10.00</ct> <c colspan="2" /> <c> <line /> </c> <c colspan="2">Amount due Guest 2:</c> <ct>10.00</ct> <linecell /> <c colspan="2">TOTAL DUE:</c> <ct>41.00</ct> </cells> </table> <np /> <center> <split> THANK YOU! PLEASE COME AGAIN! </split> </center> <np /> <np /> <center>Have a good day!</center> <np /></doc>
Результат
|****************************************** |
|M restaurant ----- Meat & Ale LLC |
|Tax ID 45345345345656 |
|****************************************** |
| GUEST BILL |
|Dining room: New section (1) Table: 2|
|Open: 23.12.2010 4:37PM Order No. 852|
|Waiter: James |
|------------------------------------------------------------|
|Name Qty Amount|
|------------------------------------------------------------|
|Guest 1 |
|Sausage 1 10.00|
| +1 1.00|
|Vodka. Non-alcoholic. Yes, it’s possible ;) 1 20.00|
| +9 |
| ------|
|Amount due Guest 1: 31.00|
| |
|Guest 2 |
|Sausage 1 10.00|
| ------|
|Amount due Guest 2: 10.00|
|------------------------------------------------------------|
|TOTAL DUE: 41.00|
| |
| THANK YOU! PLEASE COME AGAIN! |
| |
| |
| Have a good day! |
| |