You could set up an error page in web.xml to report the exception instead of catching it.
Jon
Lina Mar�a Rojas Barahona wrote:
Hello:
I am trying to write a PDF using a servlet in Apache Tomcat/5.0.27 , and It doesn�t work. I just call the servlet in an html page, I never use a response.getWriter, so I dont undestand why I can not use response.getOutputStream in the servlet,
---- SmartJPrint_PDFServlet1---
package demo.activetree.print.webapps;
import com.activetree.print.*; import com.activetree.utils.AtStringUtil; import com.activetree.resource.AtImageList;
import java.io.*; import java.awt.*; import javax.servlet.*; import javax.servlet.http.*; import javax.swing.table.TableModel; import javax.swing.table.DefaultTableModel; import javax.swing.*;
public class SmartJPrint_PDFServlet1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { //TODO-1: Use your own license key here SmartJPrint.setLicenseKey("8FE6-D08A-68A5-191A");
//Set header first response.setHeader("Cache-Control", "max-age=30"); response.setContentType("application/pdf"); //TODO-3: Use "inline" for directly opening in the browser window. //String inline = "inline; filename=\"smartjprint_" + System.currentTimeMillis() + ".pdf\""; //response.setHeader("Content-disposition", inline); //TODO-2: Use "attachment" for doing a SaveAs... in the browser. String attachment = "attachment; filename=\"smartjprint_" + System.currentTimeMillis() + ".pdf\""; response.setHeader("Content-disposition", attachment);
//Prepare the data. AtBook book = new AtBook(); Color fgColor = SystemColor.black; Color bgColor = SystemColor.white; //Produce lines of Styled/Plain text, icons, 2D line data. produceRandomData(book); //Table-1. TableModel tabularData = createSampleTabularData(); Font titleFont = new Font("Arial", Font.BOLD, 20); book.append(new AtStringElement("\nPermanent Employees\n", titleFont, AtPrintConstants.GENERAL_HEADER_FG1)); Font normalBoldFont = new Font("Arial", Font.BOLD, 12); book.append(new AtStringElement("Table-1\n", normalBoldFont)); Font font = new Font("Arial", Font.PLAIN, 12); book.append(tabularData, font, fgColor, bgColor); //Page Break - to put things next in a new page. book.append(new AtStringElement("\nPage Break (applied next to this line)\n", titleFont, AtPrintConstants.GENERAL_HEADER_FG1)); book.append(AtElement.PAGE_BREAK); //show in next page. //Table-2. tabularData = createSampleTabularData(); book.append(new AtStringElement("\nContract Employees\n", titleFont, AtPrintConstants.GENERAL_HEADER_FG1)); book.append(new AtStringElement("Table-2\n", normalBoldFont)); book.append(tabularData, font, fgColor, bgColor);
//We are done with our data, now write to the client. try { ServletOutputStream outStream = response.getOutputStream(); AtPdfPrinter pdfPrinter = new AtPdfPrinter(); pdfPrinter.print(book, outStream); outStream.flush(); outStream.close(); }catch(Throwable t) { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.write("Got exception when doing a AtGenericPrinter.print(book, pdfStream) <p>"); out.write(AtStringUtil.getStackTrace(t)); out.write("</p>"); out.close(); } }
public TableModel createSampleTabularData() { String[] cols = {"Employee Name", "SS No.", "Date Of Birth", "Position", "Salary"}; String[][] data = new String[5][cols.length];
//Create same data for the table. String name = "Employee Name - "; String ssn = "SS No - "; String dob = "Birth Date - "; String position = "Position - "; String annualSalary = "Employee Salary - "; for (int row=0; row < data.length; row++) { data[row][0] = name + row; data[row][1] = ssn + row; data[row][2] = dob + row; data[row][3] = position + row; data[row][4] = annualSalary + row; }
DefaultTableModel tableModel = new DefaultTableModel(data, cols); return tableModel; }
public void produceRandomData(AtBook book) { Font titleFont = new Font("Arial", Font.BOLD, 20); Color titleColor = AtPrintConstants.GENERAL_HEADER_FG1; ImageIcon bullet = AtImageList.IMAGE_LIST.RIGHT_ARROW_16;
AtStringElement note = new AtStringElement("Note: ", new Font("Helvitica", 3, 12)); //3 == BOLD + ITALIC book.write(note); book.write(new AtStringElement("This PDF document is generated using Smart JPrint (AtGenericPrinter class).\n", new Font("Helvetica", Font.ITALIC, 12))); book.write(new AtLineElement(200, 1, AtLineElement.TOP, true));
AtStringElement elm = new AtStringElement("Generate PDF Documents using \"Smart JPrint\"\n\n", titleFont); elm.setForeground(titleColor); book.write(elm); book.write(bullet); book.write("Smart JPrint is 100% pure Java APIs for (i) PDF generation, " + "(ii) Automatically or Manually Printing, (iii) Multipage TIFF for FAX sending/viewing, " + "(iv) JPEG/PNG image creation for each output pages.\n\n"); elm = new AtStringElement("Add Plain/Styled text, icons/images, 2D graphics, tabular data using " + "Java's TableModel to automatically format and produce the output."); elm.setFont(new Font("Helvetica", Font.PLAIN, 12)); book.write(elm); book.write("\n\n"); book.write(bullet); elm = new AtStringElement("Produce output from Java Swing components in a matter of " + "minute with 2 lines of code. Smart JPrint knows how to format " + "the contents in order to generate the output automatically."); elm.setFont(new Font("Helvetica", Font.PLAIN, 12)); book.write(elm); book.write("\n\n");
book.write(new AtStringElement("How to page break, TAB, Strike through?", titleFont, titleColor)); book.write("\nA page break can be added using the AtPageBreak object or by " + "using the PAGE_BREAK constant defined in the AtElement class.\n"); elm = new AtStringElement("\nThis line is an example of Strike through text.\n"); elm.setStrikeThrough(true); elm.setStrikeThroughColor(SystemColor.darkGray); book.append(elm); elm = new AtStringElement("This line has a \tTAB character\n"); book.append(elm); } } ----------------------------------------------------- ERROR
2004-11-02 14:54:18 StandardWrapperValve[PDFServlet1]: Servlet.service() para servlet PDFServlet1 lanz� excepci�n java.lang.IllegalStateException: getOutputStream() ya ha sido llamado para esta respuesta at org.apache.coyote.tomcat5.CoyoteResponse.getWriter(CoyoteResponse.java:599) at org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(CoyoteResponseFacade.java:163) at demo.activetree.print.webapps.SmartJPrint_PDFServlet1.doGet(SmartJPrint_PDFServlet1.java:67) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Unknown Source)
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
