Java在新的浏览器窗口中打开pdf文件

时间:2016-08-03 14:03:52

标签: java tomcat pdf servlets

我想在客户端浏览器的新标签页中显示pdf文件。

我已经创建了一个servlet类来显示pdf文件,我是Java的新手,我不知道如何使用我已经创建的类,以及该类是否正确。

我使用Tomcat在Windows上使用Java。

servlet代码:

public class DisplayPdf extends HttpServlet implements Servlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
    processRequest(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException,
        IOException {
    processRequest(request, response);
}

private void processRequest(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException,
        IOException {
        File file = new File("test.pdf");
        InputStream inputStream = getServletContext().getResourceAsStream("/WEB-INF/resources/test.pdf");
        OutputStream outputStream = new FileOutputStream(file);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) > 0) {
            outputStream.write(buffer, 0, length);
        }
        outputStream.close();
        inputStream.close();
}

}

如何调用此servlet并在Java Webapp中使用它?

1 个答案:

答案 0 :(得分:0)

这实际上与servlet或任何其他服务器端技术无关(或只是很少),打开新窗口/选项卡或保存对话框完全在浏览器的能力。服务器端所能做的只是为响应设置正确的HTTP标头,例如

created_at

try: potions.pop() except IndexError: print "No potion left" 标题的response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "inline; filename=\"My.pdf\""); 部分告诉浏览器可以以内联方式显示文件,如果能够,inline会强行下载

您可以使用例如

强制打开文件链接的HTML中的新标签/窗口
Content-Disposition

有关详细信息,请参阅window.open()文档。

相关问题