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 i drukarek paragonów, zwanych również kasami fiskalnymi lub KSF.
Podstawową jednostką drukowania jest dokument XML z
Przykład 1. Prosty dokument
Prosty dokument stworzony za pomocą 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 jednej obsługiwanej czcionki 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, co 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 wydrukowaniem dokumentu. Działa tylko dla drukarek. |
font | f0, f1, f2, barcode, qrcode | Wybór czcionki (patrz Czcionki) |
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
Czcionki
Są trzy rozmiary czcionek. Oznaczone są od 0 do 2 w kolejności rosnącej rozmiaru: czcionka 0 jest najmniejsza, czcionka 2 największa. Jeśli nie jest określona, domyślnie używana jest czcionka 0.
Znaczniki podane w tabeli poniżej zmieniają rozmiar czcionki dla wszystkich elementów wewnątrz tych znaczników.
Znaczniki czcionek
Nazwa | Funkcja |
<f0></f0> | Formatuje osadzone treści czcionką o rozmiarze 0. |
<f1></f1> | Formatuje osadzone treści czcionką o rozmiarze 1. |
<f2></f2> | Formatuje osadzone treści czcionką o rozmiarze 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 kod kreskowy 2D (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 czcionki
Aby zmienić styl czcionki, 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 uwzględniona w szerokości kodu kreskowego, czy nie. |
hri | on, off | on | Wskazuje, czy tekst kodu kreskowego (Human Readable Interpretation) powinien być dodany. |
Specyficzne dla urządzenia rozmiary czcionek
W tabeli podano liczbę znaków na linię dla każdego rozmiaru czcionki.
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żyj atrybutu czcionki dla komórek tabeli.
Wyrównanie
Domyślnie zawartość jest wyrównana do lewej. Tagii podane w tabeli pozwalają na zmianę wyrównania 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.
Tagi zawijania tekstu
Nazwa | Funkcja |
<split></split> | Dzieli tekst na linie i zawija w miejscach znaków spacji (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 kolejny tekst będzie podany w nowej linii, podczas gdy poprzednia linia będzie wyrównana do lewej, jeśli akapit ma jakiekolwiek formatowanie szerokości (MS Word działa w ten sam sposób). |
<nobr /> | Niełamliwa spacja. Słowa podzielone niełamliwą spacją są traktowane jako jedno słowo. Oznacza to, że nie zostaną podzielone, jeśli zastosowany jest formatter 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 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> tekst ze spacją </left><fill symbols="."><br /><left> tekst ze spacją </left><np /><table><columns><column /><column /></columns><cells><c>tekst po lewej</c><c><right>tekst po prawej</right></c></cells></table></fill></doc>
Wynik
| tekst ze spacją |
| tekst ze spacją .............|
|..............................|
|tekst po lewej tekst po prawej|
Tabele
Formatowanie tabel to podstawowa metoda 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>Tekst</c></cells></table></doc>
Definicje kolumn
Kolumny są definiowane przez tagi <column /> wewnątrz tagu <columns /> od lewej do prawej.
Możesz 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 (zobacz 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 (patrz Wyrównanie) |
formatter | cut, split, wrap | Wybór zawijania słów (patrz 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ć co najmniej 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 | Łączy 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. |
Tabele zagnieżdżone
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 bieżącej czcionce wiersza tabeli nadrzędnej. Atrybuty zmieniające czcionkę wierszy tabeli zagnieżdżonej będą ignorowane.
Tabela zagnieżdżona 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 pewnych typowych struktur.
Użyjmy @attribute, aby oznaczyć wartość 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 znacznik 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 dla gościa
<doc><left><split>
**
Moja restauracja ----- Meat & Ale LLC
NIP 45345345345656
**
</split></left><center>RACHUNEK GOŚCIA</center><pair fit="right" left=“Sala: 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! PROSIMY O PONOWNĄ WIZYTĘ!
</split></center><np /><np /><center>Miłego dnia!</center><np /></doc>
Wynik
|****************************************** |
|Moja restauracja ----- Meat & Ale LLC |
|NIP 45345345345656 |
|****************************************** |
| RACHUNEK GOŚCIA |
|Sala: 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! PROSIMY O PONOWNĄ WIZYTĘ! |
| |
| |
| Miłego dnia! |
| |