在我的servlet中,经过一些操作后,我生成了一个PDF。它在ByteArray。
我可以通过操作在浏览器中显示PDF,
byte[]
带到InputStream
ByteArrayOutputStream
ByteArrayOutputStream
写入ServletOutputStream
。这将在我当前窗口中显示PDF,但是是否可以在任何特定的JSP页面中显示PDF? 因为我想在显示pdf的同时在JSP的页脚中放置一些按钮。以上述方式,整个窗口仅包含PDF。
答案 0 :(得分:1)
您可以在JSP页面中嵌入IFRAME
并将其维度设置为占据整个页面,但要显示页脚的部分除外,页脚将成为JSP的一部分。 IFRAME目标/ src将是显示PDF的servlet。
目前,您似乎正在使用一些请求参数从页面A调用Servlet B.您应该使用相同的请求参数从页面A调用新JSP,JSP页面将构建IFRAME的目标URL并调用将处理和返回PDF页面的servlet B.
答案 1 :(得分: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();
}
}