需要从bytearray(Java)创建PDF

从DB2表我有blob,我正在转换为字节数组,所以我可以使用它。 我需要获取字节数组并从中创建一个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

关于如何使其发挥作用的任何想法?

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

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

可以使用java 8中引入的自动分解接口。

 try (OutputStream out = new FileOutputStream("out.pdf")) { out.write(bArray); }