Umh,
la cosa più importante a mio avviso, è che serve una procedura equilibrata per ottenere un risultato di qualità. Consiglio quindi soluzioni semplici, ma funzionanti, da perfezionare nel tempo, piuttosto che architetture complesse completamente automatiche ma troppo lunghe da realizzare.
Dunque tu hai un problema di reporting, ed intendi usare LaTeX.
Ecco come immaginerei di fare:
1- programmare in un linguaggio di scripting interpretato
2- spostamento della logica compositiva nel sorgente LaTeX e non nello script.
In definitiva proverei a scrivere uno script in Lua od in Python, che effettuino la query verso il database e creino uno o più sorgenti LaTeX, eseguendone poi la compilazione.
Io non conosco PHP ma se ti trovi meglio con questo linguaggio puoi usarlo.
Scegliere Lua potrebbe essere ancor più utile se si pensa di utilizzare lualatex. Con il nuovo motore infatti sembra possibile consultare il database relazionare direttamente da un sorgente LaTeX.
La scaletta di lavoro:
a- preparare un sorgente LaTeX che produca una scheda con dati statici, base futura di una classe di documento specifica;
b- script che esegua la query sul db;
c- script che crea il file sorgente e lo compila con pdflatex;
d- assemblaggio del codice per lo script definitivo;
Un po’ di codice Lua commentato che crea sorgenti LaTeX e li compila lo puoi leggere sul mio blog (per esempio in questo post http://robitex.wordpress.com/2010/12/13/reinventare-inventario/ ).
Ecco il codice Lua di una funzione che prende il nome del file e lo compila con LaTeX (molto semplice non credi?) e funziona in Windows e Linux e Mac.
`
local function makepdf( fn )
print(“Start pdfLaTeX run…”)
os.execute(“pdflatex ” .. fn)
print(“End”)
end
`
Recentemente mi sono interessato ad alcuni moduli Python che prevedono la costruzione di file a partire da template a campi variabili, ma prima è necessario fare esperienza con una soluzione più manuale e semplice, prima di passare ad uno sviluppo definitivo. Meglio una soluzione rabberciata ma funzionante che un codice portentoso ma inconcludente!
Ciao