Необходимо создать PDF из bytearray (Java)

Из таблицы 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 не прав, у него есть куча черных строк, идущих сверху вниз.

Я действительно смог создать правильный PDF, написав веб-приложение, используя в основном тот же процесс. Основное различие между веб-приложением и кодом было в этой строке:

response.setContentType("application/pdf");

Итак, я знаю, что массив байтов - это PDF, и это можно сделать, но мой код в byteArrayToFile не будет создавать чистый PDF.

Любые идеи о том, как я могу заставить его работать?

Ответ 1

Отправка вашего вывода через FileWriter искажает его, потому что данные являются байтами, а FileWriter предназначены для записи символов. Все что вам нужно:

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