2016-12-06 38 views
0

我是新來的java,現在我嘗試使用itextpdf庫,代碼是:與mysql建立連接,運行查詢並獲取一個字節對象,現在我需要把這些字節放到在mi pdf文檔的頁面上。 在我的數據庫中的數據是在字節格式的PDF文件,在MySQL的數據類型是「長」看待itextpdf pdf從mysql連接

現在我覺得需要一些像這樣的代碼

byte[] bytes = null; 

Document document = new Document(PageSize.LETTER); 
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("\some\dir\file.pdf")); 
document.open(); 

Class.forName("com.mysql.jdbc.Driver"); 
Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "user", "pass"); 
PreparedStatement st = cn.prepareStatement("SELECT file FROM files"); 
ResultSet rs = st.executeQuery(); 
try { 
while (rs.next()) { 
bytes = rs.getBytes("file"); 

document.add(bytes); 
document.close(); 
cn.close(); 

} catch (Exception e) { 
System.out.println(e); 
} 
} 

回答

0

如果bytes包含文本的需要在PDF中渲染,您需要更換下面一行:

document.add(bytes); 

通過下面的一行:

document.add(new Paragraph(new String(bytes))); 

如果bytes包含特殊字符,您可能會遇到編碼問題,但我們一次只能解決一個問題。

如果bytes是充分和有效的PDF文件,你需要將它們喂到PdfReader對象:

PdfReader reader = new PdfReader(bytes); 

接下來會發生什麼完全取決於你想用PDF文件做什麼。如果您只需要提供PDF,那麼顯然您根本不需要iText。如果您想複製特定頁面或將該文件與其他文件合併,則需要使用PdfCopy。如果您想在文件上加蓋額外的數據(水印,頁碼......),則需要PdfStamper。請閱讀我的書的Chapter 6,以瞭解您可以做什麼,並查看錶6.1以確保您選擇正確的課程。

還有一個更好的主意是使用iText 7而不是iText 5.在這種情況下,您需要閱讀iText 7快速入門教程的Manipulating an existing PDF documentReusing existing PDF documents一章。

+0

**感謝響應**,「新段落」以元數據和打印字符的字符串,即時尋找一些類似到_image class_因爲var _bytes已經包含pdf文件_,所以我需要在文檔頁面 –

+0

上注入這些字節(pdf文件)在這種情況下,您的問題並不清楚。我會更新我的答案。 –

+0

謝謝,實際上現在我正在閱讀本章。 –

0

確定以解決現在是這些代碼的方式,感謝@Bruno

byte[] bytes = null; 

Document document = new Document(PageSize.LETTER); 
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("\some\dir\file.pdf")); 
document.open(); 

Class.forName("com.mysql.jdbc.Driver"); 
Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "user", "pass"); 
PreparedStatement st = cn.prepareStatement("SELECT file FROM files"); 
ResultSet rs = st.executeQuery(); 
try { 
while (rs.next()) { 
bytes = rs.getBytes("file"); 
PdfReader reader = new PdfReader(bytes); 
PdfImportedPage page; 
page = writer.getImportedPage(reader, 1); 
Image image = Image.getInstance(page); 
document.add(image); 
document.newPage(); 

} catch (Exception e) { 
System.out.println(e); 
} 
}