2013-10-31 19 views
9

Sto provando a creare un PDF dal contenuto HTML.Come creare un file PDF da HTML usando PDFBox?

public byte[] generatePdf(final XhtmlPDFGenerationRequest request) { 

    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    PDDocument document = new PDDocument(); 
    InputStream stream = new ByteArrayInputStream(request.getContent() 
      .getBytes()); 

    PDStream pdstream = new PDStream(document, stream); 
    document.save(baos); 
    document.close(); 
    return this.toByteArray(baos); 

} 

Quando prendo questo byte[] e salvare in un file, il file è vuoto. Sto usando PDStream per incorporare il flusso di input nel documento

Dal http://pdfbox.apache.org/apidocs/

public PDStream(PDDocument doc, 
       InputStream str) 
     throws IOException 

leggere tutti i dati dal flusso di input e lo incorpora nel documento, questo chiude l'InputStream.

risposta

12

Stavo cercando un renderer HTML in PDF. Stavamo usando iText. Stavo cercando di fare lo stesso con Apache PDFBox. Ma sembra che non possa essere fatto.

Posso utilizzare Apache FOP o continuare a utilizzare iText.

Ecco la soluzione iText se qualcuno è interessato: Java Render XML Document as PDF

Se siete alla ricerca di una soluzione per la fusione con scatola PDF, qui è Merge pdf files using Apapche pdf box

+3

Sto cercando un'alternativa a iText, le sue regole di licenza non funzionano bene con i progetti closed source – Hoffmann

+0

@Hoffman La soluzione pdf di apache nel link sopra non ha funzionato per te? – vsingh

+1

l'apache pdfbox non supporta la conversione da HTML a PDF. Recentemente c'è stata una discussione su slashdot sulle librerie di java pdf, ho scoperto su Flying Saucer che usa iText v2 che è LGPL, non l'ho ancora testato, ma lascerò la discussione qui per riferimento futuro: http: // ask .slashdot.org/comments.pl? sid = 5505091 & cid = 47625223 – Hoffmann