Język znaczników
Przegląd
Podstawowe definicje
Język znaczników jest używany do drukowanych form dokumentów. Takie dokumenty są wysyłane do drukarek oraz drukarek paragonów, znanych również jako kasy fiskalne lub KFi.
Podstawową jednostką drukowania jest dokument XML z
Przykład 1. Prosty dokument
Prosty dokument utworzony przy użyciu tego języka znaczników wygląda następująco:
<doc>wydrukowany tekst</doc>
Wynik:
| wydrukowany tekst |
Obsługiwane urządzenia
Poniższe przykłady pokazują oczekiwany tekst do wydrukowania przy użyciu jednego obsługiwanego fontu na taśmie o szerokości 30 znaków. Aby wskazać początek i koniec linii (krawędzie papieru), używany jest symbol „|”.
Znaczniki dokumentu nie zależą od urządzenia i są dostosowywane do konkretnych możliwości drukarki w momencie drukowania. Po wydrukowaniu dokumentu taśma jest cięta, jeśli urządzenie to obsługuje.
Znaczniki dokumentu działają dla taśmy o szerokości 16 znaków, która jest minimalną dopuszczalną szerokością w momencie pisania tego artykułu.
Atrybuty
| Nazwa | Możliwe wartości | Funkcja |
| bell | Pusty ciąg (sprawdzenie dostępności) | Dzwonek dzwoni przed wydrukiem dokumentu. Działa tylko dla drukarek. |
| font | f0, f1, f2, barcode, qrcode | Wybór fontu (patrz Fonty) |
| align | center, justify, left, right | Wybór wyrównania (patrz Wyrównanie) |
| formatter | cut, split, wrap | Wybór zawijania słów (patrz Zawijanie tekstu) |
Znaczniki formatowania
Fonty
Istnieją trzy rozmiary fontów. Są one oznaczone od 0 do 2 w kolejności rosnącej rozmiaru: font 0 jest najmniejszy, font 2 największy. Jeśli nie jest określony, domyślnie używany jest font 0.
Znaczniki podane w tabeli poniżej zmieniają rozmiar fontu dla wszystkich elementów zawartych w tych znacznikach.
Znaczniki fontów
| Nazwa | Funkcja |
| <f0></f0> | Formatuje osadzone treści rozmiarem fontu 0. |
| <f1></f1> | Formatuje osadzone treści rozmiarem fontu 1. |
| <f2></f2> | Formatuje osadzone treści rozmiarem fontu 2. |
| <barcode></barcode> | Formatuje osadzony tekst jako kod kreskowy. Obsługuje tylko tekst. Jeśli Twoje urządzenie nie obsługuje drukowania kodów kreskowych, ten znacznik zostanie zignorowany. |
| <qrcode></qrcode> | Formatuje osadzony tekst jako dwuwymiarowy kod kreskowy (kod QR). Obsługuje tylko tekst. Jeśli Twoje urządzenie nie obsługuje drukowania kodów kreskowych, ten znacznik zostanie zignorowany. Opcjonalne atrybuty rozmiaru i poziomu korekcji kodu QR. Przykład znacznika: <qrcode size="normal" correction="medium"> http://www.Syrve.co.uk/ </qrcode> |
Styl fontu
Aby zmienić styl fontu, określ jeden lub więcej odpowiednich atrybutów: bold, italic, reverse (białe litery na czarnym tle), underline.
Te atrybuty można dodać do znaczników
Atrybuty
| Nazwa | Możliwe wartości | Wartości domyślne | Funkcja |
| align | left, center, right | center | Wyrównuje obraz poziomo. |
| correction | low, medium, high, ultra | medium | Poziom korekcji Nie zaleca się używania ultra i high dla małych rozmiarów, ponieważ może to skutkować błędem odczytu kodu QR. |
| size | tiny, small, normal, large, extralarge | normal | Rozmiar kodu QR |
Atrybuty
| Nazwa | Możliwe wartości | Wartości domyślne | Funkcja |
| align | left, center, right | center | Wyrównuje obraz poziomo. |
| heightRatio | dowolna liczba dziesiętna (użyj kropki jako separatora dziesiętnego) | 0.3-0.35 | Stosunek wysokości kodu kreskowego do jego szerokości. Różni się w zależności od modeli drukarek, w zależności od tego, czy strefa ciszy jest wliczona w szerokość kodu kreskowego, czy nie. |
| hri | on, off | on | Wskazuje, czy tekst kodu kreskowego (Human Readable Interpretation) powinien być dodany. |
Rozmiary fontów specyficzne dla urządzenia
W tabeli podano liczbę znaków na linię dla każdego rozmiaru fontu.
| Nazwa urządzenia | Czcionka0 | Czcionka1 | Czcionka2 |
| Comstar | 25 | 15 | 15 |
| Epson TM-T88 | 42 | 28 | 21 |
| Epson TM-U220 (zbiór znaków gb2312) | 32 | 32 | 16 |
| Epson TM-U220 (wszystkie zbiory znaków oprócz gb2312) | 30 | 30 | 15 |
| SPrint TM200 | 72 | 36 | 36 |
| SPrint TM200 Min | 48 | 48 | 24 |
| Shtrih-600 | 30 | 24 | 15 |
| Posiflex | 42 | 28 | 21 |
| Drukarka igłowa STAR SPxxx | 42 | 23 | 17 |
| SP298 | 42 | 34 | 20 |
| STAR TSPxxx | 48 | 38 | 19 |
| Drukarka OPOS | 48 | 24 | 19 |
| Zebra Epl | Zależy od ustawień dpi | Zależy od ustawień dpi | Zależy od ustawień dpi |
| Epson TM-U295 | 35 | 21 | 14 |
Wszystkie drukarki paragonowe obsługują tylko formatowanie jednoczcionkowe, którego rozmiar jest określony w ustawieniach drukarki w Syrve Office.
Tagi i atrybuty zmiany czcionki są zabronione w tabelach; do tego celu używaj atrybutu czcionki dla komórek tabeli.
Wyrównanie
Domyślnie zawartość jest wyrównana do lewej. Tagi podane w tabeli pozwalają zmienić wyrównanie wszystkich osadzonych elementów.
Tagi wyrównania
| Nazwa | Funkcja |
| <center></center> | Wyśrodkuj zawartość |
| <justify></justify> | Wyjustuj zawartość |
| <left></left> | Wyrównaj zawartość do lewej |
| <right></right> | Wyrównaj zawartość do prawej |
Drukowanie obrazów
Domyślnie drukowanie obrazów jest wyłączone.
Tagi drukowania obrazów
| Nazwa | Funkcja |
| <logo>index</logo> | Wydrukuj wcześniej zaimportowany obraz z pamięci nieulotnej za pomocą indeksu numerycznego. |
| <image>base64</image> | Wydrukuj monochromatyczny obraz reprezentowany jako ciąg base64. |
Atrybuty
| Nazwa | Możliwe wartości | Wartości domyślne | Funkcja |
| align | left, center, right | center | Wyrównuje obraz poziomo. |
| resizeMode | clip, fit | clip | Tryb zmiany rozmiaru obrazu.
|
Zawijanie tekstu
Domyślnie tekst może być zawijany w dowolnym miejscu.
W tabeli pokazano tagi, które można użyć do zawijania tekstu.
Tagii zawijania tekstu
| Nazwa | Funkcja |
| <split></split> | Dzieli tekst na linie i zawija w miejscach znaków odstępu (spacje, tabulacje itp.). |
| <wrap></wrap> | Dzieli tekst na linie i zawija w dowolnym miejscu. |
| <cut></cut> | Obcina tekst, który nie mieści się w linii. |
| <br /> | Złamanie linii. Przerwa następuje, jeśli bieżąca linia jest pusta. Dowolna liczba kolejnych <br /> spowoduje ostatecznie powstanie tylko jednej pustej linii. |
| <np /> | Nowy akapit. Po zastosowaniu, następujący tekst będzie podany w nowej linii, podczas gdy poprzednia linia zostanie wyrównana do lewej, jeśli akapit ma jakiekolwiek formatowanie szerokości (MS Word działa w ten sam sposób). |
| <nobr /> | Spacja nierozdzielająca. Słowa podzielone spacją nierozdzielającą są traktowane jako jedno słowo. Oznacza to, że nie zostaną podzielone, jeśli zastosowany jest formatator dzielenia lub wyrównanie do justowania. |
Inne tagi formatowania
Domyślnie spacja między znakami jest wypełniana znakami spacji. Tag
Inne tagi formatowania
| Nazwa | Funkcja |
| <fill /> | Zmienia znak używany do wypełniania spacji. Nowy znak (lub zestaw znaków) jest ustawiany za pomocą atrybutu @symbol. Nie jest dziedziczony, jeśli otoczony jest tagiem <fill />. |
Należy pamiętać, że tag <fill /> nie zmienia znaków spacji w tekście zdefiniowanym przez użytkownika.
Przykład 2. Demonstracja tagu <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>
Wynik
| text with space |
| text with space .............|
|..............................|
|left text right text|
Tabele
Formatowanie tabel jest podstawową metodą formatowania dokumentów.
Tabela jest definiowana przez tag
Atrybuty
| Nazwa | Możliwe wartości | Funkcja |
| cellspacing | Wartość całkowita większa lub równa 0. Domyślnie: 1 | Szerokość wewnętrznego odstępu kolumny w znakach. |
Przykład 3. Prosty dokument z tabelą
<doc><table><columns><column /></columns><cells><c>Text</c></cells></table></doc>
Definicje kolumn
Kolumny są definiowane przez tagi <column /> wewnątrz tagu <columns /> od lewej do prawej.
Można ustawić metodę formatowania dla wszystkich komórek w każdej kolumnie, używając wspólnych atrybutów formatowania, takich jak font, align i formatter (patrz Przegląd).
Atrybuty
| Nazwa | Możliwe wartości | Funkcja |
| autowidth | Dowolna. Atrybut musi być określony. | Czy kolumna rozciąga się, aby dopasować zawartość. |
| minwidth | Wartość całkowita większa lub równa 1. Domyślnie: 1 | Minimalna szerokość kolumny w symbolach. Używane tylko dla kolumn dopasowujących się automatycznie. |
| maxwidth | Wartość całkowita większa lub równa 1. Domyślnie: nieokreślona | Maksymalna szerokość kolumny w symbolach. Używane tylko dla kolumn dopasowujących się automatycznie. |
| width | Wartość całkowita większa lub równa 1. Domyślnie: nieokreślona | Stała szerokość kolumny. Nie może być używana razem z autowidth. |
| valign | bottom, center, top Domyślnie: top | Wyrównanie pionowe w komórkach kolumny. |
| align | center, justify, left, right | Wybór wyrównania (zobacz Wyrównanie) |
| formatter | cut, split, wrap | Wybór zawijania słów (zobacz Zawijanie tekstu) |
Kolumny, które się nie rozciągają (autowidth) i nie mają określonego atrybutu szerokości, dzielą równo pozostałą przestrzeń.
Definicje komórek
Komórki są definiowane przez tagi <c /> lub
Domyślnie każdy wiersz tabeli ma taką samą liczbę komórek i kolumn.
Tag
Tag
Kolumny rozciągające się (autowidth) powinny zawierać przynajmniej jedną komórkę
Atrybuty <c /> i <ct />
| Nazwa | Możliwe wartości | Funkcja |
| colspan | Wartość całkowita większa lub równa 0. Domyślnie: 1 | Scala określoną liczbę kolumn. 0 — komórka zajmuje całą szerokość tabeli. |
| font | f0, f1, f2 | Ustawia czcionkę dla wiersza tabeli. Ten atrybut powinien być ustawiony dla pierwszej komórki wiersza, atrybuty innych komórek są ignorowane. |
Zagnieżdżone tabele
Mechanizm formatowania obsługuje tabele wstawione w tabele.
Jednak jeśli tabela jest wstawiona w komórkę, która nie zajmuje całego wiersza, czcionka jest ustalona i odpowiada aktualnej czcionce wiersza tabeli nadrzędnej. Atrybuty zmieniające czcionkę wierszy tabeli zagnieżdżonej będą ignorowane.
Zagnieżdżona tabela zajmująca tylko część wiersza tabeli nadrzędnej
<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>
W tym przykładzie pierwszy wiersz ma zastosowaną czcionkę
Czcionka tabeli zagnieżdżonej jest określona przez czcionkę wiersza tabeli nadrzędnej.
Czcionka drugiego wiersza tabeli zagnieżdżonej (font=f2) nie została zmieniona, ponieważ tabela nie zajmuje całego wiersza tabeli nadrzędnej.
Makra DocPreprocess.xslt
Makra to tagi, które nie są zdefiniowane w podstawowym zestawie tagów formatowania i są skróconymi wersjami niektórych typowych struktur.
Użyjmy @attribute do oznaczenia wartości atrybutu tekstu źródłowego.
Makra DocPreprocess.xslt
| Nazwa tagu | Opis | ||||
| <line /> | Drukuje jedną linię wypełnioną symbolem @symbols. Domyślnie @symbols=‘-’, co oznacza, że w wyniku zastosowania tagu <line /> otrzymujemy poziomą linię rozciągającą się na cały dokument.
| ||||
| <linecell /> | Dodaje komórkę rozciągającą się na całą szerokość tabeli, wypełnioną symbolem @symbols. Domyślnie @symbols=‘-’, co oznacza, że w wyniku zastosowania tagu <linecell /> otrzymujemy poziomą linię rozciągającą się na całą szerokość tabeli.
| ||||
| <pair /> | Drukuje parę wartości @left i @right w jednej linii, wyrównanych odpowiednio do lewej i prawej strony.
Jeśli @fit='right', wynikowy markup wygląda następująco:
| ||||
| leftpair | Drukuje parę wartości @left i @right w jednej linii, obie wyrównane do lewej strony.
|
Przykłady użycia
Przykład 4. Formatowanie rachunku gościa
<doc><left><split>
**
Moja restauracja ----- Meat & Ale LLC
NIP 45345345345656
**
</split></left><center>RACHUNEK GOŚCIA</center><pair fit="right" left=“Sala jadalna: Nowa sekcja (1)" right=“Stolik: 2" /><pair fit="right" left=“Otwarte: 23.12.2010 16:37" right=“Zamówienie nr 852" /><left>Kelner: James</left><table><columns><column /><column align="right" autowidth="" /><column align="right" autowidth="" /></columns><cells><linecell /><ct>Nazwa</ct><ct>Ilość</ct><ct>Kwota</ct><linecell /><c colspan="0">Gość 1</c><ct>Kiełbasa</ct><ct>1</ct><ct>10.00</ct><ct> +1</ct><ct /><ct>1.00</ct><ct>Wódka. Bezalkoholowa. Tak, to możliwe ;)</ct><ct>1</ct><ct>20.00</ct><ct> +9</ct><ct /><ct /><c colspan="2" /><c><line /></c><c colspan="2">Kwota do zapłaty Gość 1:</c><ct>31.00</ct><linecell symbols=" " /><c colspan="0">Gość 2</c><ct>Kiełbasa</ct><ct>1</ct><ct>10.00</ct><c colspan="2" /><c><line /></c><c colspan="2">Kwota do zapłaty Gość 2:</c><ct>10.00</ct><linecell /><c colspan="2">SUMA DO ZAPŁATY:</c><ct>41.00</ct></cells></table><np /><center><split>
DZIĘKUJEMY! PROSZĘ WRÓĆ PONOWNIE!
</split></center><np /><np /><center>Miłego dnia!</center><np /></doc>
Wynik
|****************************************** |
|Moja restauracja ----- Meat & Ale LLC |
|NIP 45345345345656 |
|****************************************** |
| RACHUNEK GOŚCIA |
|Sala jadalna: Nowa sekcja (1) Stolik: 2|
|Otwarte: 23.12.2010 16:37 Zamówienie nr 852|
|Kelner: James |
|------------------------------------------------------------|
|Nazwa Ilość Kwota|
|------------------------------------------------------------|
|Gość 1 |
|Kiełbasa 1 10.00|
| +1 1.00|
|Wódka. Bezalkoholowa. Tak, to możliwe ;) 1 20.00|
| +9 |
| ------|
|Kwota do zapłaty Gość 1: 31.00|
| |
|Gość 2 |
|Kiełbasa 1 10.00|
| ------|
|Kwota do zapłaty Gość 2: 10.00|
|------------------------------------------------------------|
|SUMA DO ZAPŁATY: 41.00|
| |
| DZIĘKUJEMY! PROSZĘ WRÓĆ PONOWNIE! |
| |
| |
| Miłego dnia! |
| |