On Thu, 2004-04-01 at 14:30, Jerry wrote:
> 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.

It is not clear from your example whether your data is usable by
FOP.

FOP is designed to process XML files, specifically XSL-FO or
Formatting objects. 

You state on your message and in comments that the binary data is
in a TIFF format. You move this data around, eventualy passing it
to the FOP Driver object. I don't think this is at all reasonable
as a TIFF object is definitely not going to be accepted by the SAX
parser used in FOP.

You need to read the FOP examples again.

> 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/
-- 
John Austin <[EMAIL PROTECTED]>

Reply via email to