Export to PDF Problem

Hi,
i’m trying to use export to PDF/Excel with your java source, but i have following errors:

java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.catalina.connector.Response.getWriter(Response.java:604)
org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:186)
org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:117)
org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:76)
org.apache.jsp.pages.ajax.pdf_005ffeed_jsp._jspService(pdf_005ffeed_jsp.java:88)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

Have you any idea what is wrong ?
Thanks in advance.

Hi.
Do both libs (export to pdf and excel) cause this exception?
Have you modified sources?

It looks like you are sending some content before headers are sent. Check if you are using getOutputStream() or getWriter() before calling export tool.

Hi,

i use response.getWriter() as follows to generate grid-xml-data before i use export function.

private void echoAsXML(final HttpServletResponse response, final String xmldata) {
response.setContentType(“text/xml”);
final PrintWriter out = response.getWriter();
out.print("<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>");
out.print(xmldata);
}

I can open my excel file although i have the same issue by export to Excel and Pdf.

Regards,
incognito

For which reasons you are writing xml in browser? Are you sure you need it?
You mustn’t output any data before excel or pdf generation. To produce excel or pdf file Java send headers in response stream. Response should be sent before any another data. But you’ve already sent data using echoAsXML method.

Hi,

i use echoAsXML Method to generate xml-stream for dhtmlxGrid. I use mygrid.loadXML(…) in javascript. How can i combine both functions (first a xml-stream for Grid and then export to pdf/excel)?

Thanks in advance,

It would be useful to look on your code. Can you provide it?

Hi,

by grid initialization, i use this Method:

mygrid.loadXML("/ajax/grid_xml_feed.jsp?action=get_data&objId="+objId);

by export to pdf i use following command:

function getPDF(){
mygrid.toPDF("/ajax/grid_xml_feed.jsp?action=getPDF");
}

function getExcel(){
mygrid.toPDF("/ajax/grid_xml_feed.jsp?action=getExcel");
}

I use ‘grid_xml_feed.jsp’ file as following :

<%@ page language=“java” contentType=“text/xml; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1” %>
<jsp:useBean id=“Tasks”
class=“grid.GridBean”
scope=“session”>
</jsp:useBean>
<jsp:useBean id=“PDF”
class=“grid.com.dhtmlx.xml2pdf.PDFGenerator”>
</jsp:useBean>
<jsp:useBean id=“EXCEL”
class=“grid.com.dhtmlx.xml2excel.ExcelGenerator”>
</jsp:useBean>
<%
String objId = (String) request.getParameter(“objId”);
String action = (String) request.getParameter(“action”);
if (action.equals(“get_data”)){
Tasks.getGridInitialState(response, Integer.parseInt(objId));
}
if (action.equals(“getPDF”)){
PDF.doPost(request,response);
}
if (action.equals(“getEXCEL”)){
EXCEL.doPost(request,response);
}
%>

and in ‘grid.GridBean.java’:
public void getGridInitialState(final HttpServletResponse response, final int menuObjId) {
String out = … // xml-stream
echoAsXML(response, out);
}

private void echoAsXML(final HttpServletResponse response, final String data){
response.setContentType(“text/xml”);
final PrintWriter out = response.getWriter();
out.print("<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>");
out.print(data);
}

Thanks in advance,
incognito

Hi.
Try to use online version. More information here:
viewtopic.php?f=23&t=18333