Przejdź do głównej zawartości

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, znanych również jako kasy fiskalne lub KFs.

Podstawową jednostką drukowania jest dokument XML z używanym jako znacznik główny.

Przykład 1. Prosty dokument

Prosty dokument utworzony 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 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 specyficznych możliwości drukarki w momencie drukowania. Po wydrukowaniu dokumentu taśma jest odcinana, 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

NazwaMożliwe wartościFunkcja
bellPusty ciąg (sprawdzenie dostępności)Dzwonek dzwoni przed wydrukowaniem dokumentu.
Działa tylko dla drukarek.
fontf0, f1, f2, barcode, qrcodeWybór czcionki (patrz Czcionki)
aligncenter, justify, left, rightWybór wyrównania (patrz Wyrównanie)
formattercut, split, wrapWybór zawijania słów (patrz Zawijanie tekstu)

Znaczniki formatowania

Czcionki

Istnieją trzy rozmiary czcionek. Są oznaczone od 0 do 2 w kolejności rosnącej rozmiaru: czcionka 0 jest najmniejsza, czcionka 2 jest największa. Jeśli nie określono inaczej, domyślnie używana jest czcionka 0.

Znaczniki podane w poniższej tabeli zmieniają rozmiar czcionki dla wszystkich elementów zawartych w tych znacznikach.

Znaczniki czcionek

NazwaFunkcja
<f0></f0>Formatuje zawartość osadzoną z rozmiarem czcionki 0.
<f1></f1>Formatuje zawartość osadzoną z rozmiarem czcionki 1.
<f2></f2>Formatuje zawartość osadzoną z rozmiarem czcionki 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 , , , i , na przykład:

tekst z odstępem

Atrybuty

NazwaMożliwe wartościWartości domyślneFunkcja
​align​left, center, right​centerWyrównuje obraz poziomo.
correctionlow, medium, high, ultramediumPoziom korekcji Nie zaleca się używania ultra i high dla małych rozmiarów, ponieważ może to spowodować błąd odczytu kodu QR.
sizetiny, small, normal, large, extralargenormalRozmiar kodu QR

Atrybuty

NazwaMożliwe wartościWartości domyślneFunkcja
​align​left, center, right​centerWyrównuje obraz poziomo.
heightRatiodowolna liczba dziesiętna (użyj kropki jako separatora dziesiętnego)0.3-0.35Stosunek wysokości kodu kreskowego do jego szerokości. Różni się w zależności od modelu drukarki, w zależności od tego, czy strefa ciszy jest uwzględniona w szerokości kodu kreskowego, czy nie.
hrion, offonWskazuje, czy tekst kodu kreskowego (Human Readable Interpretation) powinien być dodany.

Rozmiary czcionek specyficzne dla urządzenia

W tabeli podano liczbę znaków na linię dla każdego rozmiaru czcionki.

Nazwa urządzeniaCzcionka0Czcionka1Czcionka2
Comstar251515
Epson TM-T88422821
Epson TM-U220 (zbiór znaków gb2312)323216
Epson TM-U220 (wszystkie zbiory znaków oprócz gb2312)303015
SPrint TM200723636
SPrint TM200 Min484824
Shtrih-600302415
Posiflex422821
Drukarka igłowa STAR SPxxx422317
SP298423420
STAR TSPxxx483819
Drukarka OPOS482419
Zebra EplZależy od ustawień dpiZależy od ustawień dpiZależy od ustawień dpi
Epson TM-U295352114

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ą na zmianę wyrównania wszystkich osadzonych elementów.

Tagi wyrównania 

NazwaFunkcja
<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 

NazwaFunkcja
<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

NazwaMożliwe wartościWartości domyślneFunkcja
​align​left, center, right​centerWyrównuje obraz poziomo.
resizeModeclip, fitclip

Tryb zmiany rozmiaru obrazu.

  • clip — obraz nie jest rozciągany ani kompresowany. Jeśli szerokość obrazu jest większa niż szerokość etykiety, obraz zostanie przycięty w zależności od wartości parametru align:
    • center — obraz jest wyśrodkowany, przycinany równomiernie z lewej i prawej strony
    • left — obraz jest wyrównany do lewej, przycinany jest tylko prawy brzeg
    • right — obraz jest wyrównany do prawej, przycinany jest tylko lewy brzeg
  • fit — obraz jest proporcjonalnie rozciągany lub kompresowany, aby zajmować całą szerokość taśmy paragonu (lub wysokość etykiety).

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 

