PdfServlet.java

package sk.iway.iwcm.components.pdf;


import java.io.ByteArrayOutputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sk.iway.iwcm.Tools;
import sk.iway.iwcm.common.PdfTools;

@WebServlet(name = "pdfServlet", urlPatterns = {"/to.pdf/*", "/topdf/*"})
public class PdfServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
    {
        //ak to islo napriamo tak to zhadzovalo IIS ISAPI filter!!!
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        int docId = Tools.getDocId(req);

        boolean ok = PdfTools.getPdfVersion(docId, req, baos);

        if (ok)
        {
            if(req.getParameter("renderAsRtf") != null && req.getParameter("renderAsRtf").toLowerCase().equals("true") )
                res.setContentType("html/rtf");
            else
                res.setContentType("application/pdf");

            //aby to islo aj v IE6: http://www.alagad.com/go/blog-entry/error-internet-explorer-cannot-download-filename-from-webserver
            res.setHeader("Pragma", "public");
            res.setHeader("Cache-Control", "max-age=0");

            res.setContentLength(baos.size());
            res.getOutputStream().write(baos.toByteArray());
            res.getOutputStream().flush();
            res.getOutputStream().close();
        }
        else
        {
            req.getRequestDispatcher("/404.jsp").forward(req, res);
        }

    }

}