I File coinvolti sono 4:
1.un file di modello pdf = contiene la base da cui prelevare le pagine con le quali generare il nuovo documento.
può essere un qualsiasi file pdf purché contenente un solo documento (per ora).
2.un file di modello .txt = il file contiene i tag con le informazioni di posizionamento, font, e nome tag con cui generare il file .txt di dati
3.un file .txt che conterra i dati di stampa
4.un file .pdf generato dalla base di modello con impressi i dati di stampa.
La struttura del file di modello
(vers. 1.0 04/04/2017)
E' costituito da righe di testo separate da "|".
Le righe che cominciano per "#" sono considerate COMMENTI quindi da saltare.
Le righe che cominciano per "$DebWriterDirective=" contengono DIRETTIVE speciali per DebWriter che ne influenzano il comportamento globale.
Le righe che hanno 13 colonne vengono interpretate come righe contenti particolari COMANDI,
Le altre righe aventi tra le 8 e le 9 colonne sono considerati come CAMPI STANDARD
#$DebWriterDirective=Directive
#model-page|occurrence|left|top|width|height|font size|text|
#model-page|occurrence|left|top|width|height|font size|tag|text|
#model-page|occurrence|left|top|width|height|font size|text|command|option|type|LineColor|Fillcolor
# se occurrence= 0 -> skip page
# se modello-pdf-page = -1 allora copia tutte le pagine della struttura originale del modello
es.
#una direttiva
$DebWriterDirective=CopyAllPages
#un comando
-1|001|20|820|350|70|1,5||DrawBox|0||0,0,255|0,0,0
-1|001|30|860|300|100|09|COPIA CONFORME ALL'ORIGINALE|DrawText|0||0,0,255|0,0,0
#un campo standard con TAG e TESTO
1|1|335|780|300|100|13|<sostituto-codicefiscale-espanso>|testo
#un campo standard con solo TESTO
1|1|115|710|300|100|9|Oggi è una bella giornata
DIRETTIVE:
$DebWriterDirective=CopyAllPages = indica a DebWriter di copiare Tutte le pagine del modello nel file risultante, in questo modo:
•se nelle righe successive è implementata una struttura documento indicando solo solo certe pagine sul PDF questa verrà ignorata e servirà solo a scrivere i dati sulle pagine indicate.
•la presenza di un occurrence > 1 invece genererà un errore sull'applicativo perchè per ora non è stata gestita
CAMPI STANDARD:
modello-pdf-page = pagina del file modello .pdf, il valore -1 indicherà che vale per tutte le pagine
occurrence = occorrenza della pagina, una pagina con occorrenza 0 verrà saltata, una pagina con occorrenza > 1 sarà duplicata
left = posizione orizzontale partendo dall'origine della pagina (punto in basso a sinistra della pagina)
top = posizione verticale partendo dall'origine della pagina (punto in basso a sinistra della pagina)
width = larghezza del box di testo (deve essere adeguata a contenere il testo scritto)
height = altezza del box di testo (deve essere adeguata a contenere il testo scritto)
font size = dimensione del font
tag = tag indica il campo a cui corrisponde il testo: serve al programma cobol per sapere che testo inserire
testo = il testo che verrà stampato
COMMAND IMPLEMENTATI E SIGNIFICATI SPECIALI DEI CAMPI STANDARD:
•per tutti i comandi dove citati:
oleft posizione orizzontale di origine
otop posizione verticale di origine
oLineColor colore in formato RGB (nnn,nnn,nnn) usato per disegnare la linea
oFillColor colore in formato RGB (nnn,nnn,nnn) usato per rimpire la forma disegnata
•DrawBox = serve a disegnare un box che parte dalla posizione left,top ed è di larghezza width, height
otext = viene ignorato
ofont size = è lo spessore della linea (valori decimali in formato nn,nn)
ooption può assumere i valori:
▪0 = box vuoto solo riquadro con linea di colore LineColor
▪1 = box riempito con il FillColor
▪2 = box riqudrato con linea di colore LineColor e riempito con il FillColor
•DrawCircle = serve a disegnare un cerchio che ha centro nella posizione left,top ed è di raggio width
otext = viene ignorato
ofont size = è lo spessore della linea (valori decimali in formato nn,nn)
ooption può assumere i valori:
▪0 = box vuoto solo riquadro con linea di colore LineColor
▪1 = box riempito con il FillColor
▪2 = box riqudrato con linea di colore LineColor e riempito con il FillColor
•DrawLine = serve a disegnare un linea che parte dalla posizione left,top ed arriva alla posizione width, height
otext = viene ignorato
ofont size = è lo spessore della linea (valori decimali in formato nn,nn)
•DrawBarcode = serve a disegnare un Barccode che parte dalla posizione left,top ed è di larghezza width, ed altezza height, LineColor è il colore utilzzato per disegnare il barcode
otext = è il codice da stampare nel barcode, nel caso di UPC la stringa deve essere di 13 caratteri con uno 0 in testa. Il Barcode può essere ruotato aggiungendo a a fine stringa i seguenti codici:
▪/RC = Ruota di 90° in senso orario
▪/RA = Ruota di 90° in senso antiorario
▪/RU = Ruota di 180°
ofont size = viene usato per impostare il sia il size del font (ma probabilmente viene ignorato dalla libreria)
ooption può assumere valori diversi a seconda del type, vedi sotto, ma per tutti vale la regola che se si vuole applicare una riduzione del 10% alla largehzza delle barre occorre incrementare il valreo della relativa option di 10
otype indica il tipo di barcode da stampare e può assumere i seguenti valori:
▪1 = Code 39 (o Code 3 of 9), option può assumere i valori:
•0 = stampa standard
▪2 = EAN-13 o UPC option può assumere i valori:
•0 = stampa solo il barcode
•1 = stampa estese le barre di delimitazione del codice (extended bar guards)
•2 = Draw the human-readable numbers
•3 = Draw the human-readable numbers, with right spacer
•4 = Draw as UPC (leading zero is not shown)
▪3 = CODE128
•0 = stampa standard
▪4 = PostNet
•0 = stampa standard
▪5 = Interleaved 2 su 5 (Interleaved 2 of 5)
•0 = Do not add a checksum, no bearer bars
•1 = Add a checksum character, no bearer bars
•2 = Do not add a checksum, draw bearer bars
•3 = Add a checksum character, draw bearer bars
•DrawText = serve a scrivere una casella di testo in una certa posizione left,top con larghezza width, ed altezza height, e con con un certo colore LineColor e con un determinato allineamento determianto dall'option un linea che parte
otext = il testo da stampare
ofont size = è il size del font
oLineColor = è il colore in formato RGB che verrà usato per scrivere il testo
ooption = può assumere i valori:
▪0 = Center vertical alignment
▪1 = Top vertical alignment
▪2 = Bottom vertical alignment
▪3 = Center vertical alignment, no wrapping
▪4 = Top vertical alignment, no wrapping
▪5 = Bottom vertical alignment, no wrapping
•DrawRotatedText = serve a scrivere una casella di testo in una certa posizione left,top con larghezza width, ed altezza height, e con con un certo colore LineColor e con un determinato allineamento determianto dall'option un linea che parte
otext = il testo da stampare
ofont size = è il size del font
otype = è l'angolo di rotazione misurato in senso anti-orario dalla posizione orizzontale, deve essere compreso tra 0 e 360
oLineColor = è il colore in formato RGB che verrà usato per scrivere il testo
ooption = può assumere i valori:
▪0 = Center vertical alignment
▪1 = Top vertical alignment
▪2 = Bottom vertical alignment
▪3 = Center vertical alignment, no wrapping
▪4 = Top vertical alignment, no wrapping
▪5 = Bottom vertical alignment, no wrapping
Modalità operativa
Occorre leggere il file di modello .txt e da esso generare un file di output .txt che verrà dato in pasto al programma esterno, contenente le righe da stampare.
Le pagine stampate sarano solo quelle referenziate (ed eventualmente duplicate) nel file .txt di output, nell'ordine in cui verranno trovate sul file.
Funzionamento del programma di scrittura DebWriter