2009-11-22 71 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