Spyrl 2015

Da MontelLUG.

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