Announcement

Collapse
No announcement yet.

XSL FOP im Servlet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XSL FOP im Servlet

    Hallo zusammen!!!!
    Ich möchte einen Servlet als PDF-Datei anzeigen, die Transformation erfolgt über einen XML-Datei und einen XSLT-Datei, aber irgendwie kriege ich gar nichts zurück.
    Hier ist meinen Source Code,wenn jemand mir helfen kann, wäre ich Ihn sehr dankbar....<BR>

    import javax.servlet.*;<BR>
    import javax.servlet.http.*;<BR>

    import java.io.*;<BR>

    //Java<BR>
    import java.net.URL;<BR>

    //JAXP<BR>
    import javax.xml.transform.Transformer;<BR>
    import javax.xml.transform.TransformerFactory;<BR>
    import javax.xml.transform.Source;<BR>
    import javax.xml.transform.Result;<BR>
    import javax.xml.transform.stream.StreamResult;<BR>
    import javax.xml.transform.stream.StreamSource;<BR>
    import javax.xml.transform.sax.SAXResult;<BR>

    //Avalon<BR>
    import org.apache.avalon.framework.logger.ConsoleLogger;< BR>
    import org.apache.avalon.framework.logger.Logger;<BR>

    //FOP<BR>
    import org.apache.fop.apps.Driver;<BR>
    import org.apache.fop.apps.FOPException;<BR>
    import org.apache.fop.messaging.MessageHandler;<BR>
    import org.xml.sax.InputSource;<BR>

    /**<BR>
    * @author MEKAOUIR<BR>
    *<BR>
    * To change the template for this generated type comment go to<BR>
    * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments<BR>
    */<BR>
    /*<BR>
    * This sample applies the TestApduCatalog.xsl stylesheet to the<BR>
    * TestApduCatalog.xml XML document, and returns the transformation<BR>
    * output (HTML) to the client browser.<BR<BR>>
    *<BR>
    */<BR>

    public class PDFServlet extends HttpServlet<BR>
    {<BR>
    /**
    * String representing the file separator characters for the System.
    */<BR>
    public final static String FS = System.getProperty("file.separator");<BR>

    protected Logger log;<BR>
    protected TransformerFactory transformerFactory;<BR>

    public void init() throws ServletException<BR>
    {<BR>
    this.log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);<BR>
    this.transformerFactory = TransformerFactory.newInstance();<BR>
    }<BR>

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    <BR>throws ServletException, IOException, <BR>java.net.MalformedURLException
    {<BR>

    try<BR>
    {<BR>
    int cacheExpiringDuration = 0;<BR>

    //Setup FOP<BR>
    Driver driver = new Driver();<BR>
    driver.setLogger(this.log);<BR>
    driver.setRenderer(Driver.RENDER_PDF);<BR>

    //Setup a buffer to obtain the content length<BR>
    ByteArrayOutputStream out = new ByteArrayOutputStream();<BR>
    driver.setOutputStream(out);<BR>

    //Setup Transformer<BR>
    Source xsltSrc =new StreamSource(new File("..\\DataFormat\\TestApdu.xslt"));<BR>
    Transformer transformer =
    this.transformerFactory.newTransformer(xsltSrc);<B R>

    //Make sure the XSL transformation's
    is piped through to FOP <BR>
    Result res = new SAXResult(driver.getContentHandler());<BR>

    //Setup input<BR>
    Source src =new StreamSource(new File("..\\DataFormat\\TestApduCatalog.xml"));<BR>

    //Start the transformation and rendering process<BR>
    transformer.transform(src, res);<BR><BR>

    //Prepare response<BR>
    response.setContentType("application/pdf");<BR>
    response.setDateHeader("Expires",System.currentTim eMillis() + cacheExpiringDuration * 1000);<BR>
    response.setContentLength(out.size());<BR>

    //Send content to Browser<BR>
    response.getOutputStream().write(out.toByteArray() );<BR>

    response.getOutputStream().flush();<BR>

    }<BR>

    catch (Exception e)<BR>
    {<BR>
    System.out.println(e);<BR>
    }<BR>
    }
    <BR>
    }<BR>
Working...
X