Re: urgent help needed using FOP

2004-04-02 Thread Jerry
Thanks for your help. Chris.

Have a nice weekend,


Jerry

--- Chris Bowditch <[EMAIL PROTECTED]> wrote:
> Jerry wrote:
> 
> > John,
> > 
> > Thank you for your message.
> > 
> > Yes, I realize the data in the byte array "bt" in
> tiff
> > does not belong to the standard formatting object.
> > That is why I got the error "content is not
> allowed in
> > prolog". My understanding is I need to either
> convert
> > it into the formatting object using XSL or convert
> it
> > into XML. However, I am new to FOP and XML/XSL and
> do 
> > not know how to do that. If possible, we need to
> > convert the data format in memory,that means,
> > everything is done in memory, not save it as a
> file
> > first and process using FOP.  Would you please
> give me
> > your thought on it or you have a piece of codes
> for me
> > to share? I will greatly appreciate  it.
> 
> Firstly, your question really should have been
> posted to the user-list. The 
> dev list is really for discussing internal work on
> FOP.
> 
> I believe your goal should be to create a servlet
> that serves Tiff images up. 
> You can reference the Tiff images from an XSL-FO
> document using a HTTP URL, 
> via the fo:external-graphic tag. FOP can then be
> called on the XSL-FO document 
> to generate a PDF, and you can do this within
> another servlet if you need to.
> 
> May I also suggest that you get yourself a good book
> on XSL-FO and learn the 
> basics before attempting to implement a solution
> based on XSL-FO.
> 
> 
> 
> Chris
> 
> 


__
Do you Yahoo!?
Yahoo! Small Business $15K Web Design Giveaway 
http://promotions.yahoo.com/design_giveaway/


Re: urgent help needed using FOP

2004-04-01 Thread Jerry
John,

Thank you for your message.

Yes, I realize the data in the byte array "bt" in tiff
does not belong to the standard formatting object.
That is why I got the error "content is not allowed in
prolog". My understanding is I need to either convert
it into the formatting object using XSL or convert it
into XML. However, I am new to FOP and XML/XSL and do 
not know how to do that. If possible, we need to
convert the data format in memory,that means,
everything is done in memory, not save it as a file
first and process using FOP.  Would you please give me
your thought on it or you have a piece of codes for me
to share? I will greatly appreciate  it.

Thanks in advance,


Jerry

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

urgent help needed using FOP

2004-04-01 Thread Jerry
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/