NazwaFunkcja
<split></split>Dzieli tekst na linie i zawija przy znakach 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 następujący tekst będzie podany w nowej linii, natomiast 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 />Spacja nierozdzielająca. Słowa oddzielone 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 może być użyty do zmiany tego zachowania.

Inne tagi formatowania 

NazwaFunkcja
<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> 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 to podstawowa metoda formatowania dokumentów.

Tabela jest definiowana przez tag

, który zawiera obowiązkowe tagi potomne: oraz , które z kolei powinny zawierać co najmniej jedną kolumnę i jedną komórkę.

Atrybuty  
NazwaMożliwe wartościFunkcja
cellspacingWartość 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ż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

NazwaMożliwe wartościFunkcja
autowidthDowolna. Atrybut musi być określony.Czy kolumna rozciąga się, aby dopasować zawartość.
minwidthWartość 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.
maxwidthWartość 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.
widthWartość 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.
valignbottom, center, top
Domyślnie: top
Wyrównanie pionowe w komórkach kolumny.
aligncenter, justify, left, rightWybór wyrównania (patrz Wyrównanie)
formattercut, split, wrapWybó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 wewnątrz tagu <cells /> od lewej do prawej.

Domyślnie każdy wiersz tabeli ma taką samą liczbę komórek i kolumn.

Tag może otaczać dowolną zawartość, włącznie z innymi tagami formatowania.

Tag może zawierać tylko tekst.

Kolumny rozciągające się (autowidth) powinny zawierać co najmniej jedną komórkę , która służy do określenia szerokości kolumny oraz limitów rozciągania, minwidth i maxwidth.

Atrybuty <c /> i <ct />

NazwaMożliwe wartościFunkcja
colspanWartość całkowita większa lub równa 0.
Domyślnie: 1
Łączy określoną liczbę kolumn.
0 — komórka zajmuje całą szerokość tabeli.
fontf0, f1, f2Ustawia 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 zmiany czcionki zagnieżdżonych wierszy tabeli 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>jakiś tekst</c><c>inny tekst</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>tekst w tabeli nadrzędnej</c></cells></table></doc>

, to symbole oznaczające wiersze drukowane czcionkami f0 i f1.

W tym przykładzie pierwszy wiersz ma zastosowaną czcionkę , ponieważ jest to domyślna czcionka dokumentu, która nie została zmieniona.

Czcionka zagnieżdżonej tabeli jest określona przez czcionkę wiersza tabeli nadrzędnej.

Czcionka drugiego wiersza zagnieżdżonej tabeli (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 taguOpis
<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.
Wynikowy znacznik:

XML
<fillsymbols="@symbols"><np/></fill>
<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.
Wynikowy znacznik:

XML
<ccolspan="0"><fillsymbols="@symbols"><np/></fill></c>
<pair />

Drukuje parę wartości @left i @right w jednej linii, wyrównanych odpowiednio do lewej i prawej strony.
Jeśli @fit=’left’, wynikowy znacznik wygląda następująco:

XML
<table><columns><columnalign="left"autowidth=""/><columnalign="right"/></columns><cells><ct>@left</ct><ct>@right</ct></cells></table>

Jeśli @fit='right', wynikowy znacznik wygląda następująco:

XML
<table><columns><columnalign="left"/><columnalign="right"autowidth=""/></columns><cells><ct>@left</ct><ct>@right</ct></cells></table>
leftpair

Drukuje parę wartości @left i @right w jednej linii, obie wyrównane do lewej.  
Wynikowy znacznik:

XML
<table><columns><columnalign="left"autowidth=""/><columnalign="left"/></columns><cells><ct>@left</ct><ct>@right</ct></cells></table>

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: 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">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">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                                                        |

|                                                      ------|

|Do zapłaty Gość 1:                                    31.00|

|                                                            |

|Gość 2                                                     |

|Kiełbasa                                              1 10.00|

|                                                      ------|

|Do zapłaty Gość 2:                                    10.00|

|------------------------------------------------------------|

|SUMA DO ZAPŁATY:                                          41.00|

|                                                            |

|                  DZIĘKUJEMY! PROSIMY O PONOWNĄ WIZYTĘ!             |

|                                                            |

|                                                            |

|                        Miłego dnia!                    |

|                                                            |