itextpdf来自mysql连接的pdf

时间:2016-12-06 07:49:19

标签: java mysql arrays pdf itext

我是java的新手,现在我尝试使用itextpdf库,代码是:与mysql建立连接,运行查询并获取一个字节对象,现在我需要把这些字节放在mi上的页面上pdf文件。 我的数据库上的数据是字节格式的pdf文件,在mysql数据类型上是“long blob”

现在我认为需要一些像这些代码

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);
}
}

2 个答案:

答案 0 :(得分: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章节。

答案 1 :(得分:0)

确定现在解决这些代码的方法,谢谢@Bruno

Stack: Error: Invalid target for ServerObject, or target not in ObjectManager
at Object.getRemoteObject (/rwt-resources/310/rap-client.js:63649:13)
at Object.getRemoteObject (/rwt-resources/310/rap-client.js:62395:45)
at Object._sendHorizontalScrolled (/rwt-resources/310/rap-client.js:52264:14)
at Object.dispatchSimpleEvent (/rwt-resources/310/rap-client.js:3831:27)
at Object.sendImmediate (/rwt-resources/310/rap-client.js:62370:14)
at Object. (/rwt-resources/310/rap-client.js:62296:12)
at Object._dispatchEvent (/rwt-resources/310/rap-client.js:3867:18)
at Object.dispatchEvent (/rwt-resources/310/rap-client.js:3808:12)
at Object._oninterval (/rwt-resources/310/rap-client.js:4481:16)
at /rwt-resources/310/rap-client.js:624:17