Wzorcem dokumentu nazywamy zbiór, opisujący postać dokumentu (wydruku), to jest zawartość i układ danych na wydruku.
Wzorce dokumentów dla systemów NA-TRES, ZO-TRES, MG-TRES i innych są udostępniane przez TRES, można je również przygotować samodzielnie - od nowa lub w oparciu o istniejące. Wzorce definiuje się w systemie NZ-TRES.
Jeżeli nie przygotowano własnych wzorców, system posłuży się wzorcem standardowym o nazwie TRESxxff.dd lub TRESxxff.dd, gdzie:
| xx - symbol systemu, np. NA, ZO, MG |
| ff - symbol firmy, np. FP - Firma Przykładowa |
| dd - rodzaj dokumentu, np. FA - Faktura sprzedaży |
Liczba znaków danego pola.
Np. liczba znaków dla "Firma - NIP" wynosi 13 znaków.
Dla pól cyfrowych format dodatkowo określa liczbę miejsc po przecinku.
Elementy składowe formularza wzorca, które podczas drukowania zastępowane są konkretnymi danymi z kartotek czy dokumentów lub wyliczonymi wartościami.
Pola danych mają swój typowy format i opis przewidziany przez autorów systemu. Format i opis można zmienić i dopasować do swoich potrzeb (patrz: Korekta pól danych dla wzorca)
Typ linii. Więcej na ten temat w rozdziale "Definiowanie wzorców".
Typ dokumentu.
Dla każdego rodzaju dokumentu (np. faktury sprzedaży) można zdefiniować wiele różnych wzorców.
Tabela zawiera listę symboli i nazw wzorców.
Definicja oczekiwanej postaci dokumentu, wykorzystywana podczas wydruku.
Użytkownik może wybrać pomiędzy postacią standardową wydruku (zaproponowaną przez TRES) a postacią przez siebie zdefiniowaną.
Wg własnych wzorców można drukować jedynie pojedyncze dokumenty (faktury, dokumenty zapłat, noty). Nie można definiować postaci zestawień i raportów.
Zbiór tekstowy (ASCII), w którym zapisane są definicje oczekiwanej postaci dokumentu. Do definiowania wzorców służy specjalna funkcja - rodzaj edytora tekstowego. Zbior tekstowy może być także redagowany przy pomocy popularnych edytorow tekstowych, np. Notepad, vi.
Wzorzec, który automatycznie zostanie użyty podczas wydruku. Jeżeli żaden wzorzec nie zostanie oznaczony jako obowiązujący, przy wydruku wyświetlona będzie lista wzorców, umożliwiający wybór.
Wzorzec przygotowany i udostępniony przez TRES. Wzorców standardowych nie można korygować ani usuwać. Można je natomiast kopiować i dokonywać modyfikacji na jego kopiach.
Wzorzec zdefiniowany przez użytkownika.
Znaki sterujące pozwalają na wyróżnienie wskazanego fragmentu tekstu lub pola danych. Standardowo dostępne są następujące znaki sterujące:
| Druk normalny |
| Kasuj druk normalny |
| Druk zagęszczony |
| Kasuj druk zagęszczony |
| Druk wytłuszczony |
| Kasuj druk wytłuszczony |
| Druk rozstrzelony (podwójnej szerokości) |
| Kasuj druk rozstrzelony |
Wyżej wymienione znaki definiowane są w postaci kodów typowych dla drukarek IBM/Epson (większość drukarek igłowych na polskim rynku). W przypadku drukarek atramentowych i laserowych może zaistnieć konieczność indywidualnego zdefiniowania znaków sterujących (funkcja Parametry drukowania w systemie AD-TRES).
Poniższy opis wykonany jest na przykładzie definicji wzorca faktury sprzedaży, tworzonego w systemie NZ-TRES.
Po uruchomieniu funkcji "Wzorce->Dokumenty sprzedaży->Definicje wzorców->Dopisywanie", należy wybrać rodzaj dokumentu, dla którego tworzony będzie wzorzec, oraz symbol i nazwę wzorca.

W oknie można już definiować swój wzorzec. Może on zawierać następujące elementy (obiekty):
dowolne teksty "stałe", które pojawią się na dokumencie, np. napis "Wystawił" u dołu faktury.
Do wzorca moża wpisać także znaczniki HTML, które pozwolną na wygenerowanie dokumentu w formacie html.
ramki: pojedyncze, podwójne, linie pionowe, poziome, narożniki
pola danych, których treść pochodzi z kartotek lub jest wyliczana przez system, np. "nazwa odbiorcy", "ilość", "wartość sprzedaży". Pola te na wzorcu są wyróżnione odwórconymi wykrzyknikami (¡).
znaki sterujące drukarką
oznaczenie rodzaju linii (T, S, P, O)
T - tekst, który pojawi się tylko jeden raz na dokumencie (niezależnie od liczby stron dokumentu),
S - tekst, który pojawi się na każdej stronie dokumentu
P - tekst, który pojawi się dla każdej pozycji dokumentu
D - tekst opisu z katalogu usług (tylko NA-TRES)
K - pozycja faktury korygującej (tylko NA-TRES)

Wyświetlone zostanie okno, umożliwiające utworzenie wzorca o wybranej nazwie. W dolnej części okna podane są aktualne współrzędne kursora - numer wiersza i kolumny oraz informacja o trybie edycji. "Wstaw" - oznacza tryb dopisywania znaków, "Zamień" - tryb zamiany znaków. Zmianę trybu wykonuje się klawiszem [Insert]. Poniżej tego pola podane są dostępne funkcje.

Aby wstawić nowy element do wzorca, należy posłużyć się funkcją [F10] - element.
Jej wywołanie pozwala wybrać obiekt wybranego typu.

Rodzaje linii:

Pola danych:

Rodzaj ramki:

