在servlet的特定jsp页面中显示pdf

问题描述 投票:2回答:2

在我的servlet中,在做了一些操作之后,我正在生成一个PDF。它在ByteArray中。

我可以通过这样做在浏览器中显示PDF

  1. byte[]带到InputStream
  2. 把它写到ByteArrayOutputStream
  3. 然后将ByteArrayOutputStream写入ServletOutputStream
  4. 然后返回null;

这将在我当前窗口中显示PDF,但是是否可以在任何特定的JSP页面中显示PDF?因为我想在显示pdf的同时在JSP的页脚中放置一些按钮。以上述方式,整个窗口仅包含PDF。

jsp pdf servlets pdf-generation
2个回答
1
投票

您可以在JSP页面中嵌入IFRAME并将其维度设置为占据整个页面,除了要显示页脚的部分,页脚将成为JSP的一部分。 IFRAME目标/ src将是显示PDF的servlet。

目前,您似乎从页面A调用Servlet B并带有一些请求参数。您应该使用相同的请求参数从页面A调用新JSP,JSP页面将构建IFRAME的目标URL并调用将处理和返回PDF页面的servlet B.


0
投票

JSP Form Submit
action="PDFServlet" method="post" 
SERVLET code
that reads from byte[] to ServletOutputStream
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        File file = new File("estatement.pdf");

        ServletOutputStream stream = null;
        BufferedInputStream buf = null;
        try {
            stream = response.getOutputStream();
            // set response headers
            response.setContentType("application/pdf");
            response.setDateHeader("Expires", 0);
            response.addHeader("Content-Disposition",
                    "inline; filename=estatement.pdf");
            response.setContentLength((int) file.length());
            buf = new BufferedInputStream(new FileInputStream(file));
            int readBytes = 0;
            while ((readBytes = buf.read()) != -1)
                stream.write(readBytes);
        } finally {
            if (stream != null)
                stream.flush();
            stream.close();
            if (buf != null)
                buf.close();
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.