<%
OutputStream output=response.getOutputStream();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=details.pdf");
try{
Document document = new Document();
PdfWriter writer=PdfWriter.getInstance(document, output);
document.open();
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/a", "root", "root");
Statement st=con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
List arrlist = new ArrayList();
ResultSet rs=st.executeQuery("Select * from user_start1");
while(rs.next()){
arrlist.add(rs.getString("data"));
}
for(int i=0;i<12;i++){
String str =(String) arrlist.get(i);
System.out.println(str);
worker.parseXHtml(writer, document, new StringReader("helloworld"));
}
document.close();
writer.flush();
writer.close();
output.close();
}catch(IOException e){e.printStackTrace();}
%>
抛出错误
SEVERE: Servlet.service() for servlet [jsp] in context with path [/chieflegis] threw exception [ExceptionConverter: java.io.IOException: The document has no pages.] with root cause
java.io.IOException: The document has no pages.
at com.itextpdf.text.pdf.PdfPages.writePageTree(PdfPages.java:113)
at com.itextpdf.text.pdf.PdfWriter.close(PdfWriter.java:1217)
at com.itextpdf.text.pdf.PdfDocument.close(PdfDocument.java:807)
at com.itextpdf.text.Document.close(Document.java:416)
at org.apache.jsp.print_jsp._jspService(print_jsp.java:112)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
我之前使用过相同的xmlworker但从未出现任何错误。甚至没有显示hellowworld.please help
答案 0 :(得分:23)
其他答案都很好。这是另一种选择。
通常,为了防止在文档不包含有意义的内容数据时经常发生的错误,即使已经调用了document.open()
和document.newPage()
,甚至在将其他页面标记到该文档之后,您可以在打开文档时添加空块,以确保库永远不会将其视为空。例如
document.open();
document.add(new Chunk("")); // << this will do the trick.
答案 1 :(得分:6)
XMLWorkerHelper.parseXHtml()
需要(X)HTML或(X)HTML代码段。试试这个:
worker.parseXHtml(writer, document, new StringReader("<p>helloworld</p>"));
答案 2 :(得分:0)
在您撰写文档之前,尝试新建一个与document.newPage()
类似的页面,希望有所帮助。
答案 3 :(得分:0)
我知道这个答案有点晚了,但是就我而言,我只是将iTextSharp从5.0升级到了5.5版,并开始正常工作。
答案 4 :(得分:0)
document.add(new Chunk(""));
在 document.open();
之后当数据不在报告文本中时为我工作。