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).