2009-11-22 30 views
10

Từ một bảng DB2 Tôi đã có blob mà tôi đang chuyển sang mảng byte để tôi có thể làm việc với nó. Tôi cần phải lấy mảng byte và tạo ra một PDF ra khỏi nó.Cần tạo PDF từ bytearray (Java)

Đây là những gì tôi có:

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

Nhưng PDF nó tạo ra là không đúng, nó có một loạt các đường màu đen chạy từ trên xuống dưới vào nó.

Tôi thực sự có thể tạo đúng PDF bằng cách viết một ứng dụng web bằng cách sử dụng cơ bản cùng một quy trình. Sự khác biệt chính giữa các ứng dụng web và mã về là dòng này:

response.setContentType("application/pdf"); 

Vì vậy, tôi biết các mảng byte là một PDF và nó có thể được thực hiện, nhưng mã của tôi trong byteArrayToFile sẽ không tạo ra một sạch PDF.

Bất kỳ ý tưởng nào về cách tôi có thể làm cho nó hoạt động?

+0

Xin chào @AEIOU bạn có thể vui lòng chia sẻ mã của tôi cũng phải đối mặt với vấn đề trong một thời gian dài không. Tôi không thể đạt được nó. –

+0

Tôi cũng phải đối mặt với cùng một vấn đề. Bạn có thể vui lòng cho tôi biết cách bạn giải quyết. –

Trả lời

34

Gửi đầu ra của bạn thông qua một FileWriter đang làm hỏng nó vì dữ liệu là byte và FileWriter s dùng để viết ký tự. Tất cả những gì bạn cần là:

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

Cảm ơn, điều đó đã xảy ra. – AEIOU

+5

Sau đó đánh dấu phần này làm câu trả lời được chấp nhận bằng cách nhấp vào dấu kiểm. :) – bcat

+0

Hi Jason bạn có thể vui lòng chia sẻ cho tôi mã hoặc chia sẻ cho tôi một số liên kết cũng đang đối mặt với vấn đề. Cảm ơn –