Responding to myself. I have found the problem, this code below works. I am still interested if anyone knows better way to do this.
Thanks, Luke /* * Test class to get this FOP stuff working */ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import org.apache.fop.apps.Driver; import org.xml.sax.*; /** * This class is intended to demonstrate submitting a FO document in memory * (String) to FOP and write a PDF document to the server. */ public class FopServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { try { //the input File fofile = new File("D:\\applications\\fop\\fop-0.20.5\\test.fo"); //location to write to File indexPDF = new File("D:\\applications\\fop\\fop-0.20.5\\index.pdf"); //create an input stream from the input file InputStream in = new FileInputStream(fofile); //FOP Driver Driver driver = new Driver(); //set the render type driver.setRenderer(Driver.RENDER_PDF); //Setup output stream OutputStream out = new FileOutputStream(indexPDF); out = new BufferedOutputStream(out); //configure the input and the output driver.setInputSource(new InputSource("D:\\applications\\fop\\fop-0.20.5\\test.fo")); driver.setOutputStream(out); //run the driver driver.run(); out.close(); PrintWriter output = response.getWriter(); output.println("<html><head><title>Success</title></head>\n" + "<body><h1>Nice Work!</h1></body></html>"); } catch (Exception ex) { throw new ServletException(ex); } } } ----- Original Message ----- From: "Luke Shannon" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, January 05, 2005 4:58 PM Subject: Need Some Help > Hi All; > > Trying to get a FOP demo off the ground. The idea is an FO document comes in > from memory and is rendered to a PDF on the hard disk of the server. > > Just to get things going I am working with a FO file on the hard drive as > well. I will tackle the contents of this file submitted in memory next. > > Below is my code. > > When I run it in IE it get a Pop up message telling me the "File does not > begin with '%PDF-'". This is weird to me because I am not trying to send it > back through the response object, I don't know why the browser is even > looking at it. > > When I run it in FireFox I get my success message printed, and the document > created. However when I trying and open it I am told there is a Sharing > Violation. The writer was closed before I printed the success statement so I > am not sure where the conflict came from. > > Is there a better, smarter or easier way to do this? Any help would be > appreciated. > > Thanks, > > Luke > > /* > * Test class to get this FOP stuff working > */ > > import java.io.*; > import javax.servlet.*; > import javax.servlet.http.*; > import org.apache.fop.apps.Driver; > import org.xml.sax.*; > > /** > * This class is intended to demonstrate submitting a FO document in memory > * (String) to FOP and write a PDF document to the server. > */ > public class FopServlet extends HttpServlet { > > public void doGet(HttpServletRequest request, HttpServletResponse > response) > throws ServletException { > try { > //the input > File fofile = new > File("D:\\applications\\fop\\fop-0.20.5\\test.fo"); > //location to write to > File indexPDF = new > File("D:\\applications\\fop\\fop-0.20.5\\index.pdf"); > //create an input stream from the input file > InputStream in = new FileInputStream(fofile); > //FOP Driver > Driver driver = new Driver(); > //set the render type > driver.setRenderer(Driver.RENDER_PDF); > //Setup output stream > OutputStream out = new FileOutputStream(indexPDF); > out = new BufferedOutputStream(out); > //configure the input and the output > driver.setInputSource(new > InputSource("D:\\applications\\fop\\fop-0.20.5\\test.fo")); > driver.setOutputStream(out); > //run the driver > driver.run(); > //get the content > String pdfFileContent = out.toString(); > //create the file writer > FileWriter writer = new FileWriter(indexPDF); > //get content into buffer > BufferedReader br = new BufferedReader(new > StringReader(pdfFileContent)); > //inialize a string to hold each line > String str = ""; > //write the file > while ((str = br.readLine()) != null) { > writer.write(str); > } > //close up the writer > writer.close(); > //write the success message > PrintWriter output = response.getWriter(); > output.println("<html><head><title>Success</title></head>\n" > + "<body><h1>Nice Work!</h1></body></html>"); > } catch (Exception ex) { > throw new ServletException(ex); > } > } > } > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]