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
。
どうすればうまく動作するか、何かアイデアはありますか?
ベストアンサー1
出力を 経由で送信すると、FileWriter
データがバイトであり、FileWriter
は文字を書き込むためのものであるため、出力が破損します。必要なのは以下のとおりです。
OutputStream out = new FileOutputStream("out.pdf");
out.write(bArray);
out.close();