Libreria di generazione PDF per Java

So che è stato chiesto prima, ma sono ancora indeciso su quale framework di generazione di PDF utilizzare per il mio progetto attuale.

I miei requisiti

  • generazione al volo di documenti PDF (principalmente moduli d’ordine, fatture)
  • Basato su Java
  • facile da impaginare
  • dovrebbe essere open source
  • facile cambiare il layout

Molte persone sembrano usare iText , ma ho alcune preoccupazioni (a parte la licenza modificata) per quanto riguarda la separazione delle preoccupazioni: In un contesto HTML c’è un buon supporto MVC, dove di solito mi atteno a Spring MVC e FreeMarker per separare la logica e il layout. Sono un po ‘preoccupato che con iText finiate per mescolare molto codice e layout.

Sono consapevole che Apopia FOP potrebbe essere una soluzione qui, ma poi di nuovo trovo noioso lavorare con XSLT e leggo che la FOP può essere lenta quando si tratta di un enorme throuput di molti documenti?

Ho preso in considerazione anche JasperReports , ma dalla mia comprensione questo è più adatto per i report contenenti set di dati tabulari piuttosto che singoli documenti come fatture che richiedono molta formattazione del layout?

Qualche idea su questo?

Dare una prova a JasperReports. Utilizzare iReport per creare i file .jrxml. JapserReports può gestire layout complessi. Per le parti del report basate su diverse query è ansible consultare i sottoreport incorporati nel report principale.

Proprio come la soluzione di @Adrian Smith, questo approccio separerà la modifica del layout del report dal data sourcing.

Ho implementato una buona soluzione in cui il mio software crea un file XML “puro” indipendente dal formato, quindi do al mio capo XSD e lo inserisce in Altova StyleVision, dove può creare report di progettazione WYSIWYG sulla base dei dati estratti dall’algoritmo XSD. Quel software produce un XSLT. Quindi il mio programma:

  • Produce l’XML “puro” indipendente dal formato
  • Lo trasforma con l’XSLT, il cui output è XML-FO
  • Utilizzare Apache FOP per convertire XML-FO in PDF

Questa è una soluzione davvero eccezionale, significa che non dovrò più (come programmatore) cambiare il mio codice ogni volta che il mio capo vuole cambiare un colore nel report, il mio compito è semplicemente quello di produrre un XML “puro”.

Aggiornamento: devo anche sottolineare che offro al mio capo l’accesso al nostro repository SVN con Tortoise SVN che è sufficientemente facile da usare da poterlo utilizzare senza errori. Quindi può controllare i file XSLT direttamente in SVN ed eseguire la build / deploy senza nemmeno dover interrompere il mio lavoro. Ovviamente il stream di lavoro funziona solo con persone sufficientemente esatte da non commettere errori, ma in questo caso funziona bene per noi.

Docmosis ti consente di creare modelli in Word o in OpenOffice writer, separando le preoccupazioni in modo appropriato e il layout è quindi negli strumenti più familiari.

In base alla mia esperienza, suggerirei di prendere in considerazione le seguenti librerie PDF Java per la creazione di report PDF,

  1. DynamicReports
  2. Apache PDF Box
  3. iText PDF
  4. Pagliaccio PDF

Per le tue esigenze, penso che DynamicReports sarebbe la scelta giusta. Ho utilizzato i report dinamici degli ultimi 3 anni per tutti i miei requisiti di report PDF. Con una quantità di codice molto inferiore, puoi facilmente creare un PDF veramente dinamico. Dynamicreports è un wrapper su Jasper Report. Quindi, internamente fa uso del report di Jasper.

Ho usato JODConverter per un po ‘e mi piace davvero.

Quello che facciamo è utilizzare JODReports per generare documenti dinamici di OpenOffice.org (che utilizza internamente FreeMarker). Quindi convertiamo questi documenti in documenti PDF usando JODConverter.

Sembra un sacco di lavoro, ma in realtà non lo è.

Una possibilità è

  • per creare i tuoi documenti in formato PostScript e poi
  • convertirlo in pdf usando ghostscript (ps2pdf)