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

最佳答案

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

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


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

您可以使用以下方式从链接文件的HTML强制打开新的标签页/窗口:

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


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

关于java - 在新的浏览器窗口中打开Java pdf文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38745877/

10-10 21:47
查看更多