2009-11-22 27 views
10

De una tabla de DB2 tengo blob que estoy convirtiendo a una matriz de bytes para que pueda trabajar con ella. Necesito tomar la matriz de bytes y crear una PDF.Necesito crear PDF desde bytearray (Java)

Esto es lo que tengo:

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()); 
    } 
} 

Pero el PDF que crea no es correcto, tiene un montón de líneas negras que van de arriba a abajo en él.

De hecho, pude crear el PDF correcto escribiendo una aplicación web utilizando esencialmente el mismo proceso. La principal diferencia entre la aplicación web y el código fue sobre esta línea:

response.setContentType("application/pdf"); 

así que sé la matriz de bytes es un PDF y que se puede hacer, pero mi código en byteArrayToFile no creará una limpieza PDF.

¿Alguna idea sobre cómo puedo hacer que funcione?

+0

Hola @AEIOU, por favor, puede compartir el código y también estoy enfrentando el problema por mucho tiempo. No puedo lograrlo –

+0

También estoy enfrentando el mismo problema. ¿Puedes decirme cómo resuelves? –

Respuesta

34

Enviar su salida a través de FileWriter lo está corrompiendo porque los datos son bytes, y FileWriter s son para escribir caracteres. Todo lo que necesita es:

OutputStream out = new FileOutputStream("out.pdf"); 
out.write(bArray); 
out.close(); 
+0

Gracias, eso fue todo. – AEIOU

+5

Luego marque esto como la respuesta aceptada haciendo clic en la marca de verificación. :) – bcat

+0

Hola, Jason, ¿puedes compartir el código o compartir un enlace conmigo también estoy enfrentando el problema? Gracias –