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 fiskalne kasy rejestrujące 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 „|”.

Znacznik dokumentu nie zależy od urządzenia i jest dostosowywany do możliwości konkretnej drukarki w momencie drukowania. Po wydrukowaniu dokumentu, taśma jest cięta, jeśli urządzenie to obsługuje.

Znacznik dokumentu działa 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 drukowaniem dokumentu.
Działa tylko dla drukarek.
fontf0, f1, f2, barcode, qrcodeWybór czcionki (zobacz Czcionki)
aligncenter, justify, left, rightWybór wyrównania (zobacz Wyrównanie)
formattercut, split, wrapWybór zawijania tekstu (zobacz Zawijanie Tekstu)

Znaczniki formatu

Czcionki

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

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

Znaczniki Czcionek

NazwaFunkcja
<f0></f0>Formatowanie osadzonej zawartości z rozmiarem czcionki 0.
<f1></f1>Formatowanie osadzonej zawartości z rozmiarem czcionki 1.
<f2></f2>Formatowanie osadzonej zawartości z rozmiarem czcionki 2.
<barcode></barcode>Formatowanie osadzonego tekstu 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>Formatowanie osadzonego tekstu jako kod 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 kodu QR i poziomu korekcji. 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. Może się różnić 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 (Interpretacja Czytelna dla Człowieka) powinien być dodany.

Rozmiary Czcionek Specyficzne dla Urządzenia

W tabeli, każdy rozmiar czcionki ma określoną liczbę znaków na linię.

Nazwa urządzeniaFont0Font1Font2
Comstar251515
Epson TM-T88422821
Epson TM-U220 (zestaw znaków gb2312)323216
Epson TM-U220 (wszystkie zestawy znaków poza gb2312)303015
SPrint TM200723636
SPrint TM200 Min484824
Shtrih-600302415
Posiflex422821
STAR SPxxx drukarka igłowa422317
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 jednoliterowe, 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. Tagi podane w tabeli pozwalają na zmianę wyrównania wszystkich osadzonych elementów.

Tagi wyrównania 

NazwaFunkcja
<center></ center>Wyśrodkuj swoją treść
<justify></justify>Wyjustuj swoją treść
<left></left>Wyrównaj swoją treść do lewej
<right></right>Wyrównaj swoją treść do prawej

Drukowanie obrazów 

Domyślnie drukowanie obrazów jest wyłączone.

Tagi drukowania obrazów 

NazwaFunkcja
<logo>index</logo>Drukuj wcześniej zaimportowany obraz z pamięci nieulotnej z indeksu numerycznego.
<image>base64</image>
Drukuj obraz monochromatyczny 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, przycięty równomiernie po lewej i prawej stronie
    • left — obraz jest wyrównany do lewej, przycięty tylko prawy brzeg
    • right — obraz jest wyrównany do prawej, przycięty tylko lewy brzeg
  • fit — obraz jest proporcjonalnie rozciągany lub kompresowany, aby zająć całą szerokość taśmy paragonu (lub wysokość etykiety).

Zawijanie Tekstu 

Domyślnie tekst może być zawijany w dowolnym miejscu.

Tabela pokazuje tagi, które można użyć do zawijania tekstu.

Tagi Zawijania Tekstu 

NazwaFunkcja
<split></split>Podziel tekst na linie i zawijaj przy znakach spacji (spacje, tabulacja itp.).
<wrap></wrap>Podziel tekst na linie i zawijaj w dowolnym miejscu.
<cut></cut>Przytnij tekst, który nie mieści się w linii.
<br />Złamanie linii. Złamanie następuje, jeśli bieżąca linia jest pusta. Dowolna liczba <br /> podanych w rzędzie ostatecznie spowoduje tylko jedną pustą linię.
<np />Nowy akapit. Po zastosowaniu, następny tekst zostanie 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 />Nierozdzielna spacja. Słowa podzielone nierozdzielną spacją są traktowane jako jedno słowo. Oznacza to, że nie zostaną podzielone, jeśli zostanie zastosowany formatowanie split lub wyrównanie justify.

Inne Tagi Formatowania 

Domyślnie przestrzeń między znakami jest wypełniana znakami spacji. Tag może być użyty do zmiany tego zachowania.

Inne Tagi Formatowania 

