2016-12-06 30 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); 
} 
}