La risorsa html_res¶
Devo definire il modulo risorsa di stampa, nella directory html_res
all’interno della directory della table per la quale sto definendo la stampa.
Supponiamo di avere una table cliente
e di voler definire una stampa estratto conto che faccia riferimento ad essa. Dovrò andare a definire la risorsa al path:
resources/tables/cliente/html_res/stampa_estrattoconto.py
Suggerimento
Se avete scaricato il progetto Sandbox, potete trovare un esempio di risorsa di stampa di questo tipo all’interno del package fatt al path: resources/tables/fattura/html_res/mia_fattura.py
TableScriptToHtml¶
Per questo tipo di risorsa di stampa occorre importare la classe TableScriptToHtml
e definire l’oggetto stampa come classe che erediti da esso.
from gnr.web.gnrbaseclasses import TableScriptToHtml
class Main(TableScriptToHtml):
page_height = 287
page_width = 198
row_table='fatt.fattura'
doc_header_height = 20
doc_footer_height = 5
grid_header_height = 4
grid_footer_height = 0
row_mode='attribute'
grid_row_height = 4
Scrivere una risorsa di stampa quindi consiste nel definire un oggetto che erediti da TableScriptToHtml fornendo i valori per le variabili di classe ed implementando opportuni metodi di hook. Di fatto, implementare una stampa in Genropy significa definire il set minimo di attributi e metodi per ottenere il risultato desiderato, rispetto ad un comportamento di default.
Nel resto del capitolo spieghiamo esattamente come definire queste risorse di stampa
Parametri:
Nome parametro |
Tipo |
Descrizione |
---|---|---|
maintable |
T |
La tabella dei record oggetto della stampa (contenuti in self.record) |
row_table |
T |
La tabella delle righe della griglia di stampa. Può essere diversa dalla maintable, in quel caso basta specificare row_table = “pkg.table” |
page_height |
L |
Attributo facoltativo, permette di personalizzare l’altezza della pagina |
page_width |
L |
Attributo facoltativo, permette di personalizzare la larghezza della pagina |
doc_header_height |
L |
Attributo facoltativo, permette di specificare l’altezza del doc_header |
doc_footer_height |
L |
Attributo facoltativo, permette di specificare l’altezza del doc_footer |
grid_header_height |
L |
Attributo facoltativo, permette di specificare l’altezza del grid_header |
grid_footer_height |
L |
Attributo facoltativo, permette di specificare l’altezza del grid_footer |
grid_row_height |
L |
Attributo facoltativo, permette di specificare l’altezza di default di ogni singola riga della griglia di stampa |
row_mode |
T |
Attributo facoltativo, permette di indicare se trattare le righe come valori, bag o attributi («value», «bag» o «attributes») |
empty_row |
T |
Attributo personalizzato, permette di definire come trattare i record vuoti. Di default verrà stampata una pagina bianca, in alternativa, con empty_row=dict(), è possibile stampare il contenuto della pagina ma con una griglia vuota. È infine possibile specificare all’interno del dict i valori da indicare per il record vuoto, sulla base di quanto definito nel metodo gridStruct |
splittedPages |
L |
Attributo facoltativo, permette di interrompere e riprendere dopo un tot di pagine (es. splittedPages=10) la generazione del pdf, in modo da rendere il processo di stampa più efficiente in corrispondenza di un elevato numero di pagine |
virtual_columns |
T |
Permette di indicare le colonne virtuali da caricare per la stampa (es: virtual_columns=”$n_fatture,$tot_fatturato”). Queste saranno infatti sempre compilate nella struct, ma non saranno disponibili di default in tutto il resto della stampa se non staticizzate |
record_template |
T |
Permette di indicare il template da utilizzare per la stampa del record (es: record_template = “fattura_template”) |
pdf_service |
T |
Permette di indicare un service htmtopdf alternativo a quello di default (WeasyPrint). |