需要从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); }