Reputation: 1753
<%
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();}
%>
throws an error
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)
I have used the same xmlworker previously but never had any errors.even hellowworld isnt displayed.please help
Upvotes: 6
Views: 53444
Reputation: 26
I dont know why dislike was on version upgrade answer, but realy look -> document created in case of
worker.parseXHtml(writer, document, new StringReader("<p>helloworld</p>"));
with 2 libraries
itextsharp.xmlworker
iTextSharp
In this case I have firlst library very old and same error. So I could suggest if some one will face with the error in the future to compare both version of app. Currently work
iTextSharp 5 5 13 4
itextsharp.xmlworker 5 5 13 4
Upvotes: 0
Reputation: 381
document.add(new Chunk(""));
worked for me after document.open();
when the data is not there in the report text.
Upvotes: -1
Reputation: 39
I know it's a bit late to this answer, but in my case just upgraded iTextSharp to v. 5.5 from 5.0 and started to work correctly.
Upvotes: 0
Reputation: 28917
Other answers are good. This is an alternative.
In general, to prevent this error which often occurs when the document contains no meaningful data for content, even despite document.open()
and document.newPage()
having been called, and even after stamping other pages into that document, you can add an empty chunk when the document is opened to ensure the library never considers it empty. e.g.
document.open();
document.add(new Chunk("")); // << this will do the trick.
Upvotes: 35
Reputation: 4871
XMLWorkerHelper.parseXHtml()
expects (X)HTML or (X)HTML snippets. Try this:
worker.parseXHtml(writer, document, new StringReader("<p>helloworld</p>"));
Upvotes: 7
Reputation: 544
Try to new a page just like document.newPage()
before you write something to document, hope that helps.
Upvotes: 3