NazwaFunkcja
<fill />Redefiniuje znak używany do wypełnienia przestrzeni. Nowy znak (lub zestaw znaków) jest ustawiany za pomocą atrybutu @symbol.
Nie jest dziedziczony, jeśli jest otoczony tagiem <fill />.

Należy wziąć pod uwagę, że tag <fill /> nie redefiniuje 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 tabeli jest podstawową metodą formatowania dokumentów.

Tabela jest definiowana za pomocą tagu

, który zawiera obowiązkowe tagi podrzędne: i , które z kolei powinny zawierać co najmniej jeden atrybut kolumny i komórki.

Atrybuty
NazwaMożliwe WartościFunkcja
cellspacingWartość całkowita, która jest większa lub równa 0.
Domyślnie: 1
Szerokość w znakach wcięcia wewnętrznego kolumny.

Przykład 3. Prosty Dokument z Tabelą 

<doc><table><columns><column /></columns><cells><c>Text</c></cells></table></doc>

Definicje Kolumn 

Kolumny są definiowane za pomocą tagów <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 czcionka, wyrównanie i formater (zobacz 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 do automatycznego dopasowywania kolumn.
maxwidthWartość całkowita większa lub równa 1.
Domyślnie: nieokreślona
Maksymalna szerokość kolumny w symbolach.

Używane tylko do automatycznego dopasowywania kolumn.
widthWartość całkowita większa lub równa 1.
Domyślnie: nieokreślona
Stała szerokość kolumny.

Nie można używać razem z autowidth.
valignbottom, center, top
Domyślnie: top
Pionowe wyrównanie w komórkach kolumny.
aligncenter, justify, left, rightWybór wyrównania (zobacz Wyrównanie)
formattercut, split, wrapWybór zawijania tekstu (zobacz Zawijanie Tekstu)

Kolumny, które się nie rozciągają (autowidth) i nie mają określonego atrybutu szerokości, równomiernie dzielą pozostałą przestrzeń.

Definicje Komórek

Komórki są definiowane przez tagi lub w ramach tagu , 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.

Rozciągające się kolumny (autowidth) powinny zawierać co najmniej jedną komórkę , która jest używana do określenia szerokości kolumny, a także limitów rozciągania oraz minwidth i maxwidth.

Atrybuty i

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 wstawiane w tabele.

Ale jeśli tabela jest wstawiona do komórki, która nie zajmuje całego wiersza, czcionka jest stała 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>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 przy użyciu czcionek 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.

DocPreprocess.xslt Makra

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.

DocPreprocess.xslt Makra

Nazwa TagaOpis
<line />

Drukuje jedną linię wypełnioną symbolem @symbols. Domyślnie @symbols=‘-’, co oznacza, że otrzymujemy poziomą linię na całej szerokości dokumentu w wyniku zastosowania taga <line />.
Wynikowy znacznik:

XML
<fillsymbols="@symbols"><np/></fill>
<linecell />

Dodaje komórkę na całej szerokości tabeli wypełnioną symbolem @symbols. Domyślnie @symbols=‘-’, co oznacza, że otrzymujemy poziomą linię na całej szerokości tabeli w wyniku zastosowania taga <linecell />.
Wynikowy znacznik:

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

Drukuje parę wartości @left i @right w jednej linii, wyrównane 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 gościa

<doc><left><spli<span>i</span>t></center><np /><np /><center>Miłego dnia!</center><np /></doc>

Wynik

|******************************************                  |

|M restauracja ----- Meat & Ale LLC                           |

|NIP 45345345345656                                       |

|******************************************                  |

|                       RACHUNEK GOŚCIA                           |

|Sala: Nowa sekcja (1)                        Stół: 2|

|Otwarte: 23.12.2010 16:37                        Nr zamówienia 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 należna Gość 1:                                    31.00|

|                                                            |

|Gość 2                                                     |

|Kiełbasa                                              1 10.00|

|                                                      ------|

|Kwota należna Gość 2:                                    10.00|

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

|RAZEM DO ZAPŁATY:                                     41.00|

|                                                            |

|                  DZIĘKUJEMY! ZAPRASZAMY PONOWNIE!             |

|                                                            |

|                                                            |

|                        Miłego dnia!                    |

|                                                            |