2009-11-22 12 views
10

Da una tabella DB2 ho blob che sto convertendo in un array di byte in modo che possa lavorare con esso. Ho bisogno di prendere la matrice di byte e creare un PDF di esso.È necessario creare PDF da bytearray (Java)

Questo è quello che ho:

static void byteArrayToFile(byte[] bArray) { 
    try { 
     // Create file 
     FileWriter fstream = new FileWriter("out.pdf"); 
     BufferedWriter out = new BufferedWriter(fstream); 
     for (Byte b: bArray) { 
      out.write(b); 
     } 
     out.close(); 
    } catch (Exception e) { 
     System.err.println("Error: " + e.getMessage()); 
    } 
} 

Ma la PDF crea non è giusto, ha un sacco di righe nere da cima a fondo su di esso.

In realtà ero in grado di creare il PDF corretto scrivendo un'applicazione web utilizzando essenzialmente la stessa procedura. La differenza principale tra l'applicazione web e il codice su questa linea era:

response.setContentType("application/pdf"); 

quindi so l'array di byte è un PDF e si può fare, ma il mio codice in byteArrayToFile non creerà un ambiente pulito PDF.

Qualche idea su come posso farlo funzionare?

+0

Ciao @AEIOU puoi condividere il codice con me anche affrontando il problema da molto tempo. Non riesco a raggiungerlo. –

+0

Sto anche affrontando lo stesso problema. Puoi dirmi come risolvi. –

risposta

34

L'invio dell'output tramite FileWriter lo sta corrompendo perché i dati sono byte e FileWriter s sono per la scrittura di caratteri. Tutto ciò di cui hai bisogno è:

+0

Grazie, l'ha fatto. – AEIOU

+5

Quindi contrassegnare come risposta accettata facendo clic sul segno di spunta. :) – bcat

+0

Ciao Jason, per favore, puoi condividere il codice o condividermi un link. Sto anche affrontando il problema. Grazie –