【问题标题】:Java Open pdf file in new browser windowJava 在新的浏览器窗口中打开 pdf 文件
【发布时间】:2016-08-03 14:03:52
【问题描述】:

我想在客户端浏览器的新标签页中显示一个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 使用它?

【问题讨论】:

    标签: java tomcat pdf servlets


    【解决方案1】:

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

    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "inline; filename=\"My.pdf\"");
    

    Content-Disposition 标头的inline 部分告诉浏览器,它可以 显示内联文件,如果可以,attachment 将强制下载。

    您可以强制从链接文件的 HTML 中打开新选项卡/窗口,例如使用

    <a href="#" onclick="window.open('My.pdf', '_blank', 'fullscreen=yes'); return false;">My PDF</a>
    

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

    【讨论】:

      猜你喜欢
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 2014-04-01
      相关资源
      最近更新 更多