2009-11-22 31 views
10

从DB2表中我得到了blob,我将它转换为一个字节数组,以便我可以使用它。我需要采取字节数组并创建一个PDF需要从bytearray(Java)创建PDF

这是我有:

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

但它创造的PDF是不对的,它有一堆的运行从顶部到它底部的黑线。

我实际上可以通过使用基本相同的过程编写Web应用程序来创建正确的PDF。 Web应用程序和有关的代码之间的主要区别是这条线:

response.setContentType("application/pdf"); 

所以我知道的字节数组是一个PDF并且是可以做到的,但我在byteArrayToFile代码不会创建一个干净PDF

关于如何让它工作的任何想法?

+0

嗨@AEIOU可以请你分享我的代码也面临问题很长一段时间。我无法实现它。 – 2016-06-03 05:44:54

+0

我也面临同样的问题。你能告诉我你是如何解决的。 – 2016-06-13 13:29:09

回答

34

通过FileWriter发送输出会损坏它,因为数据是字节,而FileWriter是用于写入字符的。所有你需要的是:

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

谢谢,就是这样。 – AEIOU 2009-11-22 05:48:06

+5

然后通过单击复选标记将其标记为接受的答案。 :) – bcat 2009-11-22 05:51:26

+0

嗨贾森你可以请分享我的代码或分享我一些链接也面临的问题。谢谢 – 2016-06-03 05:45:58