sudo gem install pdf-writer
successivamente si installa il plugin in questione
ruby script/plugin install svn://rubyforge.org//var/svn/railspdfplugin/railspdf/
Infine basta creare l’azione a cui si vuole associare la generazione del pdf, contenente le variabili con i dati che poi vogliamo pubblicare nella view
... dal controller ...
def getpdf
@rails_pdf_name = "Hello.pdf"
@content = "This is dynamic content!!!"
end
nella directory “view” del controller in questione è necessario creare il file getpdf.rpdf con, per esempio, il seguente contenuto:
pdf.select_font "Times-Roman"
pdf.text @content, :font_size => 72, :justification => :center
Questa soluzione è molto efficace se si vogliono creare pdf semplici in poco tempo, senza grandi esigenze di impaginazione o presentazione dei contenuti. Una guida completa con tutte le funzionalità di pdf-writer si trova qui
Un sistema dalle potenzialità decisamente più ricche e sofisticate è JasperReports. L’integrazione con il framework rails è, tutto sommato, veloce e di facile comprensione. Una guida dettagliata è reperibile qui
Il funzionamento può essere schematizzato come segue:Esiste anche la possibilità di passare i dati in formato xml ad un server che poi si occuperà di generare il pdf. Questo velocizza di molto la procedura poiché non è più necessario richiamare la jvm per ogni generazione. Per maggiori informazioni su JasperServer.
Personalmente ho riscontrato tempi accettabili anche per la soluzione che utilizza la jvm, infatti, nei test fatti, il sistema impiega circa 3 secondi per produrre il pdf.
Gli aspetti che ho trovato più interessanti di questa soluzione, rispetto alla scelta iniziale di PDF::Writer, sono: