Con questo modulo è possibile generare dei file PDF partendo da file di testo contenenti una valida sintassi JSON, che possono essere localizzati sia nella cartella della singola azienda (quindi caricati dal pannello PARAMETRI dell’area partner come file generico) oppure nell’area comune dei pattern.
La generazione deve avere uno o più oggetti di partenza, ad esempio può essere un modello basato su un cliente, o su un articolo, una lista di scadenze dell’estratto conto, un ordine.
La definizione JSON è un array di oggetti JSON che devono avere obbligatoriamente l’attributo type che può identificare:
- t = testo semplice non interpretato, nel cui attributo text potrei trovare ad esempio “Denominazione”
- p = testo pattern interpretato sul tipo di oggetto di partenza, nel cui attributo text potrei trovare ad esempio “Codice: [code]”
- c = testo in cella con allineamento e bordi
- d = dettaglio, permette di inserire un riquadro al cui interno vengono rappresentati degli oggetti figlio, ad esempio più scadenze dell’estratto conto cliente, o righe di un documento
- f = firma grafica, che viene richiesta all’utente nel momento in cui si genera il documento
- i = immagine, in cui potrei trovare un attributo url per prelevare online da un indirizzo web o un attributo file in cui potrei trovare ad esempio “logo.png” oppure “[imm1]”
- l = linea
- q = riquadro
- u = testo che viene richiesto all’utente in fase di generazione
Tutti o quasi gli oggetti hanno degli attributi universali che quindi non saranno riportati su ognuno dei tipi, e sono:
- page = numero di pagina su cui l’elemento deve apparire, oppure “all” se deve apparire su tutte, valore default 1
- x = distanza dal bordo sinistro in millimetri, quindi generalmente nel range 5-205
- y = distanza dal bordo superiore in millimetri, quindi generalmente nel range 5-292
- z = ordinamento di profondità, con range 1-100, per cui un valore più piccolo viene aggiunto nel documento prima e quindi va sullo sfondo
Tipo “c” (testo in cella/riquadro)
Testo interpretato racchiuso in un riquadro, in aggiunta al testo interpretato quindi alle proprietà x, y, text, size, ha anche gli attributi:
- w = larghezza del riquadro
- h = altezza del riquadro
- align = allineamento del testo nel riquadro, che può essere L (default) per allineamento a sinistra, R per allineamento a destra, C per allineamento al centro
- border = grandezza del bordo, ad esempio 1
- ln = imposta se continuare sulla stessa linea (con valore 0) oppure spostarsi a quella successiva (con ln = 1 oppure un valore > 0, con la differenza che quando è 1 il cursore viene riportato al margine sinistro)
- fill = riempimento della cella, 0 rimane trasparente, 1 a fondo bianco
Tipo “d” (dettaglio oggetti secondari)
Blocco di dettaglio con le proprie coordinate x, y, w, h per definire i contorni del blocco. Contiene un array “elements” contenente gli elementi da valutare per ognuno degli oggetti figlio, le coordinate di ogni definizione vengono traslate rispetto al punto alto a sinistra del blocco, e in verticale viene aggiunto un ulteriore spostamento verso il basso pari al valore della proprietà “h2” per ognuno degli oggetti figlio (ad esempio una scadenza di estratto conto, una riga di documento).
- x = distanza del blocco di dettaglio dal margine sinistro
- y = distanza del blocco di dettaglio dal margine superiore
- w = larghezza del blocco di dettaglio
- h = altezza del blocco di dettaglio
- h2 = spostamento fra una riga e la successiva all’interno del blocco di dettaglio
- elements = array di definizioni interpretate su ognuno degli oggetti del blocco di dettaglio, le coordinate di ognuno degli elementi sono relative al punto 0,0 del blocco di dettaglio e non all’angolo superiore sinistro della pagina
Tipo “f” (firma dell’utente)
- w = larghezza del riquadro firma
- h = altezza del riquadro firma
Tipo “i” (immagine)
Blocco immagine che può essere presa da un URL internet specificando l’attributo url oppure può cercare un file locale scaricato nella cartella interna delle foto specificando l’attributo file, che non deve contenere obbligatoriamente il nome ma può anche essere un pattern che viene interpretato sulla base dell’oggetto di origine, ad es. “[imm1]” che preleva l’URL della foto principale di un articolo, “[imm2]” la prima delle foto aggiuntive ecc…
In aggiunta alle proprietà x e y, l’oggetto ha anche:
- w = larghezza dell’immagine
- h = altezza dell’immagine
- url = url da cui recuperare l’immagine, una volta scaricata viene mantenuta in locale e non è possibile forzare il download di un file con lo stesso nome
- base64 = dati Base64 contenente i byte di immagine JPG o PNG, alternativo all’url
- ratio = se valorizzato a 1 mantiene le proporzioni dell’immagine adattandola nel contenitore specificato da w e h, lasciando eventuale spazio non riempito
Tipo “l” (linea)
Linea disegnata a partire dal punto di coordinate x,y fino al punto di coordinate x2, y2. In alcune delle implementazioni, ad esempio esportando in PNG o JPG, la linea sarà disegnata solo se retta, quindi con x=x2 oppure y=y2.
Altri attributi:
- color = colore della linea in valore esadecimale, es. 0x000000
- w = spessore della linea
Tipo “p” (testo interpretato)
Testo interpretato sull’oggetto di partenza, ad esempio se sto generando il PDF partendo da un articolo posso usare i tag [code], [desc], [imm1], [pric], [note] per ottenere rispettivamente gli attributi codice, descrizione, url dell’immagine principale, prezzo, dettagli. Gli attributi sono gli stessi del tipo “t” quindi text e size ma anche w e wrap se devo andare a capo.
Tipo “q” (riquadro)
Valorizzando gli attributi x, y, x2, x2 equivale a disegnare le quattro linee da x,y a x,y2, poi x2,y2, poi x2,y e infine nuovamente a x,x.
Tipo “t” (testo semplice)
Testo semplice non interpretato con gli attributi:
- text = stringa da scrivere
- size = grandezza del carattere, opzionale, default 10
- w = larghezza della cella nel caso sia abbinato all’opzione wrap per andare a capo automaticamente
- wrap = se valorizzato a 1 porta il testo a capo se supera la larghezza massima impostata
Tipo “u” (testo immesso da utente)
Testo liberamente immesso dall’utente al momento della compilazione, è necessario il parametro “text” contenente la richiesta che sarà presentata all’utente e il resto dei parametri sono in comune con il tipo “t” o “p”. Il testo immesso viene interpretato come pattern prima di essere aggiunto al documento quindi se l’utente immette il testo [oggi] questo tag viene sostituito con la data odierna.