Ich versuche, PDF-Datei aus Byte-Array, die aus der Datenbank kommt zu erstellen. Der Code läuft gut und erstellen Sie die PDF-Datei, aber ich kann nicht öffnen, die Datei zeigt, dass die Datei beschädigt oder beschädigt ist. Hier zeige ich meinen vollständigen Code, bitte zeigen Sie mir, was ich ändern möchte oder welche Art und Weise richtig ist, um diese Art von Code zu erreichen. Vielen Dank.Create PDF mit Byte-Array aus der Datenbank
TestPDF:
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class TestPDF {
public static void main(String[] args) throws FileNotFoundException {
String jdbcClassName="com.ibm.db2.jcc.DB2Driver";
String host="hostname",port="50000",db="dbname",dbuser="user",dbpass="pass";
String url="jdbc:db2://"+host+":"+port+"/"+db;
String user=dbuser;
String password=dbpass;
Connection con = null;
InputStream fetchStream = null;
try{
//Load class into memory
Class.forName(jdbcClassName);
//Establish connection
con = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = con.prepareStatement("select * from tgpoa01.aud_trail_dtl WHERE AUD_TRAIL_REC_ID = '-9223372036798517556'");
ResultSet rs = pstmt.executeQuery();
if(rs.next())
{
fetchStream = rs.getBinaryStream("AUD_TRAIL_MSG_TX");
if(rs.getString("AUD_PRCS_STAGE_CD").equals("CONT")){
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
for (int readNum; (readNum = fetchStream.read(buf)) != -1;) {
bos.write(buf, 0, readNum);
System.out.println("read " + readNum + " bytes,");
}
System.out.println("Byte array is="+bos);
} catch (Exception ex) {
ex.printStackTrace();
}
byte[] bytes = bos.toByteArray();
File someFile = new File("d://Output_File.pdf");
try{
FileOutputStream fos = new FileOutputStream(someFile);
fos.write(bytes);
fos.flush();
fos.close();
}catch(Exception e){
}
}
}
}catch(Exception e){
System.out.println("Exception in getting PDF : "+e);
}
}
}
nie ohne Griff Ausnahme abfangen. füge 'e.printStacktrace()' in den catch-Block ein, um zu sehen, ob eine Ausnahme auftritt – Jens
auch wenn ich printStackTrace() hinzufüge kein Fehler kam –
Du hast 3 'catch'in dort. Einer von ihnen schluckt die "Exception" –