You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by Cameron McCormack <ca...@mcc.id.au> on 2008/03/06 04:17:11 UTC
Re: running batik efficiently in a web server environment (linux)
Hi Simon.
S. Woodside:
> > The thing is, my web app is in Rails, and I'm not too sure if doing a
> > system() call out to run batik is going to be very efficient. I seem
> > to recall that running java -jar has a lot of overhead, and then
> > maybe there's memory issues, or other things? I know that batik takes
> > several seconds on my (old) server to render my test SVG to PDF, and
> > I need sub-second times.
Jeremias Maerki:
> You're on the right track. You'd have to write a web service wrapper
> around Batik. Or you could put it in a servlet. I don't think there's
> anything that you could use out-of-the-box. Good luck!
As Jeremias says, something that keeps a JVM running all the time is
what you need. I wrote a small, sample transcoding Java servlet here:
http://mcc.id.au/2007/09/batik-course/code/transcoding-servlet/
You could have that running, and invoke it (via HTTP) from your rails
application.
Jetty is a simple Java servlet container that you can use to run the
above servlet.
--
Cameron McCormack, http://mcc.id.au/
xmpp:heycam@jabber.org ▪ ICQ 26955922 ▪ MSN cam@mcc.id.au
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org
Re: running batik efficiently in a web server environment (linux)
Posted by "S. Woodside" <sb...@yahoo.com>.
On Mar 5, 2008, at 10:17 PM, Cameron McCormack wrote:
> As Jeremias says, something that keeps a JVM running all the time is
> what you need. I wrote a small, sample transcoding Java servlet here:
>
> http://mcc.id.au/2007/09/batik-course/code/transcoding-servlet/
Thank you so much for this. I took your servlet and modified it a
bit, running it under Jetty, to make it output PDF. See the new code
below.
I had a bit of a problem with your servlet, with jetty 5 not being
happy with xerces. Anyway, tossed out your lib directory you had and
wound up needing only these ones:
avalon-framework-4.2.0.jar
batik-all-1.6.jar
commons-io-1.3.1.jar
fop.jar
xmlgraphics-commons-1.2.jar
--simon
PS It's very quick :-)
// Source for TranscodingServlet.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.fop.svg.PDFTranscoder;
import org.apache.batik.transcoder.TranscoderException;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
public class TranscodingServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("application/pdf");
String uri = request.getParameter("uri");
PDFTranscoder t = new PDFTranscoder();
TranscoderInput input = new TranscoderInput(uri);
TranscoderOutput output = new TranscoderOutput
(response.getOutputStream());
try {
t.transcode(input, output);
} catch (TranscoderException ex) {
throw new ServletException(ex);
}
}
}
--
http://simonwoodside.com
On Mar 5, 2008, at 10:17 PM, Cameron McCormack wrote:
> Hi Simon.
>
> S. Woodside:
>>> The thing is, my web app is in Rails, and I'm not too sure if
>>> doing a
>>> system() call out to run batik is going to be very efficient. I seem
>>> to recall that running java -jar has a lot of overhead, and then
>>> maybe there's memory issues, or other things? I know that batik
>>> takes
>>> several seconds on my (old) server to render my test SVG to PDF, and
>>> I need sub-second times.
>
> Jeremias Maerki:
>> You're on the right track. You'd have to write a web service wrapper
>> around Batik. Or you could put it in a servlet. I don't think there's
>> anything that you could use out-of-the-box. Good luck!
>
> As Jeremias says, something that keeps a JVM running all the time is
> what you need. I wrote a small, sample transcoding Java servlet here:
>
> http://mcc.id.au/2007/09/batik-course/code/transcoding-servlet/
>
> You could have that running, and invoke it (via HTTP) from your rails
> application.
>
> Jetty is a simple Java servlet container that you can use to run the
> above servlet.
>
> --
> Cameron McCormack, http://mcc.id.au/
> xmpp:heycam@jabber.org ▪ ICQ 26955922 ▪ MSN cam@mcc.id.au
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: batik-users-
> help@xmlgraphics.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org