Spero di fare cosa gradita pubblicando il modulo che sto utilizzando nel
crm per la generazione delle offerte in ".odt" (formato di OpenDocument,
quello di LibreOffice) partendo da un template nello stesso formato:
https://bitbucket.org/dedalus2000/odtmanager
E' piuttosto banale da utilizzare: fa tutto la funzione "manage", e il
"main" contiene un esempio piuttosto esauriente.
Il template iniziale è un file ".odt" che nel mio caso mi viene fornito
dai commerciali. Può essere piuttosto complesso, e come potete
immaginare ci sono dei tag (che qui iniziano con "$") che vengono
sostituiti durante la generazione del documento finale con il contenuto
che vogliamo noi.
Rispetto alla generazione di un pdf ha il vantaggio (o svantaggio,
secondo i punti di vista) che può essere modificato; poi LibreOffice ha
il pulsante di export in pdf, quindi il risultato per il cliente non
cambia. Ovviamente i miei commerciali aprono l'odt con Word e poi si
lamentano se è un po' spaginato, ma questa è un'altra storia :-)
Ha un solo problema: i tag in questione devono essere scritti tutto d'un
fiato. Ad esempio:non funziona se "$QUESTO__TAG" viene riescritto
aggiungendo qualche lettera nel mezzo fino a farlo diventare
"$QUESTO_E_UN_TAG" ; ciò perché nel codice xml viene scritto
"$QUESTO_<span>E_UN_</span>TAG" e il mio replace non funziona.
Per ovviare potete scrivere i tag nel notepad e poi incollarli al posto
giusto, col font giusto (a proposito: se colorate mezzo tag e poi
colorate l'altra metà comunque non funziona, per lo stesso motivo..
prima o poi risolverò il problema :-)
Non so se continuerò a svilupparlo perché ho visto che ci sono alternative:
- relatorio è il più famoso, ma non l'ho mai utilizzato:
http://relatorio.readthedocs.io/en/latest/
- secretary ha molte funzionalità interessanti (possibilità di inserire
immagini, formule complesse in campi "input field", inserimenti
condizionali, e altro). Lo proverò nei prossimi giorni, se non ha bug o
limitazioni strane credo che inizierò a utilizzarlo:
https://github.com/christopher-ramirez/secretary
Alessandro