You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Roel <di...@scarlet.be> on 2007/11/29 12:25:39 UTC
apache fop remains active in servlet environment
I use apache fop in a servlet to display some xml as pdf. When I have used
that functionality in my webapp my (Tomcat 6.0) web container doesn't want
to undeploy. It deletes everything in the webapps/*context* directory except
WEB-INF/lib/batik.jar and WEB-INF/lib/fop.jar. When trying to delete the
files manually windows tells me they are in use.
I use this code to render the xml into pdf
ByteArrayOutputStream out = new ByteArrayOutputStream();
FopFactory ff=FopFactory.newInstance();
TransformerFactory tf=TransformerFactory.newInstance();
StreamSource xslfo=new
StreamSource(this.getServletContext().getRealPath("lid-pdf.xsl"));
try {
Transformer tt=tf.newTransformer(xslfo);
Fop fp=ff.newFop(MimeConstants.MIME_PDF, out);
SAXResult res=new SAXResult(fp.getDefaultHandler());
Source src= new DOMSource(doc);
DOMResult dd=new DOMResult();
assert(src!=null);
assert(res!=null);
tt.transform(src, dd);
Transformer t2=tf.newTransformer();
// System.out.println(res.getNode().getFirstChild());
t2.transform(new DOMSource(dd.getNode()), res );
//Prepare response
response.setContentType("application/pdf");
assert(out.size()>0);
response.setContentLength(out.size());
// System.out.println(Version.getVersion());
//Send content to Browser
response.getOutputStream().write(out.toByteArray());
response.getOutputStream().flush();
out.close();
} catch (FOPException e) {
// TODO Auto-generated catch block
throw new ServletException(e);
} catch (TransformerConfigurationException e1) {
// TODO Auto-generated catch block
throw new ServletException(e1);
} catch (TransformerException e) {
// TODO Auto-generated catch block
throw new ServletException(e);
}
System.gc();
Anyone has any ideas?
Roel
--
View this message in context: http://www.nabble.com/apache-fop-remains-active-in-servlet-environment-tf4896511.html#a14023743
Sent from the Tomcat - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
Re: apache fop remains active in servlet environment
Posted by Roel <di...@scarlet.be>.
And how can i use that to render an in-memory DOM object? The xml I need to
render is constructed on the fly from database records and then fed to fop.
Roel
mgainty wrote:
>
> FOP 0.94 has working servlet code
> which can be called specifying the xml and xsl
> http://servername/fop/servlet/FopServlet?xml=data.xml&xslt=format.xsl
>
> OR just using the fo param
> http://servername/fop/servlet/FopServlet?fo=readme.fo
>
> http://archive.apache.org/dist/xmlgraphics/fop/binaries/
> M--
> ----- Original Message -----
> Wrom: YRWTQTIPWIGYOKSTTZRCLBDXRQBGJS
> To: <us...@tomcat.apache.org>
> Sent: Thursday, November 29, 2007 6:25 AM
> Subject: apache fop remains active in servlet environment
>
>
>>
>> I use apache fop in a servlet to display some xml as pdf. When I have
>> used
>> that functionality in my webapp my (Tomcat 6.0) web container doesn't
>> want
>> to undeploy. It deletes everything in the webapps/*context* directory
> except
>> WEB-INF/lib/batik.jar and WEB-INF/lib/fop.jar. When trying to delete the
>> files manually windows tells me they are in use.
>>
>> I use this code to render the xml into pdf
>>
>> ByteArrayOutputStream out = new ByteArrayOutputStream();
>> FopFactory ff=FopFactory.newInstance();
>> TransformerFactory tf=TransformerFactory.newInstance();
>>
>> StreamSource xslfo=new
>> StreamSource(this.getServletContext().getRealPath("lid-pdf.xsl"));
>> try {
>> Transformer tt=tf.newTransformer(xslfo);
>> Fop fp=ff.newFop(MimeConstants.MIME_PDF, out);
>>
>> SAXResult res=new SAXResult(fp.getDefaultHandler());
>> Source src= new DOMSource(doc);
>> DOMResult dd=new DOMResult();
>> assert(src!=null);
>> assert(res!=null);
>> tt.transform(src, dd);
>> Transformer t2=tf.newTransformer();
>> // System.out.println(res.getNode().getFirstChild());
>> t2.transform(new DOMSource(dd.getNode()), res );
>>
>> //Prepare response
>> response.setContentType("application/pdf");
>> assert(out.size()>0);
>> response.setContentLength(out.size());
>> // System.out.println(Version.getVersion());
>> //Send content to Browser
>> response.getOutputStream().write(out.toByteArray());
>> response.getOutputStream().flush();
>> out.close();
>>
>> } catch (FOPException e) {
>> // TODO Auto-generated catch block
>> throw new ServletException(e);
>> } catch (TransformerConfigurationException e1) {
>> // TODO Auto-generated catch block
>> throw new ServletException(e1);
>> } catch (TransformerException e) {
>> // TODO Auto-generated catch block
>> throw new ServletException(e);
>> }
>>
>> System.gc();
>>
>>
>> Anyone has any ideas?
>>
>> Roel
>> --
>> View this message in context:
> http://www.nabble.com/apache-fop-remains-active-in-servlet-environment-tf489
> 6511.html#a14023743
>> Sent from the Tomcat - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To start a new topic, e-mail: users@tomcat.apache.org
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>
>
--
View this message in context: http://www.nabble.com/apache-fop-remains-active-in-servlet-environment-tf4896511.html#a14030465
Sent from the Tomcat - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
Re: apache fop remains active in servlet environment
Posted by mg...@hotmail.com.
FOP 0.94 has working servlet code
which can be called specifying the xml and xsl
http://servername/fop/servlet/FopServlet?xml=data.xml&xslt=format.xsl
OR just using the fo param
http://servername/fop/servlet/FopServlet?fo=readme.fo
http://archive.apache.org/dist/xmlgraphics/fop/binaries/
M--
----- Original Message -----
Wrom: YRWTQTIPWIGYOKSTTZRCLBDXRQBGJS
To: <us...@tomcat.apache.org>
Sent: Thursday, November 29, 2007 6:25 AM
Subject: apache fop remains active in servlet environment
>
> I use apache fop in a servlet to display some xml as pdf. When I have used
> that functionality in my webapp my (Tomcat 6.0) web container doesn't want
> to undeploy. It deletes everything in the webapps/*context* directory
except
> WEB-INF/lib/batik.jar and WEB-INF/lib/fop.jar. When trying to delete the
> files manually windows tells me they are in use.
>
> I use this code to render the xml into pdf
>
> ByteArrayOutputStream out = new ByteArrayOutputStream();
> FopFactory ff=FopFactory.newInstance();
> TransformerFactory tf=TransformerFactory.newInstance();
>
> StreamSource xslfo=new
> StreamSource(this.getServletContext().getRealPath("lid-pdf.xsl"));
> try {
> Transformer tt=tf.newTransformer(xslfo);
> Fop fp=ff.newFop(MimeConstants.MIME_PDF, out);
>
> SAXResult res=new SAXResult(fp.getDefaultHandler());
> Source src= new DOMSource(doc);
> DOMResult dd=new DOMResult();
> assert(src!=null);
> assert(res!=null);
> tt.transform(src, dd);
> Transformer t2=tf.newTransformer();
> // System.out.println(res.getNode().getFirstChild());
> t2.transform(new DOMSource(dd.getNode()), res );
>
> //Prepare response
> response.setContentType("application/pdf");
> assert(out.size()>0);
> response.setContentLength(out.size());
> // System.out.println(Version.getVersion());
> //Send content to Browser
> response.getOutputStream().write(out.toByteArray());
> response.getOutputStream().flush();
> out.close();
>
> } catch (FOPException e) {
> // TODO Auto-generated catch block
> throw new ServletException(e);
> } catch (TransformerConfigurationException e1) {
> // TODO Auto-generated catch block
> throw new ServletException(e1);
> } catch (TransformerException e) {
> // TODO Auto-generated catch block
> throw new ServletException(e);
> }
>
> System.gc();
>
>
> Anyone has any ideas?
>
> Roel
> --
> View this message in context:
http://www.nabble.com/apache-fop-remains-active-in-servlet-environment-tf489
6511.html#a14023743
> Sent from the Tomcat - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org