convert jsp to pdf
807580Dec 13 2009 — edited Dec 14 2009I wanted to convert jsp or html to pdf. just by clicking the button it will generate the pdf file
Here is my code:
<%@ page import= "com.lowagie.text.*"%>
<%@ page import= "java.io.FileOutputStream"%>
<%@ page import= "com.lowagie.text.pdf.PdfWriter"%>
<%@ page import= "java.net.URL"%>
<%@ page import= "java.net.URLConnection"%>
<%@ page import= "java.io.OutputStream"%>
<%@ page import= "java.io.OutputStreamWriter"%>
<%@ page import= "java.io.File"%>
<%@ page import= "com.lowagie.text.html.HtmlParser"%>
<%try{String paramStr = "func=getReport&print=true&reportID=1&selectedIDs=315,158";
String lengthString = String.valueOf(paramStr.length());
//String ur= "C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/SrtsWeb/dean/researchTypeForm/0_ar_Form.jsp";
URL url = new URL("http://localhost/pdf/");
URLConnection con = url.openConnection();
con.setUseCaches(false);
con.setDefaultUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
con.setRequestProperty("Content-Length", lengthString);
OutputStream os = con.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
osw.write(paramStr);
osw.flush();
osw.close();
Document document = new Document();
document.setPageSize(PageSize.A4.rotate());
//FileOutputStream out1=response.getOutputStream();
OutputStream out1 = response.getOutputStream();
//String path ="0_ar_Form.jsp";
response.setContentType("application/pdf");
response.addHeader("Content-Type", "application/pdf");
response.addHeader("Content-Disposition", "attachment; filename=\"unnamed.pdf\"");
//response.addHeader("Content-Length", "" + cachedURL.length());
try {
PdfWriter writer = PdfWriter.getInstance(document,out1);
//document.add(writer);
HtmlParser.parse(document, con.getInputStream());
}
catch (Exception e) {
System.out.println("error="+e);
e.printStackTrace();
}
}
catch (Throwable t) {
System.out.println("error="+t);
t.printStackTrace();
}
%>
================================================================
but it doesn't work
exception
org.apache.jasper.JasperException: getOutputStream() has already been called for this response
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:367)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
root cause
java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.catalina.connector.Response.getWriter(Response.java:607)
org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:196)
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:179)
org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:116)
org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:76)
org.apache.jsp.JSP_jsp._jspService(JSP_jsp.java:131)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
so what is the problem?