的PDF文件我是新來org.xhtmlrenderer.pdf.ITextRenderer
和有這樣的問題:xhtmlrenderer創建長度爲0
的PDF文檔,我的測試Servlet,流到我的下載文件夾,其實都是空文件。
相關方法streamAndDeleteTheClob
如下所示。
第一次嘗試塊絕對不是問題。
服務器在第二個嘗試塊中花費大量時間。拋出異常。
任何人都可以提出解決這個問題或調試它的好方法嗎?
任何人都可以點我基本上類似的代碼,真的有用嗎?
任何幫助將不勝感激。
res.setContentType("application/pdf");
ServletOutputStream out = res.getOutputStream();
...
private boolean streamAndDeleteTheClob(int pageid,
Connection con,
ServletOutputStream out) throws IOException, ServletException {
Statement statement;
Clob htmlpage;
StringBuffer pdfbuf = new StringBuffer();
final String pageToSendQuery = "SELECT text FROM page WHERE pageid = " + pageid;
// create xhtml file as a CLOB (Oracle large character object) and stream it into StringBuffer pdfbuf
try { // definitely no problem in this block
statement = con.createStatement();
resultSet = statement.executeQuery(pageToSendQuery);
if (resultSet.next()) {
htmlpage = resultSet.getClob(1);
} else {
return true;
}
final Reader in = htmlpage.getCharacterStream();
final char[] buffer = new char[4096];
while ((in.read(buffer)) != -1) {
pdfbuf.append(buffer);
}
} catch (Exception ex) {
out.println("buffering CLOB failed: " + ex);
}
// create pdf from StringBuffer
try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(pdfbuf.toString())));
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc, null);
renderer.layout();
renderer.createPDF(out);
out.close();
} catch (Exception ex) {
out.println("streaming of pdf failed: " + ex);
}
deleteClob(con, pageid);
return false;
}
謝謝,這正是問題的原因。我自己陷入困境,用Google搜索答案,一切正常。 – 2012-03-07 12:47:27