Calendar

Luglio 2008
L M M G V S D
« Giu    
 123456
78910111213
14151617181920
21222324252627
28293031  

Flickr

Extras

My status

Spot

13 Marzo 2008

Stampare PDF da Java

Dunque, visto che ho perso quasi due giorni a cercare di trovare un modo per stampare documenti PDF da Java, senza passare per Acrobat Reader, mi sono decisa, una volta trovata la soluzione, ad appuntarla qui.
I motivi sono due: in primo luogo perché altrimenti la prossima volta che mi capiterà dovrei ricominciare la ricerca da capo, e poi perché, vista la mole di pagine che ho esplorato, mi sembra un problema comune ad un sacco di gente.
Partiamo dall’inizio: avevo i miei bei PDF generati da Java utilizzando una libreria free, iText, molto semplice e ben fatta, tranne il particolare che non offre facilitazioni per la stampa. Mi trovavo nella condizione di dover mandare in stampa questi PDF appena generati da codice, senza passare tramite Acrobat Reader.
Per qualche oscuro motivo i metodi standard della libreria javax.print non sembrano funzionare correttamente nel caso dei PDF; in particolare il DocFlavour per i PDF, a quanto pare, non è ancora supportato… Avrei potuto lanciare il programma da Java, ma anche questa soluzione non era il massimo, dato che sarebbe stata dipendente dalla macchina su cui verrà utilizzato il programma e dalla versione installata su tale macchina.
Insomma gira e rigira mi sono imbattuta in tantissime librerie, in gran parte commerciali, motivo che mi ha costretto ad escluderle. Alla fine, quando stavo per arrendermi, ho trovato una combinazione di soluzioni che facevano al caso mio!
Prima parte: per mandare in stampa il PDF ho seguito le istruzioni di questo post, che suggerisce l’utilizzo della libreria PDF Renderer. Solo una correzione al codice postato: ByteBuffer diventa MappedByteBuffer.
Poi è sorto il problema dei margini,
dato che in quel modo la stampa veniva fuori con un bordo bianco enorme su tutti i lati. Per risolvere questo difetto bisogna impostare manualmente il formato della pagina (nel mio caso A4) e i margini desiderati, come suggerisce questo topic.
E finalmente è venuta fuori una stampa decente!
Vi posto il codice commentato di un semplice metodo statico che è venuto fuori mettendo insieme tutte queste cose.
Magari può tornare utile a qualcuno!

Archiviato in: Java, Job by Lady Blackice at 1:22 pm
Visita American Pizza Party e scopri gli States!