Spyrl 2015
Da MontelLUG WIKI.
Cos'è
Spyrl è un software libero scritto in Python che mostra come produrre un file pdf statico o dinamico utilizzando Sqlite3 e ReportLab. E' possibile utilizzarlo per stampare delle etichette o degli avvisi più o meno standard. Il programma può essere facilmente adattato per essere eseguito tramite un web server.
Come si installa?
- scaricare lo script e i file di esempio da spyrl.zip sul proprio disco
- installare Python 3
- installare python-pip ($ sudo apt-get install python-pip)
- installare Pillow ($ pip install pillow)
- installare ReportLab ($ pip install reportlab)
Come si usa?
- personalizzare la struttura della pagina tramite il file data.xml (coordinate in millimetri, origine in basso a sinistra)
- personalizzare, se usato, il database app.sqlite
- eseguire lo script, $ python3 spyrl.py [out.pdf] [app.sqlite] [data.xml]
I parametri possono essere passati in qualsiasi ordine e vengono riconosciuti dall'estensione del file. Per gestire i file .sqlite è possibile installare l'estensione 'Sqlite Manager' su Mozilla Firefox.
I tag di data.xml
- root, è il nodo principale che contiene tutti gli altri
- sqlite, contiene, se usata, la query da eseguire sul database. Il database predefinito è 'app.sqlite' ma può essere ridefinito tramite parametro dalla linea di comando.
- header, contiene gli elementi da inserire in tutte le pagine (intestazioni e piè di pagina)
- font, consente di definire alcune caratteristiche del carattere utilizzato per i testi
- name, nome del font tra quelli incorporati : Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique, Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique, Symbol, Times-Bold, Times-BoldItalic, Times-Italic, Times-Roman, ZapfDingbats
- size, dimensione del carattere
- text, testo da visualizzare
- x, distanza dal margine sinistro
- y, distanza dal margine inferiore
- skip_page, pagina in cui non deve essere visualizzato il testo (ad esempio, la prima)
- align, permette di definire l'allineamento rispetto alla pagina (left, center, right)
- par o paragraph, testo da visualizzare dentro area delimitata
- x, distanza dal margine sinistro
- y, distanza dal margine inferiore
- width, larghezza
- height, altezza
- skip_page, pagina in cui non deve essere visualizzato il testo (ad esempio, la prima)
- boundary, visualizza la cornice di contorno
- tag_start, indica quale carattere dovrà essere utilizzato come inizio tag per ReportLab
- tag_end, indica quale carattere dovrà essere utilizzato come fine tag per ReportLab
- nei testi è possibile utili zzare i seguenti segnaposti:
- %nrpag%, numero di pagina
- %sql-<nome_colonna>%, visualizzo il contenuto della colonna 'nome_colonna' presente nella query (es. %sql-cognome%)
- frame, definisce un'area dove verranno visualizzati uno o più paragrafi
- img, immagine da visualizzare
- x, distanza dal margine sinistro
- y, distanza dal margine inferiore
- width, larghezza
- height, altezza
- skip_page, pagina in cui non deve essere visualizzata l'immagine (ad esempio, la prima)
- src, indica il file da visualizzare
- line, consente di disegnare una linea
- coords, indica le coordinate della linea (x1, y1, x2, y2)
- skip_page, pagina in cui non deve essere visualizzato il testo (ad esempio, la prima)
- rect, consente di disegnare una rettangolo
- x, distanza dal margine sinistro
- y, distanza dal margine inferiore
- width, larghezza
- height, altezza
- skip_page, pagina in cui non deve essere visualizzato il testo (ad esempio, la prima)
- color, consente di specificare il colore
- fill, colore di riempimento in R,G,B
- stroke, colore del bordo in R,G,B
- newpage, crea una nuova pagina
- sql_next, passa al prossimo record in database. Se non esiste, termina lo script
- repeat, consente di ripetere alcuni elementi per N volte. Molto utile per le etichette
- x, distanza orizzontale fra gli elementi (se positivo, verso destra)
- y, distanza verticale fra gli elementi (se positivo, verso l'alto)
- x_count, numero di elementi orizzontali
- y_count, numero di elementi verticali