Hi, I am currently working on a project which convert binary data in tiff format into PDF format. I refer to the example(FopServlet.java) and always got error "Error 500: Content is not allowed in prolog. ". I could not figure out what the problem is. I was stuch by this. Please help me.
Here is the peice of codes. Would you please take a look and give me a suggestion. I will greatly appreciate it. BTW, the binary data format from database which will be displayed on the web is in tiff format, not a formatting object. If it can be displayed directly on the web in pdf format, it is not necessary to convert it into pdf first. thanks, Jerry *********************************************************** import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.util.zip.*; import java.sql.*; import java.text.*; import java.net.*; import java.util.Properties; import java.awt.image.*; import com.sun.media.jai.codec.*; import com.sun.media.jai.*; import javax.media.jai.JAI; import javax.media.jai.*; import javax.media.jai.RenderedOp; import javax.media.jai.PlanarImage; import javax.media.jai.OpImage; import javax.media.jai.util.*; import javax.media.jai.remote.SerializableRenderedImage; import java.awt.image.renderable.ParameterBlock; import java.lang.Object; import java.awt.Image; import javax.swing.ImageIcon; import java.io.ByteArrayOutputStream.*; import com.csi.utils.StringUtils; import com.csi.daserver.global.*; import com.csi.dcserver.objects.DCSession; import com.csi.dcserver.exceptions.*; import com.csi.daserver.utils.MsgPool; import com.csi.dcserver.crypto.Crypto; import org.xml.sax.InputSource; import org.apache.fop.apps.Driver; import org.apache.fop.apps.XSLTInputHandler; import org.apache.fop.messaging.MessageHandler; import org.apache.avalon.framework.logger.ConsoleLogger; import org.apache.avalon.framework.logger.Logger; public class ImageDownload extends HttpServlet { Logger log = null; .... public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ... //got the binary data in tiff format from database and put the binary data in byte array bt Byte[] bt = (byte[]) v.elementAt(0); sendPDFBinaryResponse(resp, req, bt, "application/pdf"); return; } } // private void sendPDFBinaryResponse(HttpServletResponse res,HttpServletRequest req, byte[] bt,StringsContTypeHeader) throws IOException, ServletException{ if(sContTypeHeader=="application/pdf"){ if (log == null) { log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN); MessageHandler.setScreenLogger(log); } renderFO(new InputSource(new ByteArrayInputStream(bt)), res); } } public void renderFO(InputSource foFile, HttpServletResponse response) throws ServletException { try { ByteArrayOutputStream out = new ByteArrayOutputStream(); response.setContentType("application/pdf"); Driver driver = new Driver(foFile, out); driver.setLogger(log); driver.setRenderer(Driver.RENDER_PDF); driver.run(); byte[] content = out.toByteArray(); response.setContentLength(content.length); response.getOutputStream().write(content); response.getOutputStream().flush(); } catch (Exception ex) { throw new ServletException(ex); } } ... } **************** This is the exact error I got: org.xml.sax.SAXParseException: Content is not allowed in prolog. at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1172) at org.apache.fop.apps.Driver.render(Driver.java:498) at org.apache.fop.apps.Driver.run(Driver.java:565) __________________________________ Do you Yahoo!? Yahoo! Small Business $15K Web Design Giveaway http://promotions.yahoo.com/design_giveaway/