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, zwanych także kasami fiskalnymi lub FCR.

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

Przykład 1. Prosty dokument

Prosty dokument stworzony 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 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 specyficznych 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

NazwaMożliwe wartościFunkcja
bellPusty ciąg (sprawdzenie dostępności)Dzwonek dzwoni przed drukowaniem 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 wewnątrz tych znaczników.

Znaczniki czcionek

NazwaFunkcja
<f0></f0>Formatuje osadzoną zawartość czcionką o rozmiarze 0.
<f1></f1>Formatuje osadzoną zawartość czcionką o rozmiarze 1.
<f2></f2>Formatuje osadzoną zawartość 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 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 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 skutkować błędem 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 wliczona w szerokość kodu kreskowego, czy nie.
hrion, offonWskazuje, 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ą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 ściskany. 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 ściskany, 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 /> ostatecznie da tylko jedną pustą linię.
<np />Nowy akapit. Po zastosowaniu, kolejny tekst zostanie umieszczony w nowej linii, podczas gdy poprzednia linia zostanie wyrównana do lewej, jeśli akapit ma jakiekolwiek formatowanie szerokości (MS Word działa podobnie).
<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 formatator split 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 między kolumnami 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ż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 (patrz Przegląd).

Atrybuty

NazwaMożliwe wartościFunkcja
autowidthDowolna. Atrybut musi być określony.Czy kolumna rozciąga się, aby dopasować się do zawartości.
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ą pozostałą przestrzeń równo.

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 tym inne tagi formatowania.

Tag może zawierać tylko tekst.

Kolumny rozciągające się (autowidth) powinny zawierać przynajmniej 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 bieżącej 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>jakiś 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 do oznaczenia wartości 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.
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 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 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! 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 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! PROSIMY O PONOWNĄ WIZYTĘ!             |

|                                                            |

|                                                            |

|                        Miłego dnia!                    |

|                                                            |