Funkcja [F5] - znaki sterujące wyświetla okno, w którym można przeglądać i modyfikować definicje znaków sterujących drukarką. Więcej na ten temat w rozdziale "Znaki sterujące".
Przy użyciu fukcji [F10] - oznacz ("Wzorce->Dokumenty sprzedaży->Definicje wzorców->Korekta) można wskazać dla każdego rodzaju dokumentu ten wzorzec, który ma być obowiązujący. Wzorzec ten będzie automatycznie wykorzystany podczas wydruku.

Znaki sterują pracą drukarki. Wysyłając ustaloną sekwencję znaków do drukarki, można sprawić, że drukarka zmieni wygląd drukowanych znaków, np. krój liter na pogrubione, zegęszczone, podkreślone.
Znaki sterujące należy podać (lub zmodyfikować) gdy znaki dostarczone przez TRES, dopasowane do najbardziej popularnych drukarek, nie sterują drukarką użytkownika.

Znaki sterujące są powiązane z operatorem, tzn. można zdefiniować indywidualne znaki dla każdego operatora wpisanego w tabeli operatorów.
Znaki, które podane są w instrukcji obsługi drukarki, należy wpisać do tablicy znaków sterujących. Jest ona dostępna w funkcji "Wzorce->Dokumenty sprzedaży->Definicje wzorców->Dopisywanie->Znaki sterujące" w systemie NZ-TRES lub w funkcji "Trawers->Operatorzy (użytkownicy)->Parametry aktywnego operatora->Znaki sterujące dla wzorców dokumentów" w systemie AD-TRES. Należy wpisać wartości dziesiętne znaków, poprzedzone znakiem ukośnika ("\").
Przykład 1. Sekwencja włączające druk wytłuszczony
\027\069 - odpowiada to zapisowi heksadecymalnemu: 1B,45
Po uaktywnieniu nowej funkcji wydruku w parametrach operatora zmienia się reakcja na wybór znaków sterujących podczas edycji wzorca. Zamiast listy 15 znaków sterujących operatora pojawia się dodatkowe menu z którego należy wybrać grupę znaku sterującego, a następnie znak sterujący.
Znaki sterujące własne są zachowane dla zgodności wstecz i wykorzystywane tylko przy wydrukach do pliku PRN i portu bezpośrednio (sterownik Port). W urządzeniu wydruku, którym będzie realizowany wydruk przy użyciu danego wzorca musi być zdefiniowany ciąg sterujący dla znaków sterujących własnych. Taki sam jaki wcześniej był zdefiniowany w parametrach operatora, który realizował wydruk przy użyciu danego wzorca. Można to osiągnąć kopiując znaki sterujące od wskazanego operatora (administrator systemu może wskazać dowolnego operatora).
Znaki sterujące czcionek: niektóre sterowniki (win32, cups, port, plik prn, plik html, plik PDF) mają możliwość określenia reakcji polegającej na zmianie czcionki po wystąpieniu danego znaku sterującego. W urządzeniu ze sterownikiem win32, plik html określa się dla poszczególnych znaków sterujących wprost czcionkę dostępną w systemie. W urządzeniu ze sterownikiem 'port' konieczne jest podanie sekwencji znaków wysyłanych do drukarki, które spowodują zmianę czcionki na właściwą.
Znaki sterujące formatujące: spowodują zmianę czcionki na wytłuszczoną, pochyloną, podkreśloną. Jedynie sterownik 'Port' i 'plik PRN' wymagają określenia reakcji na dany znak sterujący.
Znaki sterujące specjalne: umożliwiają np. wstawienie obrazka.
Użycie znaków specjalnych:
Znaki specjalne mogą być parametryzowane. Dodatkowe parametry wprowadzane są w nawiasach {...}. Nawias otwierający musi znajdować się tuż za znakiem sterującym (nie może ich rozdzielać spacja czy inny znak).
Jeżeli występuje więcej niż jeden parametr, rozdzielane są one średnikami (opcjonalnie przecinkami).
Nawiasy kwadratowe [...] oznaczają, iż dany parametr jest opcjonalny i można go nie podać. W jego miejscu program użyje wartości domyślnej. Dla pozycji wartością domyślną jest aktualne położenie kursora.
Pominięcie parametru nie zwalnia od obowiązku oddzielenia go od pozostałych parametrów średnikiem. Np. pominięcie pierwszego i drugiego parametru, ale podanie trzeciego wymaga napisania {;;15} gdzie 15 to przykładowa wartość trzeciego parametru.
Wszelkie parametry określające położenie i rozmiar wyrażane są w milimetrach i określają położenie na aktualnie drukowanej stronie.
Istnieje możliwość podania wymiaru w jednostkach aktualnej wysokości wiersza lub szerokości znaku semigraficznego. Przy rozmiarze należy wtedy dopisać 'em' np. {1em; 0.5em} {+1.5em}.
Parametry określające położenie można podać bezwzględnie (od krawędzi strony) np. {10;15}, albo względem aktualnego położenia kursora np. {+15; -1.5}.
Opis znaków sterujących specjalnych:
Wstaw obrazek - ţ49{plik.bmp; [szerokosc];[wysokosc]}
Przykład: ţ49{../adtres/logo.bmp; 30; 15}
Działanie: Wstawia obrazek
Parametry:
ścieżka i nazwa do pliku z obrazkiem
szerokość obrazka w milimetrach na wydruku (opcjonalny)
wysokość obrazka w milimetrach na wydruku (opcjonalny)
Opis:
Jeżeli parametry wysokość i szerokość zostaną pominięte przyjęte zostaną oryginalne rozmiary obrazka. Podanie tylko jednego z parametrów szerokość albo wysokość spowoduje przeskalowanie drugiego rozmiaru obrazka tak aby zachował proporcje.
Plik domyślnie poszukiwany jest w katalogu systemu w którym aktualnie pracujemy; np. NATRES.
Sterownik win32 pozwala użyć jedynie plików typu BMP.
Zakotwiczenie - ţ50{[pozycja X], [pozycja Y]}
Przykłady: ţ50{20;25} ţ50{15} ţ50{;30.5} ţ50{+100} ţ50{-20.3;+30.5}
Działanie: Przemieszcza kursor
Parametry:
położenie w osi X w prawo (opcjonalny)
położenie w osi Y w dół (opcjonalny)
Opis:
Podawane wartości są w milimetrach. Lewy górny róg strony ma pozycje 0,0. Parametry określające pozycje X i Y są opcjonalne. Podanie tylko jednego z nich spowoduje przemieszczenie w obrębie aktualnej kolumny albo wiersza. Zakotwiczenie pozwala przemieścić kursor w inne miejsce w obrębie strony. Wszelkie elementy drukowane będą od nowego położenia. Pozwala np. wskazać położenie rysunku na stronie, przemieścić całą tabelę albo rozmieszczać tekst w sposób bardziej swobodny.
Czcionka - ţ51{[nazwa], [rozmiar]}
Przykłady: ţ51{Arial; 15} ţ51{Times New Roman} ţ51{;5}
Działanie: Zmienia krój i rozmiar czcionki
Parametry:
systemowa nazwa czcionki (opcjonalny)
rozmiar w punktach typograficznych (opcjonalny)
Opis:
Pominięcie któregoś z parametrów spowoduje przyjęcie go z aktualnie obowiązującej czcionki.
Stosowanie znaku sterującego czcionką wymaga konsekwencji. Nie można pozostawić we wzorcu tekstu o nieustalonej czcionce (szczególnie rozmiarze). Sytuacja taka spowoduje, iż tekst ten przyjmie czcionkę z poprzednio drukowanej strony. Przy wydruku wielu kopii z różnym sortowaniem spowoduje to nieoczekiwany rezultat (w każdej kopii dany tekst może zostać wydrukowany inną czcionką).
Kolor tekstu - ţ52{kolor}
Przykłady: ţ52{#FF0000} ţ52{#0F0} ţ52{blue} ţ52{czarny}
Działanie: Zmienia kolor tekstu
Parametry:
kolor tekstu
Opis:
Kolor podaje się zgodnie z zasadami obowiązującymi dla HTML. Są trzy sposoby określenia koloru: Przez podanie liczby w kodzie szesnastkowym, podanie skróconej liczby w kodzie szesnastkowym albo poprzez podanie nazwy.
Zapis szesnastkowym charakteryzuje się tym, iż rozpoczyna się od znaku #. Za nim występują cyfry i litery alfabetu od A-F. Kolejne pary znaków odpowiadają za intensywność składowych koloru czerwonego, zielonego i niebieskiego. Podanie #000000 oznacza kolor czarny, a #FFFFFF kolor biały. Czerwony to #FF0000, zielony #00FF00 i odpowiednio niebieski #0000FF.
W zapisie skróconym podaje się jedynie pierwsze znaki z pary. Kolejne znaki odpowiadają więc za intensywność kolejnych składowych czerwonej, zielonej i niebieskiej. Przy tym zapisie można uzyskać zdecydowanie mniej kolorów, ale swobodnie wystarcza do zapisania kolorów podstawowych. Kolor biały to #FFF, czarny #000, szary #888, zielony #0F0, niebieski #00F itd.
Zdecydowanie przyjaźniejszym sposobem jest zapis kolorów słownie. Umożliwia on przedstawienie 16 podstawowych kolorów. Obowiązują nazwy angielskie stosowane w HTML. Trawers rozróżnia także podane nazwy polskie podstawowych kolorów.
| Nazwa | Nazwa opcjonalna | Wartość szesnastkowa | Wartość skrócona |
|---|---|---|---|
| black | czarny | #000000 | #000 |
| red | czerwony | #FF0000 | #F00 |
| lime | #00FF00 | #0F0 | |
| blue | niebieski | #0000FF | #00F |
| yellow | żółty | #FFFF00 | #FF0 |
| aqua | błękitny | #00FFFF | #0FF |
| fuchsia | fuksja | #FF00FF | #F0F |
| silver | srebrny | #C0C0C0 | #CCC |
| white | biały | #FFFFFF | #FFF |
| gray | szary | #808080 | #888 |
| green | zielony | #008000 | #080 |
| purple | purpurowy | #800080 | #808 |
| teal | #008080 | #088 | |
| olive | oliwkowy | #808000 | #880 |
Styl linii - ţ53{[styl]; [szerokość]; [kolor]}
Przykłady: ţ53{solid; 0.1; blue} ţ53{dashdash} ţ53{none}
Działanie: Ustala styl, szerokość i kolor linii
Parametry:
styl linii (opcjonalny)
szerokość linii w mm (opcjonalny)
kolor linii (opcjonalny)
Opis:
Ustala styl linii dla rysowanych ramek, tabelek, linii oraz obramowań prostokątów. Kolor zapisuje się identycznie jak kolor czcionki.
Dostępne style linii: none(brak), solid(ciągły)(-), dash(kreski)(--), dot(kropki)(..), dashdot(kreskakropka)(-.), dashdotdot(kreska2kropki)(-..)
Podanie szerokości linii = 0 spowoduje narysowanie linii o możliwie najmniejszej szerokości (zależne od drukarki). Jeżeli oczekiwane jest zniknięcie linii z wydruku należy użyć stylu linii none.
Dla urządzeń wyjściowych rodzaju win32 styl linii będzie zastosowany tylko gdy szerokość linii wynosi 0.
Linia - ţ54{[[start X];[start Y]];koniec X; koniec Y}
Przykłady: ţ54{10; 15; 20; 25} ţ54{+50}
Działanie: Rysuje linie
Parametry:
współrzędna początku linii w osi X (opcjonalny)
współrzędna początku linii w osi Y (opcjonalny)
współrzędna końca linii w osi X
współrzędna końca linii w osi Y
Opis:
Pozwala narysować swobodnie linie na stronie, także na ukos pod dowolnym kątem.
Prostokąt - ţ55{[X1];[Y1];[X2];[Y2];[kolor]}
Przykłady: ţ55{10; 15; 20; 25; red} ţ55{+10;+15;+20;+25}
Działanie: Rysuje prostokąt i wypełnia kolorem
Parametry:
współrzędna lewej krawędzi prostokąta w osi X (opcjonalny)
współrzędna górnej krawędzi prostokąta w osi Y (opcjonalny)
współrzędna prawej krawędzi prostokąta w osi X (opcjonalny)
współrzędna dolnej krawędzi prostokąta w osi Y (opcjonalny)
kolor wypełnienia (opcjonalny)
Opis:
Rysuje prostokąt o podanych współrzędnych boków. Podanie koloru powoduje wypełnienie prostokąta podanym kolorem. Obramowanie prostokąta rysowane jest aktualnie obowiązującym stylem linii. Przy określaniu pozycji względnych dwa pierwsze parametry wyznaczane są względem położenia kursora, natomiast dwa kolejne względem dwóch pierwszych. Pozwala to narysować prostokąt o wymaganej szerokości i wysokości np. {10; 10; +190; +277} spowoduje narysowanie prostokąta o szerokości 190mm i wysokości 277mm przesuniętego o 10mm od lewej i górnej krawędzi strony.
Format- ţ64{liczba;format}
Przykłady:
ţ64{60500;9,999.99} zwróci 60,500.00
ţ64{20000;9999.99} zwróci ****.**
Działanie: Formatuje zapis liczby
Parametry:
liczba (pole)
format wyniku
Format wyniku składa się z cyfr '9' reprezentujących cyfry, kropki wyznaczającej miejsce podziału części całkowitej i dziesiętnej. Oraz dowolnych innych znaków umieszczonych wprost (oprócz średnika). Wynik będzie zaokrąglony do podanej liczby cyfr dziesiętnych. Szerokość formatu określa szerokość wyniku (dopełnianie spacjami). Gdy wynik nie mieści się w podanej szerokości wyświetlane są ***. Przykładowe formaty: '9999,999.99' '999tys 999zl. 99 groszy'.
Format nie może rozszerzyć pola ponad definicje w tabeli pól. Zwiększy jedynie szerokość na wydruku. Nie może także zwiększyć precyzji zapisu wartości.
Dodawanie - ţ65{składnik;składnik;[format]}
Odejmowanie - ţ66{odjemna ;odjemnik;[format]}
Mnożenie - ţ67{czynnik ;czynnik ;[format]}
Dzielenie - ţ68{dzielna ;dzielnik;[format]}
Przykłady:
ţ65{10.5; 15} zwróci 25.5
ţ67{2; 3} zwróci "6"
ţ66{20;ţ67{2;3}} zwróci "14"
ţ68{60500;14;9,999.99} zwróci "4,321.43" (zaokrąglenie wyniku do 2 miejsc po przecinku)
ţ67{2000;100;9999.99} zwróci "****.**" (przepełnienie)
ţ67{ ţ66{20;10;9.99};10;9999.99} zwróci "___*.**" (przepełnienie w funkcji wewnętrznej)
ţ68{50; 0} zwróci "Arg.!" (błąd argumentu; dzielnikiem nie może być 0)
ţ68{ ţ{50}; 2} zwróci "Wyr.!" (błąd wyrażenia; zapomniano podać argumentu)
Działanie: Zwraca wynik działania matematycznego
Parametry:
argument 1
argument 2
format wyniku (opcjonalny)
Argumentem może być liczba, pole danych reprezentujące wartość liczbową lub inny znak sterujący.
Jeżeli argumentem jest pole jego wartość jest zaokrąglana przed rozpoczęciem wyliczania zgodnie z podanym dla niego formatem w tabeli pól dla wzorców.
Nie podanie formatu spowoduje zaokrąglenie wyniku dzielenia do 2 miejsc po przecinku ( ţ68{8;9} -> 0.89 ).
Wyliczenia wewnętrznych argumentów dokonywane są z precyzją 9 miejsc po przecinku.
Czyli ţ67{ ţ68{1;3};3;9.99999999999} da w wyniku 0.999999999900. Jeżeli wymagana jest większa precyzja obliczenia argumentu wewnętrznego należy zdefiniować jego format. ţ67{ ţ68{1;3;9.999999999999};3;9.99999999999} da w wyniku 1.00000000000
Można dowolnie zawierać znaki sterujące wyliczające wartość w sobie (jako argumenty innych). W efekcie można uzyskać bardziej złożone funkcje wyliczające.
Wynik znaku sterującego może posłużyć także jako argument znaków sterujących graficznych. Można uzyskać w ten sposób np. proste wykresy słupkowe.
Znaki sterujące zwracające wynik działania można użyć do wyliczenia i zaprezentowania wartości na podstawie dostępnych danych. Na przykład można użyć funkcji odejmowania do wyznaczenia ilości pozostałych do realizacji z zamówienia (przykład 3).
Rejestr - ţ70{rejestr;[wartość]}
Przykłady:
ţ70{ Suma ; 100.65 }
ţ70{ Suma ; ţ65{ ţ70{Suma} ; 20.15 } }
ţ64{ ţ70{Suma} ; 9999.99 } zwróci: 120.80
Działanie: Zapamiętuje wartość w rejestrze albo wyświetla zawartość rejestru
Parametry:
rejestr - nazwa rejestru
wartość - wartość zapamiętywana w rejestrze (opcjonalny)
Nazwa rejestru jest dowolna, można także użyć wartości dowolnego pola. Zawartość rejestru także jest dowolna może to być wartość liczbowa albo tekstowa. Ilość jednoczesnych rejestrów także jest dowolna (o ile mają różne nazwy).
Podanie drugiego parametru spowoduje wyłącznie zapamiętanie wartości w rejestrze. Pominięcie drugiego parametru spowoduje wyłącznie zwrócenie zawartości rejestru. Można przepisywać zawartość jednego rejestru do drugiego i używać łącznie ze znakami sterującymi działań matematycznych.
Znak sterujący rejestru pozwala przechować chwilową wartość i użyć jej później w innym miejscu wzorca. Rejestru można także użyć do sumowania lub zliczania wartości (przykłady 4, 5, 6, 7, 8).
Rejestr stron - ţ71{rejestr;[wartość[;]]}
Przykłady:
ţ71{sNr dokum. s;sSs;} - numer ostatniej strony dokumentu (ilość stron wydruku)
ţ71{sNr dokum. ssSs;sLs;} - numer ostatniej pozycji na stronie
ţ71{Stron wydruku; t70{licznik stron}} - użycie w połączeniu z rejestrem do zliczania stron całego wydruku (wszystkie dokumenty)
ţ71{Do przeniesienia sNr dokum. ssSs; Ilość do przeniesienia: ţ70{ilosc do przeniesienia} Wartość: ţ70{wartosc do przeniesienia} } - zapamiętanie wartości do wyświetlenia na końcu strony
ţ71{Do przeniesienia sNr dokum. ssSs} - w stopce strony, wyświetli zapamiętaną uprzednio linię tekstu
Działanie: Zapamiętuje wartość w rejestrze lub wyświetla zawartość rejestru
Parametry:
rejestr - nazwa rejestru
wartość - wartość zapamiętywana w rejestrze (opcjonalny)
(;) - umieszczenie średnika za wartością spowoduje zapamiętanie i jednoczesne umieszczenie zawartości rejestru na wydruku
Rejestr stron umieszcza na wydruku zawsze końcowy stan ustalony po przygotowaniu wydruku. Umożliwia umieszczenie w wcześniejszej części wydruku wartości ustalonej w dalszej części. Pozwala więc na przykład umieścić na pierwszej stronie wartość, która znana będzie dopiero na ostatniej stronie wydruku. Podstawowym zastosowaniem jest umieszczenie ilości stron dokumentu w stopce. Może być także wykorzystany do umieszczania linii "Do przeniesienia" w stopce strony (przykłady 9, 10, 11 w dalszej części).
Do prawej - ţ75{tekst;[szerokość]}
Do środka - ţ76{tekst;[szerokość]}
Przykłady:
ţ76{ Jednostka miary }
ţ75{ţ64{ţ70{Suma};999 999 999.99}}
ţ76{Ilość; 20}
ţ76{Wartość netto; 14em}
ţ75{s-- Ilosc ---s; 40}
Działanie: Wyrównuje tekst do prawej/środka
Parametry:
tekst - wyrównywany tekst, pole, zawartość rejestru...
szerokość - oczekiwana szerokość pola (opcjonalny)
Znaczniki te umożliwiają wyrównanie do prawej albo wyśrodkowanie tekstu. Przydatne są zwłaszcza przy tekstach pisanych czcionką o zmiennej szerokości (praktycznie każda oprócz Courier New). Pozwalają np. wyrównać do prawej wartości numeryczne, wyśrodkować tekst w nagłówkach kolumn. Opcjonalny parametr szerokość pozwala określić oczekiwaną szerokość pola w której ma nastąpić wyrównanie tekstu. Domyślnie szerokość pola jest wyliczana proporcjonalnie do ilości znaków, kroju oraz rozmiaru czcionki.
Usunięcie spacji z lewej - ţ77{tekst}
Usunięcie spacji z prawej- ţ78{tekst}
Przykłady:
t78{sIndeks towaru s} -> '000123'
t78{sIndeks towaru s} t78{sNumer partii s}
t78{s-Dodatkowy opis 01-s} t78{s-Dodatkowy opis 02-s} -> 'Pierwsza linia opisu. Druga linia opisu'
t77{s-Ilosc-s}
Działanie: Usuwa spacje z lewej/prawej strony tekstu
Parametry:
tekst z którego usunięte zostaną spacje z lewe/prawej strony
Usunięcie spacji umożliwia np. umieszczenie obok siebie dwóch pól, których zawartość ma zmienną długość.
EAN 128 - ţ80{tekst;[grubość kreski];[wysokość]}
Przykłady:
t80{sIndeks towaru s}
t80{sIndeks towaru ssNumer partii ss-- Ilosc ---s}
t80{sIndeks towaru s; 0.85; 50}
t80{sIndeks towaru s;; 30}
Działanie: Rysuje kod EAN 128 z podaną zawartością
Parametry:
tekst do narysowania w postaci kodu EAN 128
grubość pojedynczej kreski w milimetrach (opcjonalny)
wysokość kodu w milimetrach (opcjonalny)
Znak ten umożliwia zakodowanie tekstu kodem EAN 128. Grubość pojedynczej kreski wpływa na gęstość kodu i jego szerokość. Zgodnie ze specyfikacją parametr ten powinien zawierać się w zakresie 0.250 - 1.016 milimetra. Domyślnie przyjmowane jest 0.33mm. Domyślnie kod przyjmuje wysokość aktualnego wiersza.
EAN 13 - ţ82{ean13;[grubość kreski];[wysokość]}
Przykłady:
ţ82{ş----EAN13---ş}
ţ82{ş----EAN13---ş; 0.26; 21}
ţ82{ş----EAN13---ş; ; 25.91}
Działanie: Rysuje kod EAN 13 z podaną zawartością
Parametry:
ean13 - symbol do narysowania w postaci kodu EAN 13
grubość pojedynczej kreski w milimetrach (opcjonalny)
wysokość kodu w milimetrach (opcjonalny)
Znak ten umożliwia narysowanie kodu EAN 13. Grubość pojedynczej kreski wpływa na gęstość kodu i jego szerokość. Zgodnie ze specyfikacją GS1 parametr ten powinien zawierać się w zakresie 0.264 - 0.660 milimetra. Domyślnie przyjmowane jest 0.33mm. Domyślnie kod przyjmuje wysokość aktualnego wiersza. Jego wysokość powinna umożliwiać odczyt pod różnymi kątami. Zalecane wymiary kodów można znaleźć na stronach organizacji GS1.
Nowa strona - ţ95{pozycja Y}
Przykłady:
Łamanie strony nastąpi gdy:
ţ95{150} - kursor przekroczy 150mm
ţ95{+20} - nie zmieści się 20mm wierszy wydruku
ţ95{+4em} - nie zmieszczą się jeszcze 4 wiersze aktualnej wysokości
Działanie: Warunkowo łamie stronę
Parametry:
pozycja Y - położenie względem górnej krawędzi kartki
Znak ten umożliwia grupowanie linii tekstu w blok, który nie zostanie podzielony między dwie strony. Umożliwia on to przez wcześniejsze warunkowe złamanie strony. Strona zostanie złamana jeżeli:
Aktualne położenie Y jest dalsze od podanej pozycji lub
Podana pozycja leży poza obszarem wydruku
Komentarz - ţ99{[komentarz]}
Przykłady:
ţ99{Nagłówek strony}
Działanie: Wstawia komentarz
Parametry:
komentarz
Pozwala umieścić niedrukowany tekst wewnątrz wzorca.
Przykład 1
Wstawienie logo firmy do wydruku wg. wzorca. Obrazek nazywa się logo.bmp i znajduje się katalogu adtres. Ma mieć wysokość 2 cm na wydruku.
Dodać znak sterujący specjalny -> wstaw obrazek. Wstawione zostanie ţ49{plik.bmp, [szerokosc],[wysokosc]}
Prze edytować zapis ręcznie na: ţ49{../adtres/logo.bmp, , 20}
Wszelkie wymiary podawane są w milimetrach. Jedynie rozmiary czcionek są w punktach typograficznych.
Przykład 2
Przygotowanie oferty wraz z obrazkami indeksów.
Po pierwsze należy przygotować katalog z obrazkami i odpowiednio je nazwać. Np. umieścić w katalogu mgzal\indeksy\ pliki z nazwami identycznymi jak indeks danego produktu (pamiętać także o spacjach).
Wejść do edycji wzorca i w miejscu gdzie chcemy aby pojawił się obrazek wstawić znak specjalny -> wstaw obrazek. Prze edytować go i w miejscu nazwy pliku wstawić pole danych -> pozycja - indeks.
ţ49{../mgtres/mgzal/şIndeks towaruş.bmp}
Pole indeks towaru zostanie rozwinięte i użyte jako część nazwy pliku podczas wstawiania obrazka.
Przykład 3
Przygotowanie wzorca wydruku zamówień pokazującego ilości które pozostały do zrealizowania.
Pola dostępne we wzorcach wydruku zamówienia zawierają ilość oraz ilość zafakturowaną. Różnica wartości tych pól określa ilość pozostałą do realizacji dla danej pozycji zamówienia.
Należy przygotować wzorzec wydruku zawierający ogólne informacje z dokumentu oraz kolumnę "pozostałe do realizacji".
W linii typu P należy umieścić ţ66{ş-- Ilosc ---ş;şZafakturowanş;9,999,999.999} şJmş.
Analogicznie można uzyskać wartość pozycji pozostałej do realizacji:
ţ67{ţ66{ş-- Ilosc ---ş;şZafakturowanş};şCena z upu. w zlş;9,999,999.99}
Program po napotkaniu powyższego wyrażenia wykona kolejno:
podstawi do wyrażenia wartości pól biorąc pod uwagę zadeklarowane dla nich formaty
wyliczy wewnętrzny argument - odejmowanie ilości i ilości zafakturowanej
przemnoży uzyskany wynik przez cenę z upustem w zł
wynik wstawi w miejscu rozpoczęcia definicji znaku sterującego ţ67 używając formatu zadeklarowanego jako trzeci argument tego znaku
Przykład 4
Zliczenie ilości pozycji w celu pokazania w podsumowaniu RAZEM (poz. 1 - xx)
W celu zliczenia wartości pozycji na dokumencie można użyć znaku sterującego rejestru.
Przed liniami typu P należy zadeklarować rejestr nadając mu wartość 0.
W jednej z linii typu P należy dodawać do rejestru wartość 1 (ţ70{Ilość pozycji; ţ65{ ţ70{Ilość pozycji}; 1} }).
Tak wypełniony rejestr można wykorzystać w podsumowaniu dokumentu. Po uprzednim sformatowaniu jego zawartości, gdyż w innym przypadku wyświetli niepotrzebnie cyfry po przecinku (xx.0000000000).
T ţ70{Ilość pozycji;0} ... P ... P ... ţ70{Ilość pozycji; ţ65{ţ70{Ilość pozycji}; 1} } ... T T Razem (poz. 1 - ţ64{ ţ70{Ilość pozycji} ;999})
Przykład 5
Sumowanie wartości pola.
Identycznie jak w przykładzie 4. Zamiast dodawać 1 można dodawać wartość pola. Np. sumowanie wartości netto liczonej jako suma iloczynów ilości i ceny:
W każdej pozycji do rejestru należy dodać iloczyn ilości i ceny w zł: Suma netto <- ( Suma netto + ( cena w zł * ilość) )
T ţ70{Suma netto;0} ... P ... P ... ţ70{Suma netto; ţ65{ţ70{Suma netto}; ţ67{şCena z upu. w zlş; ş-- Ilosc ---ş} } } ... T T Razem wartość netto: ţ64{ţ70{Suma netto} ;99 999 999 999.99}
Przykład 6
Suma ilości konkretnego indeksu w dokumencie.
Analogicznie do poprzedniego przykładu można rozbijać sumy do oddzielnych rejestrów zależnie od indeksu.
T ţ70{IND0001;0} ... P ... P ... ţ70{şIndeks towaru ş; ţ65{ţ70{şIndeks towaru ş}; ş-- Ilosc ---ş} } ... T T Suma IND0001: ţ64{ţ70{IND0001} ;99 999 999 999.99}
Przykład 7
Suma ilości towarów w podziale na stawki VAT. Przy założeniu jednolitej jednostki.
Rozwiązanie analogiczne do poprzednich. Dodatkowo komplikuje podział na stawki VAT. Rozwiązanie jest możliwe przy założeniu, iż stawki VAT są różne co do wartości %.
Pracę należy rozpocząć od zdefiniowania tylu rejestrów ile stawek VAT jest spodziewanych. Za nazwę rejestru można przyjąć właśnie procentowo wyrażoną stawkę VAT i na podstawie tej wartości rozkładać ilości do poszczególnych rejestrów.
Przykład pokazany jest przy wykorzystaniu jedynie dwóch stawek PTU. Założono także, iż formatowanie stawek % jest identyczne dla pól şSt01ş şSt02ş oraz şSpodş. Jeżeli tak nie jest należy dodatkowo użyć znaku formatowania.
T ţ70{şSt01ş;0} ţ70{şSt02ş;0} ... P ... P ... ţ70{şSpodş; ţ65{ţ70{şSpodş}; ş-- Ilosc ---ş} } ... T T Suma ilości indeksów w grupie PTU şSt01ş: ţ64{ţ70{şSt01ş};999 999.999} T Suma ilości indeksów w grupie PTU şSt02ş: ţ64{ţ70{şSt02ş};999 999.999}
Przykład 8 - wykorzystanie rejestru do warunkowego wyświetlenia zawartości pola
W pozycji dokumentu ma zostać wydrukowana nazwa stosowana u odbiorcy, a gdy nie została podana to własna nazwa.
Rozwiązać to można wykorzystując znaki sterujące - rejestr. Ponieważ nazwa rejestru może być dowolna może to także być zawartość pola. Można wykorzystać tę cechę do tworzenia rejestrów o nieznanej w chwili tworzenia wzorca dokumentu nazwie.
Spacje rozpoczynające i kończące nazwę rejestru zostaną usunięte - nie będą jej częścią. Pozwala to wpływać na zawartość rejestru zależenie od wypełnienia pola.
Rozwiązanie:
Pţ70{ş--------------- Nazwa towaru -------------------şş--------------- Nazwa u odb. -------------------ş;ş--------------- Nazwa u odb. -------------------ş} Pţ70{ş--------------- Nazwa towaru -------------------ş;ş--------------- Nazwa towaru -------------------ş} Pţ70{ş--------------- Nazwa towaru -------------------şş--------------- Nazwa u odb. -------------------ş}
Omówienie:
W przykładzie użyto trzech linii typu P, ma to na celu jedynie zwiększenie czytelności. Istotna jest jedynie kolejność umieszczenia znaków sterujących - rejestr.
Linia:
Tworzony jest rejestr o nazwie będącej złożeniem nazwy towaru własnej i z karty kontrahenta. W rejestrze tym zapamiętana zostaje nazwa towaru z karty kontrahenta. Jeżeli nazwa w karcie kontrahenta nie została podana rejestr przyjmie nazwę towaru własną a jego zawartość będzie pusta.
Tworzony jest rejestr o nazwie zgodnej z nazwą towaru i taką samą zawartością. Jeżeli nazwa w karcie kontrahenta jest pusta nadpisany zostanie rejestr utworzony w linii 1.
Wyświetlana jest zawartość rejestru utworzonego w linii 1. Zależnie od wypełnienia pola nazwy towaru w karcie kontrahenta będzie to ta nazwa albo nazwa własna towaru.
Przykład 9 - umieszczenie ilości stron w stopce strony wydruku
Na wydruku dokumentu ma zostać wydrukowany numer strony i łączna ilość stron dokumentu (np. 1/8).
Aktualną stronę wydruku przedstawia pole "sSs". Ilość stron wydruku można uzyskać używając rejestru stron. Należy zapamiętać w nim ostatni numer strony drukowanego dokumentu i umieścić go na wydruku. Nazwa rejestru powinna być unikalna dla drukowanego dokumentu, tak aby zapamiętany numer strony odnosił się do aktualnego dokumentu a nie ostatniego z drukowanych. Nazwa powinna zawierać numer dokumentu ( w najprostszej sytuacji tylko numer )
Rozwiązanie:
S şSş/ţ71{şNr dokum. ş;şSş;}
Omówienie:
Aktualny numer strony podstawiany jest wprost z pola. Następnie w rejestrze stron o nazwie zgodnej z numerem dokumentu zapamiętywany jest numer aktualnej strony. Ostatni średnik powoduje, iż aktualne miejsce wydruku jest oznaczane do późniejszego umieszczenia tu zawartości rejestru. Po zakończeniu przetwarzania, wydruk jest ponownie przeszukiwany w celu uzupełnienia oznaczonych miejsc zawrtością odpowiednich rejestrów.
Przykład 10 - umieszczenie wartości ustalonej na końcu strony w jej nagłówku
W nagłówku strony umieścić numer ostatnio wydrukowanej pozycji na stronie.
Rozwiązanie należy oprzeć o rejestr stron. W Nagłówku strony należy wstawić jego zawartość, a w każdej pozycji uzupełniać nową wartością. Rejestr powinien mieć nazwę unikalną dla strony dokumentu. Nazwa musi zawierać numer dokumentu i numer strony.
Rozwiązanie:
S Ostatnia pozycja na stronie: ţ71{Ostatnia pozycja şNr dokum. şşSş} .... P ţ71{Ostatnia pozycja şNr dokum. şşSş;şLş}
Jeżeli nazwa rejestru nie zawierałaby numeru strony. Wydrukowany zostałby ostatni numer pozycji z dokumentu. Umożliwia to umieszczenie na początku dokumentu informacji o ilości pozycji, które zawiera.
T Dokument zawiera pozycji: ţ71{Razem pozycji şNr dokum. ş} .... P ţ71{Razem pozycji şNr dokum. ş;şLş}
Do precyzyjnego umieszczania zawartości rejestru na stronie należy używać znaku zakotwiczenia ( t50 ).
Przykład 11 - wykorzystanie rejestru stron w połączeniu ze zwykłym rejestrem
Zwykły rejestr może zostać użyty do podliczania wartości w obrębie strony, dokumentu, wydruku. Rejestr stron pozwala natomiast odwrócić kolejność wyznaczania i drukowania wartości.
Prosty przykład: Na wydruku umieszczać numer strony i liczbę łącznie wydrukowanych stron. Wydruk wielu dokumentów jednocześnie będzie różnił się od przedstawionego w przykładzie 9 tym, iż kolejne dokumenty będą miały ciągłą w obrębie wydruku numeracje stron. Pierwsza strona drugiego dokumentu będzie miała np. numer 3 itd...
Rozwiązanie:
T ţ70{strona;0} S ţ70{strona;ţ65{ţ70{strona};1}} Numer strony wydruku: ţ70{strona}/ţ71{Stron;ţ70{strona};}
Przykład 12 - zapobieganie łamaniu bloku tekstu pozycji pomiędzy strony
Linie należące do jednej pozycji dokumentu nie mają być dzielone pomiędzy strony.
Oczekiwany efekt można uzyskać zakładając minimalną ilość miejsca potrzebną na wydrukowanie pozycji i wykorzystując znak warunkowego podziału strony.
Rozwiązanie:
T P ├┼┤ ţ95{+3em} P ....... P ....... P ....... T
Przykład 13 - ustalenie marginesu dolnego niezależnego od ustawień drukarki
Stopka umieszczana jest poniżej 180mm strony. Linie pozycji nie mają drukować się w tym obszarze.
Oczekiwany efekt można uzyskać wykorzystując znak warunkowego podziału strony.
Rozwiązanie:
T P ├┼┤ ţ95{170} P ....... P ....... P ....... D ..... ţ95{177} T ..... ţ95{177}
Pola danych dla wzorca mają swój typowy format i opis przewidziany przez autorów systemu. Format i opis można samodzielne dopasować do aktualnych potrzeb użytkownika.
Sposób i zakres zmian jest uzależniony od typy danych:
Pola znakowe można skracać (minimalna długość pola wynosi 3)
Pola liczbowe można zapisać w jednym z możliwych formatów (klawisz [F2])
Pól daty nie można zmieniać
| 5.1.1. | Jakie mogą być nieoczekiwane, niepożądane skutki wprowadzonych zmian? |
Jeżeli konkretne dane z kartotek lub wyniki obliczeń nie "mieszczą się" w polu o zmienionym formacie, zostaną obcięte do tego formatu, co skutkuje utratą danych. System w tym przypadku nie sygnalizuje błedu, a dane są obcinane wg poniższych zasad:
Z tego powodu zmiany formatu pól wzorca muszą być wprowadzane bardzo uważnie. | |
| 5.1.2. | Postanowiliśmy wprowadzić zmiany do formatów pól (własne definicje). Ostatnio otrzymaliśmy nową wersję pakietu i wykonaliśmy aktualizację struktur zbiorów. Wprowadzone przez nas zmiany zostały zastąpione przez standardowe definicje stosowane przez Tres. Czy musimy powtórnie wprowadzić nasze definicje ? |
Tak, należy powtórnie wprowadzić własne definicje. W przyszłej wersji pakietu TRAWERS zostanie zmodyfikowany mechanizm aktualizacji tak, aby zachowane zostały definicje użytkowników. |
Wraz z systemem dostarczane są standardowe wzorce dokumentów, opracowane przez TRES. Wzorców tych nie można modyfikować.
Również zbióry pól danych dla wzorców (XX00PLff.DBF) dostarczany jest wraz z systemem.
Dokumenty wzorców przechowywane są w katalogu xxTRES/xxDANE/, gdzie xx oznacza symbol systemu, którego dotyczy wzorzec.
HTML, to format zapisu dokumentów publikowanych w Internecie. Dokumenty w formacie HTML mogą być też odbierane (otwierane) przez popularne programy biurowe, np. MS Word, MS Excel.
Dokumenty emitowane w pakiecie TRAWERS mogą mieć format HTML.
Pozwala to tworzyć dokumenty w postaci graficznej, np. z graficznym logo firmy w nagłówku faktury. Wystarczy umieścić element graficzny (logo) we wzorcu faktury sprzedaży, fakturę zapisać w zbiorze .HTML i wydrukować z poziomu dowolnej przeglądarki internetowej. Aby utworzyć taki dokument HTML (np. fakturę sprzedaży), należy:
Zbudować wzorzec dokumentu ze znacznikami html.
Przykład takiego dokumentu zawarty jest poniżej (Załącznik A).
Utworzyć dokument HTML (np. fakturę), tj. wydrukować dokument, kierując wydruk do zbioru z rozszerzeniem html.
Przykład takiego dokumentu zawarty jest poniżej (Załącznik B).
Dokument taki można np. opublikować w Internecie lub uzupełnić o graficzne logo firmy i wydrukować.
Przykład 2. Jak umiescic zdjęcie produktu na ofercie sprzedaży?
Zależnie od charakteru dokumentu HTML (off-line czy on-line), fotografię można umieścić na dwa soposoby:
przy tworzeniu dokumentu dla potrzeb przegladania off-line, np. jeśli dokument jest umieszczony na CD:
odnośniki wskazują na lokalny katalog ze zdjeciami, np:
<img src="zdjecia/indeks0001.png">
przy tworzeniu dokumentu dla potrzeb przeglądania on-line, np. dokumentu wysyłanego w poczcie elektroonicznej:
odnosniki wskazują na katalog ze zdjęciami na serwerze, np:
<img src="http://www.jakas-firma.pl/zdjecia/indeks0001.png">
Program sprawdza poprawność budowy linii wzorca. Komunikat wskazuje, że budowa jest niepoprawna, na przykład:
pierwszy znak linii jest inny niż akceptowane znaki określające rodzaj linii (T,P,S...)
nieparzysta liczba znaków ograniczających pola danych (odwróconych wykrzykników)
Częstą przyczyną nieprawidłowej budowy linni są dodatkowe znaki kontrolne, które automatycznie wstawiane są przez niektóre edytory tekstowe (gdy przy ich użyciu redagowany jest wzorzec). Należy pamiętać, aby zbiór tekstowy wzorca zawierał TYLKO znaki ASCII. Jedyne dopuszczalne znaki kontrolne to:
| znak nowej linii (0A H) |
| znak przejścia do nowej linii (0D H) |
| znak końca tekstu (1A H) |
| znaki sterujące drukarką. |
Niejednokrotnie nieprawidłowa budowa wzorca spowodowana jest tym, że ogranicznikiem końca linii jest sekwencja:
8D H 0A H zamiast: 0D H 0A H (reprezentacja graficzna znaku 8D H jest literka Ť (ci).
W nowej wersji pakietu TRAWERS5 zmieniono mechanizm budowania wzorców.
W porównaniu z TRAWERS4:
Zmieniono budowę zbioru pól danych dla wzorców. Oddzielnie zapisywane są definicje pól standardowych, dostarczanych w pakiecie instalacyjnym i definicje pól ustalane przez użytkownika.
Pozwala to zachować definicje użytkownika podczas procesu aktualizacji pakietu.
Dotychczas definicje użytkownika były, w procesie aktualizacji, nadpisywane przez definicje standardowe.
Można utworzyć wiele definicji pól użytkownika wg jednego pola standardowego. Pole standardowe pozostaje bez zmian.
Można wyszukiwać (klawisz [F3]) pola, które zawierają podane słowa w nazwie, np. wyszukać pola ze słowem "waga" lub "cena"
Wzorce modyfikowane są w systemach dziedzinowych (np. NA-TRES, ZO-TRES, MG-TRES).
Możliwe są dwa sposoby wzbogacania wydruków o ramki i tabele. Pierwszy można stosować także we wzorcach przy pomocy których wydruki będą wykonywane w dotychczasowym systemie wydruku i przy pewnych założeniach otrzymany zostanie oczekiwany rezultat. Drugi sposób rozszerza pierwszy o dodatkowe funkcje i można go wykorzystać jedynie w nowym systemie wydruku. Pozwala za to znacznie przyspieszyć tworzenie tabelki.
Wymienione tu zasady dotyczą zarówno podstawowego jak i rozszerzonego sposobu tworzenia ramek i tabelek.
Tabela tworzona jest od lewej do prawej z góry w dół (kierunek czytania tekstu)
Należy o tym pamiętać przy przemieszczaniu kursora za pomocą kotwiczki.
Położenie kursora tekstowego określa początek linii
Jest to istotne przy stosowaniu czcionek o zmiennej szerokości. W takim przypadku nie zakotwiczona linia (tabelka) może przemieszczać się na stronie. Jej położenie będzie zależne od poprzedzającego ją z lewej strony tekstu.
Jest to podstawowy sposób tworzenia ramek i tabelek. Tak utworzona tabelka będzie poprawnie wydrukowana w nowym i dotychczasowym systemie drukowania. Powinna także być prawidłowo wydrukowana na każdym urządzeniu.
Ramkę rysuje się przy użyciu znaków semigraficznych. Znaki te dostępne są po wybraniu podczas edycji wzorca F10 – ramka. Przy rysowaniu ramki można wykorzystać rodzaje linii (T, S, P), aby kolejne pozycje były właściwie umieszczane w kolejnych wierszach tabeli.
Przy wydruku w dotychczasowym systemie wydruków należy zwrócić większą uwagę na to, iż znaki sterujące nie są drukowane i będą usuwane z wydruku. Tekst i pola umieszczone za znakiem będą więc w rzeczywistości przesunięte w lewo. Przykład definicji tabelki zbudowany za pomocą samych znaków semigraficznych:
T┌───┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ T│Lp.│ -----Indeks----- -----------------nazwa/opis----------------------- ---SWW\PKWiU---- │ T│ │ ----ilośc----- -jm- ----şRodz.cenyş--- upust -cena z upustem--- -wartośc netto zł- -PTU%- -----Kwota PTU----│ P├───┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ P│şLş│ şIndeks towaru ş ş--------------- Nazwa towaru -------------------ş ş------SWW-----ş │ P│ │ ş-- Ilosc ---ş şJmş şCena bez upu. zlş ş Rbtş şCena z upu. w zlş şPozycja-netto zlş şSpodş şPozycja- podatekş │ D│ │ş---------------------- Dodatkowy opis --------------------ş │ T└───┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Nowy system wydruków ma wbudowane funkcje wspomagające budowanie ramek i tabelek. Jego prawidłowe działanie wymaga jednak zastosowania kilku dodatkowych zasad. Wyjątkiem jest świadome tworzenie ramek niezgodnych z zaleceniem w celu uzyskania specyficznego efektu. W tym przypadku należy mieć na uwadze, iż algorytm tworzenia ramek może ulec zmianie i tym samym zmienią się generowane wydruki z użyciem danego wzorca.
Każda rozpoczęta linia ramki / tabelki musi mieć swoje zakończenie !
Pewnym wyjątkiem są linie poziome, które mogą być przerywane tekstem (już pojedyncza spacja traktowana jest za przerwę w linii). Tak rozerwaną linię należy traktować jak dwie osobne linie. Linie takie często stosowane są jako podkreślenie części wydruku.
Znaki sterujące nie przerywają linii.
Zakończeniem linii pionowej NIE może być znak “|”, jest on zawsze traktowany jako przedłużenie linii i służy do podziału wiersza na kolumny.
Linia pionowa nie posiadająca zakończenia może zostać pominięta na wydruku.
Położenie linii zależy wyłącznie od umiejscowienia jej początku.
Przedłużenia i zakończenia linii pionowych automatycznie dopasowywane są do początków linii.
Niemożliwe jest narysowanie tabeli z liniami ukośnymi.
Szerokość znaku semigraficznego jest zależna od rozmiaru i kroju czcionki.
Dla Courier New 7 wynosi około 1,48 mm.
Linia zawierająca znak “|” jest dzielona i tekst jest wpisywany w kolejnych komórkach tabeli.
Ułatwia to prawidłowe rozmieszczenie pól w tabeli przy stosowaniu czcionki o zmiennej szerokości.
Nie jest zmieniany rozmiar czcionki i nie jest zmieniana szerokość kolumny.
Tekst który nie mieści się w komórce wpisze się w sąsiedniej prawej komórce.
Aktualna wysokość wiersza zależy od rozmiaru użytej czcionki.
Algorytm budowania tabelek wyszukuje początki i końce linii i tworzy na ich podstawie właściwą tabelkę. Właściwość tę można wykorzystać do skrócenia definicji tabelki. Istotne jest właściwe rozmieszczenie początków pionowych linii tabeli. Zakończenia tych linii muszą być umieszczone w ostatniej linii tabeli ale ich rozmieszczenie w wierszu nie jest już istotne. Program sam dopasuje położenie końców linii do już zadeklarowanych początków. Jeżeli zostanie pominięty jakiś znak zakończenia linii, linia ta nie zostanie narysowana albo połączy inne niż tego oczekiwano punkty tabelki.
Przy użyciu zakotwiczenia można uprościć oznaczanie początków linii pionowych w tabeli (rozmieszczenia kolumn). W wierszu w którym zaczyna się tabelka należy umieścić znak sterujący specjalny – zakotwiczenie. W parametrach tego znaku należy podać jedynie parametr określający położenie w osi X. Będzie to położenie początku kolumny tabeli w milimetrach względem lewej krawędzi wydruku. Tuż za znakiem sterującym należy umieścić właściwy znak semigraficzny rozpoczynający linie pionową. Następnie za nim bez znaków przerwy można wstawić kolejny znak sterujący – zakotwiczenie (podając położenie względne) itd. Tym sposobem można precyzyjnie rozmieszczać kolumny tabeli.
Nowy system wydruków umożliwia wykorzystanie czcionek o zmiennej szerokości. Używanie znaku “|” w wierszu zawierającym dane do umieszczenia w tabeli spowoduje, iż będą one rozmieszczone w kolejnych kolumnach tabeli.
Jeżeli tekst nie mieści się w komórce tabelki zamaże on sąsiednią komórkę. Jedynie początek umieszczenia tekstu jest ustalany automatycznie. Rozmiar czcionki i szerokość kolumny NIE są modyfikowane automatycznie.
Przykład tabeli zbudowanej z użyciem znaków zakotwiczenia:
Tţ50{5}┌ţ50{11}┬ţ50{+185}┐
T│Lp.│ -----Indeks----- -----------------nazwa/opis----------------------- ---SWW\PKWiU----
T│ │ ----ilośc----- -jm- ----şRodz.cenyş--- upust -cena z upustem--- -wartośc netto zł- -PTU%- -----Kwota PTU----
P├┼┤
P│şLş│ şIndeks towaru ş ş--------------- Nazwa towaru -------------------ş ş------SWW-----ş
P│ │ ş-- Ilosc ---ş şJmş şCena bez upu. zlş ş Rbtş şCena z upu. w zlş şPozycja-netto zlş şSpodş şPozycja- podatekş
D││ş---------------------- Dodatkowy opis --------------------ş
T└┴┘Pierwszy wiersz określa ilość i położenie kolumn tabeli. Zakotwiczenia wykorzystane są do rozmieszczenia pionowych linii tabelki. Pierwsza linia pionowa (lewa krawędź tabeli) narysowana będzie 5 mm od lewej krawędzi strony. Druga linia pionowa (dzieląca kolumny) 11 mm od lewej krawędzi strony. Trzecia zamykająca tabele linia pionowa narysowana będzie 185mm od drugiej linii pionowej (plus szerokość znaku okło 1,5 mm).
Zadaniem znaku "│" jest określenie podziału linii tekstu między kolumny. Teoretycznie można go pominąć, ale użycie go gwarantuje iż numer porządkowy znajdzie się w pierwszej kolumnie a pozostała treść w drugiej. Jego położenie w wierszu nie jest kluczowe. Może być w dowolnym miejscu ważne aby był pomiędzy rozdzielanymi między kolumny częściami tekstu (w tym początek tabeli - tabela może być otoczona tekstem z każdej strony). W przedostatniej linii pominięto zbędne spacje i dodatkowy opis umieszczono zaraz za dwoma znakami "│" wskazując tym samym, iż ma się on znaleźć w drugiej kolumnie tabeli. Pominięte zostało także prawe domknięcie tabeli, gdyż po prawej stronie tabeli nie ma tekstu.
W ostatniej linii umieszczone zostało dolne domknięcie tabeli. Jest to ważne gdyż jego pominięcie może spowodować, iż linie pionowe nie zostaną umieszczone na wydruku. Linie poziome mogą występować ale są zbędne w tym przykładzie, szerokość tabeli jest określona w pierwszym wierszu więc nie wpłyną one na postać wydruku.
Należy także zwrócić uwagę na linię 4. Wskazuje ona, iż w tym wierszu (jest to wiersz powtarzany dla pozycji) ma nastąpić przecięcie linii pionowych z poziomymi. Miejsce przecięcia będzie wyliczone automatycznie, nie ma więc potrzeby umieszczania znaków linii poziomej. Linia ta powoduje, że kolejne pozycje wydruku są rozdzielone linią poziomą. Zamiana litery P na T spowoduje, iż tylko nagłówek będzie oddzielony od pozycji linią poziomą.
W rozdziale tym krok po kroku zostaną przedstawione metody umieszczania linii, ramek, tabelek na wydrukach. Początkowe przykłady będą przedstawione podwójnie z wykorzystaniem samych znaków semigraficznych oraz z użyciem specjalnych znaków sterujących.
Znaki sterujące specjalne pozwalają także wpłynąć na kształt i kolor linii i obramowania.
Przykład pokazuje wykorzystanie linii do podkreślenia i oddzielenia nagłówka dokumentu od pozostałej treści.
Rozwiązanie 1:
W linii typu S, tuż pod nagłówkiem strony należy umieścić ciąg elementów ramka ─ . Ilość znaków należy dobrać zależnie od ustalonego marginesu, tak aby linia równomiernie rozciągała się od lewej do prawej krawędzi strony. Będzie to około 130 znaków.
S Nagłówek strony ... S ... S─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── S Treść strony ... S ...
Rozwiązanie 2:
Tworzenie linii można przyspieszyć stosując znak zakotwiczenia. Zakotwiczenie będzie wykorzystane do 'przyczepienia' końca linii w znanej pozycji. Istotne jest aby nie umieszczać znaków spacji i innych pomiędzy znakiem zakotwiczenia a znakami semigraficznymi. Lewy margines zostanie uwzględniony automatycznie. Koniec linii należy umieścić tak aby nie wychodził poza prawy margines strony.
Podana wielkość wyrażona jest w milimetrach. Można także posłużyć się szerokością znaku semigraficznego, która w programie przyjęta jest jako stała. W tym przypadku należy napisać {130em}, co oznacza 130 szerokości znaków semigraficznych od lewej krawędzi strony.
S Nagłówek strony ...
S ...
S─ţ50{200}─
S Treść strony ...
S ...Rozwiązanie 3:
Podobnie do poprzedniego ale z użyciem pozycji względem aktualnego położenia kursora. Rozwiązanie to ma taką zaletę, iż linia będzie przesuwana wraz z treścią przy zmianie lewego marginesu strony. Podobnie jak poprzednio odległość można wyrazić w szerokości znaków semigraficznych np. {+120em}
S Nagłówek strony ...
S ...
S─ţ50{+180}─
S Treść strony ...
S ...Rozwiązanie 4:
Do umieszczenia linii można także wykorzystać funkcje rysunkowe. Atutem znaku sterującego wstawiającego linię jest to, iż linia taka może być umieszczona swobodnie, w dowolnym miescu strony i pod dowolnym kątem. Może to być więc linia lekko pochylona, albo przekreślająca jakąś treść dokumentu.
S Nagłówek strony ...
S ...
Sţ54{+182}
S Treść strony ...
S ...Ramka może posłużyć np. do obramowania danych adresowych firmy. Podobnie jak w poprzednim przykładzie można ją wykonać na kilka sposobów.
Rozwiązanie 1:
Ponownie wykorzystanie jedynie znaków semigraficznych. Potrzebne elementy obramowania można wybierać z F10-ramka. Ramka przygotowana w ten i poniższy sposób ma istotną zaletę. Można ją przesunąć swobodnie na stronie przy użyciu jednego znaku specjalnego zakotwiczenie. Przykład w kolejnym rozwiązaniu.
T ┌─────────────────────────────┐ T │Nazwa: ...... │ T │Adres: ...... │ T └─────────────────────────────┘
Rozwiązanie 2:
Linie pionowe zamykające ramkę z prawej strony można uznać za opcjonalne i pominąć, gdyż za ramką nie planujemy umieszczać tekstu. Linie pionowe z lewej strony ramki powodują, że treść umieszczona po ich prawej stronie znajdzie się w ramce. Ważne jest wskazanie wiersza początku i końca linii. Szerokości dolnej linii także nie trzeba podawać gdyż będzie ona zawsze zgodna z szerokością górnej linii. Ramka będzie miała 8cm szerokości i położona będzie 10cm od lewej krawędzi strony i 3 cm od górnej.
Dodatkowo użyto znaku zakotwiczenia przesuwającego całą ramkę wraz z zawartością na prawo i 30mm od górnej krawędzi strony. Znak ten można pominąć. Ramka zostanie umieszczona przy lewej krawędzi w wierszu począwszy od użytego do jej zdefiniowania.
T ţ50{100, 30}┌ţ50{+80}┐
T|Nazwa: ......
T|Adres: ......
T└┘Rozwiązanie 3:
Ramkę można narysować przy użyciu znaku sterującego wstawiającego prostokąt. Zaletą tego rozwiązania jest możliwość zdefiniowania koloru tła wypełnienia. Przy stosowaniu koloru w tle należy uważać na kolejność poleceń rysowania prostokąta i pisania treści. Decyduje ona o tym co znajdzie się w pierwszym planie. Jeżeli prostokąt ma być w tle tekstu musi być narysowany przed umieszczeniem tekstu. Jeżeli ma przesłonić część tekstu musi być narysowany później (w kolejnym wierszu wzorca albo dalej w tym samym wierszu). Prostokąt można umieszczać swobodnie na stronie.
Istotną wadą tego rozwiązania jest niemożliwość automatycznego dopasowywania treści do prostokąta. Inaczej niż przy ramce, nie można przesunąć prostokąta wraz z wycinkiem treści. Rozwiązanie tego problemu przedstawione będzie w kolejnym przykładzie.
Tţ55{,,+80,+3em,zielony}
T Nazwa: ......
T Adres: ......
TTabelkę można potraktować jako złożoną formę ramki. Wyróżnia ją wiele kolumn i/lub wierszy. Może mieć także kształt wielokąta. Tabelkę można próbować narysować przy użyciu prostokątów, ale ze względu na brak ich powiązania z treścią nie jest to zalecane i nie będzie tu przedstawione.
Dla przykładu użyta będzie prosta tabela z faktury przedstawiona na początku tego rozdziału.
Rozwiązanie 1:
Narysowanie tabelki z użyciem samych elementów ramki zostało przedstawione na początku tego rozdziału i nie będzie tu przywoływane. Jest to metoda bardzo czasochłonna.
Rozwiązanie 2:
Ramka z użyciem znaków zakotwiczenia także została już przedstawiona. Należy zwrócić uwagę na rolę typów linii przy definicji ramki. Zależnie od ich użycia można uzyskać różny efekt. Np. ramka dwuwierszowa, pierwszy wiersz to nagłówek a drugi to wszystkie pozycje:
Tţ50{5}┌ţ50{11}┬ţ50{+185}┐
T│Lp.│ -----Indeks----- -----------------nazwa/opis----------------------- ---SWW\PKWiU----
T│ │ ----ilośc----- -jm- ----şRodz.cenyş--- upust -cena z upustem--- -wartośc netto zł- -PTU%- -----Kwota PTU----
T├┼┤
P│şLş│ şIndeks towaru ş ş--------------- Nazwa towaru -------------------ş ş------SWW-----ş
P│ │ ş-- Ilosc ---ş şJmş şCena bez upu. zlş ş Rbtş şCena z upu. w zlş şPozycja-netto zlş şSpodş şPozycja- podatekş
D││ş---------------------- Dodatkowy opis --------------------ş
T└┴┘Ramka wielowierszowa, nagłówek i każda pozycja w oddzielnym wierszu:
Tţ50{5}┌ţ50{11}┬ţ50{+185}┐
T│Lp.│ -----Indeks----- -----------------nazwa/opis----------------------- ---SWW\PKWiU----
T│ │ ----ilośc----- -jm- ----şRodz.cenyş--- upust -cena z upustem--- -wartośc netto zł- -PTU%- -----Kwota PTU----
P├┼┤
P│şLş│ şIndeks towaru ş ş--------------- Nazwa towaru -------------------ş ş------SWW-----ş
P│ │ ş-- Ilosc ---ş şJmş şCena bez upu. zlş ş Rbtş şCena z upu. w zlş şPozycja-netto zlş şSpodş şPozycja- podatekş
D││ş---------------------- Dodatkowy opis --------------------ş
T└┴┘Jak widać powyższe ramki różnią się jedynie jedną literką, rodzajem linii w której zdefiniowane są znaki rozdzielenia wiersza nagłówka od pozycji. Raz linia ta jest przyłączona tylko do nagłówka (typ T) w drugim przykładzie związana jest z pozycją (typ P) i powtarzana dla każdej pozycji powodując rozdzielenie ich liniami poziomymi.
Rozwiązanie 3:
W rozwiązaniu tym przedstawiona jest ramka z szarym tłem w nagłówku i pozycjami w jednym wierszu tabeli. Do umieszczenia tła w nagłówku użyty został prostokąt. Wykorzystanie wielkości 'em' znacznie ułatwia jego umieszczenie względem ramki semigraficznej, gdyż ramka ta umieszczana jest na wysokości połowy wiersza i szerokości połowy znaku semigraficznego.
Tţ50{5}ţ55{+0.5em,-0.5em,+130em,+3em,silver}┌ţ50{11}┬ţ50{+185}┐
T│Lp.│ -----Indeks----- -----------------nazwa/opis----------------------- ---SWW\PKWiU----
T│ │ ----ilośc----- -jm- ----şRodz.cenyş--- upust -cena z upustem--- -wartośc netto zł- -PTU%- -----Kwota PTU----
T├┼┤
P│şLş│ şIndeks towaru ş ş--------------- Nazwa towaru -------------------ş ş------SWW-----ş
P│ │ ş-- Ilosc ---ş şJmş şCena bez upu. zlş ş Rbtş şCena z upu. w zlş şPozycja-netto zlş şSpodş şPozycja- podatekş
D││ş---------------------- Dodatkowy opis --------------------ş
T└┴┘Rozwiązanie 4:
Tabelka z powyższego przykładu dodatkowo zostanie wzbogacona o kropkowaną linię rozdzielającą poszczególne pozycje. Linia ramki natomiast zostanie zdecydowanie pogrubiona.
Tţ53{-,0.2,black}ţ50{5}ţ55{+0.5em,-0.5em,+130em,+3em,silver}┌ţ50{11}┬ţ50{+185}┐ T│Lp.│ -----Indeks----- -----------------nazwa/opis----------------------- ---SWW\PKWiU---- T│ │ ----ilośc----- -jm- ----şRodz.cenyş--- upust -cena z upustem--- -wartośc netto zł- -PTU%- -----Kwota PTU---- Pţ53{..,0}├┼┤ P│şLş│ şIndeks towaru ş ş--------------- Nazwa towaru -------------------ş ş------SWW-----ş P│ │ ş-- Ilosc ---ş şJmş şCena bez upu. zlş ş Rbtş şCena z upu. w zlş şPozycja-netto zlş şSpodş şPozycja- podatekş D││ş---------------------- Dodatkowy opis --------------------ş Tţ53{-,0.2}└┴┘
Rozwiązanie 5:
Niestety w powyższym przykładzie linia rozdzielające nagłówek od treści przyjęła ten sam styl co linia rozdzielająca pozycje. Można to zmienić pamiętając, że kolejność występowania znaczników (wykonywania ich) jest zgodna z kierunkiem czytania tekstu. Znak zmiany linii można umieścić więc po umieszczeniu pierwszej linii rozdzielającej wiersze. Spowoduje to, iż pierwsza linia (oddzielająca nagłówek od pozycji) narysowana będzie obowiązującym wcześniej stylem. Linia pionowa rysowana jest dopiero po napotkaniu jej końca, więc znak ustalający styl linii o szerokości 0.2 umieszczono w ostatnim wierszu.
Tţ53{-,0.2,black}ţ50{5}ţ55{+0.5em,-0.5em,+130em,+3em,silver}┌ţ50{11}┬ţ50{+185}┐ T│Lp.│ -----Indeks----- -----------------nazwa/opis----------------------- ---SWW\PKWiU---- T│ │ ----ilośc----- -jm- ----şRodz.cenyş--- upust -cena z upustem--- -wartośc netto zł- -PTU%- -----Kwota PTU---- P├┼┤ ţ53{..,0} P│şLş│ şIndeks towaru ş ş--------------- Nazwa towaru -------------------ş ş------SWW-----ş P│ │ ş-- Ilosc ---ş şJmş şCena bez upu. zlş ş Rbtş şCena z upu. w zlş şPozycja-netto zlş şSpodş şPozycja- podatekş D││ş---------------------- Dodatkowy opis --------------------ş Tţ53{-,0.2}└┴┘
Powyższe rozwiązanie ciągle ma wady. Linie pionowe będą miały niewłaściwy styl przy wydrukach wielopozycyjnych, wielostronicowych. Dzieje się tak dlatego, iż linia pionowa rysowana jest nie tylko po napotkaniu jej końca ale także po napotkaniu końca strony. Częściowo rozwiązać to można bardziej szczegółowo sterując stylem linii:
Tţ53{-,0.2,black}ţ50{5}ţ55{+0.5em,-0.5em,+130em,+3em,silver}┌ţ50{11}┬ţ50{+185}┐ T│Lp.│ -----Indeks----- -----------------nazwa/opis----------------------- ---SWW\PKWiU---- T│ │ ----ilośc----- -jm- ----şRodz.cenyş--- upust -cena z upustem--- -wartośc netto zł- -PTU%- -----Kwota PTU---- P├┼┤ ţ53{-,0.2} P│şLş│ şIndeks towaru ş ş--------------- Nazwa towaru -------------------ş ş------SWW-----ş P│ │ ş-- Ilosc ---ş şJmş şCena bez upu. zlş ş Rbtş şCena z upu. w zlş şPozycja-netto zlş şSpodş şPozycja- podatekş P ţ53{..,0.2} ţ50{,-1em} D││ş---------------------- Dodatkowy opis --------------------ş Tţ53{-,0.2}└┴┘
Właściwy rezultat można osiągnąć składając tabele z dwóch rozdzielnych tabel. Kotwiczka pomiędzy tabelkami powoduje, iż druga tabela zaczyna się w tym samym wierszu co kończy poprzednia. Należy ponownie zadbać o właściwe szerokości kolumn.
Tţ53{-,0.2,black}ţ50{5}ţ55{+0.5em,-0.5em,+130em,+3em,silver}┌ţ50{11}┬ţ50{+185}┐ T│Lp.│ -----Indeks----- -----------------nazwa/opis----------------------- ---SWW\PKWiU---- T│ │ ----ilośc----- -jm- ----şRodz.cenyş--- upust -cena z upustem--- -wartośc netto zł- -PTU%- -----Kwota PTU---- T└┴┘ ţ50{,-1em} Pţ53{..,0}ţ50{5}├ţ50{11}┼ţ50{+185}┤ ţ53{-,0.2} P│şLş│ şIndeks towaru ş ş--------------- Nazwa towaru -------------------ş ş------SWW-----ş P│ │ ş-- Ilosc ---ş şJmş şCena bez upu. zlş ş Rbtş şCena z upu. w zlş şPozycja-netto zlş şSpodş şPozycja- podatekş D││ş---------------------- Dodatkowy opis --------------------ş T└┴┘
Ostatnia pionowa linia nie została narysowana. Linie pionowe tabeli znalazły się w nieoczekiwanych miejscach. Linie pionowe rysowane są tylko na pierwszej stronie i nie są kontynuowane na kolejnych (przy wydrukach wielopozycyjnych).
Najczęstszym błędem przy rysowaniu ramek jest pozostawianie nie domkniętych linii pionowych. Jeżeli nie zakończono linii pionowych zostaną one narysowane tylko na pierwszej stronie o ile tabela kończy się na stronie dalszej. Jeżeli tabelka ma mało pozycji linie mogą nie zostać narysowane.
Pominięcie zakończenia niektórych linii spowoduje przyporządkowanie zakończeń do kolejnych początków linii pionowych. Ostatnie linie zostaną więc bez zakończeń pomimo, iż na wzorcu znajdują się one w jednej kolumnie.
Brak którejś z linii pionowych na wzorcu często spowodowany jest pominięciem zakończenia wcześniejszej linii pionowej.
W kolejnych pozycjach zawartość kolumn umieszczana jest w coraz dalszych kolumnach. Zawartość tabeli ucieka w prawo.
Linie pionowe rozpoczęte w linii typu P muszą mieć swoje zakończenia w linii typu P, analogicznie rozpoczęte w linii typu T muszą być zakończone w linii typu T.
W tym przypadku linie pionowe zostały rozpoczęte w linii typu T, a jedno lub kilka zakończeń linii znalazło się w linii typu P. Każda pozycja powodowała więc zakończenie kolejnych linii pionowych tabelki. Tekst z kolumny pierwszej trafiał więc do drugiej kolumny a w następnej pozycji do trzeciej itd.
Obrazek nie pojawia się na wydruku.
Należy sprawdzić czy:
Dla drukarek w systemie Windows czy obrazek ma rozszerzenie bmp.
Podana nazwa jest zgodna z rzeczywistą. W Linux ma znaczenie wielkość liter.
Obrazek poszukiwany jest katalogu systemu z którego wywołano wydruk np. NATRES. Jeżeli obrazek znajduje się w innym miejscu, np. podkatalogu NAZAL należy podać ścieżkę do niego (NAZAL\obrazek.bmp). Ścieżka może być podana względem katalogu aktualnego systemu, jak w przykładzie, albo bezwzględnie (np. C:\obrazki\obrazek.bmp).
Wartości numeryczne w kolumnach nie są wyrównane do prawej. Odsuwanie tekstu w prawo nie daje oczekiwanego rezultatu.
Zmieniono czcionkę na inną niż Courier New.
Próba przesuwania napisu, pola, wartości przy użyciu spacji jest błędna. Związane jest to z tym, iż w większości czcionek spacja NIE posiada ustalonego rozmiaru. Dopisywanie spacji nie wpływa na położenie tekstu na wydruku albo przesuwa go o nie ustaloną zmienną wielkość. Spacja może być używana wyłączne do rozdzielania wyrazów. Pozycjonowanie tekstu należy wykonać przy użyciu zakotwiczenia.
Przy wartościach numerycznych pobieranych z pól liczby mniejsze będą przesuwane w lewo, gdyż spacje wstawiane w miejsce wiodących cyfr 0 nie posiadają szerokości. Należy użyć znaków sterujących wyrównania do prawej lub wyśrodkowania ciągu.
Przy wydruku wielu kopii, poszczególne kopie nie są identyczne (różnią się czcionką, układem...).
Dodatkowa informacja: Problem nie występuje jeżeli ilość kopii ustawi się we właściwościach urządzenia a w okienku podczas wydruku pozostawi ustawienia bez zmian.
Stosując znacznik sterujący zmianą czcionki należy stosować go konsekwentnie i użyć go do każdej części dokumentu. Każda zmiana czcionki zmienia poprzednie ustawienie. Najbezpieczniej rozpocząć wzorzec dokumentu od wstawienia w pierwszej linii znaku sterującego zmianą czcionki.
Nazwa zbioru tekstowego wzorca, np. HTML01FP.FA
T<html> S<p align="right">ORYGINAŁ/KOPIA</p><br> T<table> S<tr><td>Sprzedawca: ------------------ Pełna nazwa firmy ---------------------</td><td> </td></tr> T<tr><td>------- Firma-ulica --------</td> <td>Data wystawienia: Data w</td></tr> T<tr><td>Kodf ---- Firma--miasto ----</td><td>Data sprzedaży: Data s</td></tr> T<tr><td>NIP: Firma - NIP </td><td>Termin zapłaty: Z </td></tr> T<tr><td>Bank: ------- Firma - nazwa banku 1 -------- </td><td>do dnia: Termin</td></tr> T<tr><td>rachunek: ------- Firma - rachunek 1 ----------- </td><td>Sposób zapłaty: Formapła</td></tr> T</table> S<hr> <b>Dokument - rodzaj</b> <br> S <b>numer Nr dokum. </b> <br> T Do zamówienia: Nr zamow. z dnia: Data z<br> T <br> T<table width=100%> T<tr><td>Nabywca/Płatnik: Pła.</td><td>Odbiorca/Adresat</td></tr> T<tr><td>------------------ Nazwa płatnika ------------------------</td> T<td>------------------ Nazwa adresata ------------------------</td></tr> T<tr><td>----- Płatnik - ulica ------</td><td>----- Adresat - ulica ------</td></tr> T<tr><td>Kodp -- Płatnik - miasto ---</td><td>Koda -- Adresat - miasto ---</td></tr> T<tr><td>NIP: Płatnik-NIP</td></tr> T<tr><td></td><td> Uwagi: ---------- Uwagi ----------- </td></tr> T</table> S<hr> T Lp. -----Indeks----- -----------------nazwa/opis----------------------- -------SWW------ T ----iložc----- -jm- ----Rodz.ceny--- upust -cena z upustem--- -wartožc netto zł- -PTU%- -----Kwota PTU---- T<hr> P L Indeks towaru --------------- Nazwa towaru ------------------- ------SWW----- P -- Iložc --- Jm Cena bez upu. zł Rbt Cena z upu. w zł Pozycja-netto zł Spod Pozycja- podatek D ---------------------- Dodatkowy opis -------------------- T<hr> T<table> T<tr><td> </td><td>netto </td><td>PTU </td><td>Brutto </td></tr> T<tr><td>RAZEM</td><td>Razem net z rab.</td><td>Razem PTU z rab.</td><td>Razem bru z rab.</td></tr> T<tr><td></td></tr></table> T<table> T<tr><td>w tym: ZW</td><td> Netto z rab zwol</td><td>   </td><td> Brutt z rab. zwo</td></tr> T<tr><td> St01</td><td> Netto z rab 01 </td><td> PTU z rab. 01 </td><td> Brutto z rab. 01</td></tr> T<tr><td> St02</td><td> Netto z rab 02 </td><td> PTU z rab. 02 </td><td> Brutto z rab. 02</td></tr> T<tr><td> St03</td><td> Netto z rab 03 </td><td> PTU z rab. 03 </td><td> Brutto z rab. 03</td></tr> T<tr><td> St04</td><td> Netto z rab 04 </td><td> PTU z rab. 04 </td><td> Brutto z rab. 04</td></tr> T<tr><td> St05</td><td> Netto z rab 05 </td><td> PTU z rab. 05 </td><td> Brutto z rab. 05</td></tr> T<tr><td> St06</td><td> Netto z rab 06 </td><td> PTU z rab. 06 </td><td> Brutto z rab. 06</td></tr> T</table> T<hr> Tsłownie T------------------------- Słownie ---------------------------------------------- Słownie cd ------------------------ T T imię i nazwisko osoby upoważnionej imię i nazwisko osoby upoważnionej T do otrzymania faktury do wystawienia faktury T T Osoba upoważniona do odbioru -------- Sporządził -------- T<html>
Wykorzystane znaczniki HTML (peła lista dostępna w specyfikacji HTML):
<table></table> - odpowiednio początek i koniec tabeli
<tr></tr> - odpowiednio początek i koniec wiersza tabeli
<td></td> - odpowiednio początek i koniec komórki tabeli
<th></th> - odpowiednio początek i koniec komórki nagłówka tabeli
Wybrane atrybuty i ich zastosowanie:
znacznik <table>
| <table border=1> - wyświetla obramowanie tabelli |
| <table width=X%> - ustawia szerokość tabeli na X% szerokości okna przeglądarki |
znacznik <td>
| <td align=center> - wyrównanie do środka zawartości komórki (analogicznie: align=left/right) |
znacznik <tr>
| <tr bgcolor=red> - czerwone tło wiersza tabeli |
znacznik <caption>
| <caption align=top/bottom> - podpis tabeli umieszczony u góry/na dole tabeli |
Przykład:
<TR bgcolor="gray"><TH>1991</TH> <TH>1992</TH> </TR> - nagłówek tabeli o szarym tle, dwie komórki nagłówkowe o nazwach 1991 i 1992
<html>
<head>
<meta http-equiv='Content-type' Content='text/html; charset=iso-8859-2'>
</head>
<body>
<pre style='font-family: monospace'>
<html>
<p align="right">ORYGINAŁ/KOPIA</p><br>
<table>
<tr><td>Sprzedawca: Firma Przykładowa </td><td> </td></tr>
<tr><td>Kwiatowa 12 </td> <td>Data wystawienia: 04.03.29</td></tr>
<tr><td>85-200 Gdynia </td><td>Data sprzedaży: 04.03.29</td></tr>
<tr><td>NIP: 526-456-85-44 </td><td>Termin zapłaty: </td></tr>
<tr><td>Bank: Nordea Bank o. w Gdyni </td><td>do dnia: 04.04.05</td></tr>
<tr><td>rachunek: 1440 1026 0000 0000 0035 6937 </td><td>Sposób zapłaty: Gotówka </td></tr>
</table>
<hr> <b>Faktura VAT </b> <br>
<b>numer 213001/03/04</b> <br>
Do zamówienia: z dnia: . . <br>
<br>
<table width=100%>
<tr><td>Nabywca/Płatnik: 000003</td><td>Odbiorca/Adresat</td></tr>
<tr><td>WEGAN HURTOWNIA PAPIERNICZA </td>
<td>WEGAN HURTOWNIA PAPIERNICZA </td></tr>
<tr><td>Portowa 88 </td><td>Portowa 88 </td></tr>
<tr><td>81-222 Gdynia </td><td>81-222 Gdynia </td></tr>
<tr><td>NIP: 561-903-78-23</td></tr>
<tr><td></td><td> Uwagi: </td></tr>
</table>
<hr>
Lp. -----Indeks----- -----------------nazwa/opis----------------------- -------SWW------
----ilo¶c----- -jm- ----Cena brutto--- upust -cena z upustem--- -warto¶c netto zł- -PTU%- -----Kwota PTU----
<hr>
1 00019 MYSZ LOG. OEM SCROLL
10.000 SZT 25.38 0.00 25.38 208.03 22.00 45.77
<hr>
<table>
<tr><td> </td><td>netto </td><td>PTU </td><td>Brutto </td></tr>
<tr><td>RAZEM</td><td> 208.03</td><td> 45.77</td><td> 253.80</td></tr>
<tr><td></td></tr></table>
<table>
<tr><td>w tym: ZW</td><td> 0.00</td><td>   </td><td> 0.00</td></tr>
<tr><td> 22.00</td><td> 208.03</td><td> 45.77</td><td> 253.80</td></tr>
<tr><td> 7.00</td><td> 0.00</td><td> 0.00</td><td> 0.00</td></tr>
<tr><td> 3.00</td><td> 0.00</td><td> 0.00</td><td> 0.00</td></tr>
<tr><td> 0.00</td><td> 0.00</td><td> 0.00</td><td> 0.00</td></tr>
<tr><td> 0.00</td><td> 0.00</td><td> 0.00</td><td> 0.00</td></tr>
<tr><td> 0.00</td><td> 0.00</td><td> 0.00</td><td> 0.00</td></tr>
</table>
<hr>
słownie
Dwie¶ciePięćdziesi±tTrzyZŁ.Osiemdziesi±tGR.
imię i nazwisko osoby upoważnionej imię i nazwisko osoby upoważnionej
do otrzymania faktury do wystawienia faktury
Jan Szczepański Adam Abacki
<html>
</pre>
</body>
</html>Wygląd dokumentu faktury w przeglądarce internetowej:

Kody kreskowe można umieszczać na wydrukach dokumentów według wzorca. Do umieszczania kodów kreskowych służą znaki sterujące ţ80 – EAN 128 i ţ82 – EAN 13.
Przykład:
Fragment wzorca dokumentu rozchodu magazynowego drukujący linie pozycji dokumentu. Obok indeksu towarowego w postaci czytelnej umieszczony jest także kod kreskowy z indeksem zakodowanym kodem EAN 128. Grubość pojedynczej kreski (modułu) 0.15mm, wysokość kodu 4mm.
P ţ80{şIndeks towaru ş;0.15;4}W podobny sposób można wzbogacić dokument o kod kreskowy z numerem dokumentu (o wysokości 20mm). Umieszczony w prawym górnym rogu.
T ţ50{160}ţ80{şNr dş;;20}Dodatkowy czytelny dla człowieka numer dokumentu umieszczony pod kodem ułatwi rozpoznanie zawartości kodu kreskowego.
T ţ50{170;+1em}ţ51{;14}şNr dşţ51{;7}ţ50{;-1em}W efekcie standardowy dokument rozchodu magazynowego wzbogacony o kody kreskowe wygląda następująco:

W identyczny sposób można umieścić na wydruku kod EAN 13. Należy użyć znaku sterującego ţ82.
P ţ82{ş---EAN13---ş;;32}Źródło wzorca:
T ţ51{Courier New;7}Dnia 20şD.dzisş
T
T şDokument - rodzajş Nr şNr dş z dnia 20şD.dokuş ţ50{160}ţ80{şNr dş;;20}
T Magazyn: ş1ş şDokument - nazwa magazynu ş ţ50{170;+1em}ţ51{;14}şNr dşţ51{Courier New;7}ţ50{;-1em}
T
T
T Data dostawy: şD.dostş Uwagi: ş---------- Uwagi -----------ş
T
T ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
T Poz. Gr. Nazwa towaru Ilośc Jm. Cena Wartośc
T Indeks Nr partii
T ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
P şPoş şGş ş--------------- Nazwa towaru -------------------ş ş-- Ilosc ---ş şJmş ş---- Cena ------ş şPozycja-wartosc ş
P şIndeks towaru ş ş Numer partii ş ţ80{şIndeks towaru ş;0.15;4}
T ─────────────────────────────
T Razem ş Razem dokument ş
T ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
T Uwagi:
T
T
T Wystawił: ş-------- Sporzadzil --------ş Sprawdził: Pobrał:
T ......... ...................... .......... ...................... ......... ................................
T Data Podpis Data Podpis Data Podpis