2016-08-03 162 views
0

我想在客户端浏览器的新选项卡中显示PDF文件。Java在新的浏览器窗口中打开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使用它呢?

回答

0

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

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

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

您可以强制使用例如HTML文件链接的HTML打开新标签页/窗口。

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

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

相关问题