如何在JSP中打开PDF文件?

时间:2014-05-14 11:01:57

标签: jsp servlets pdf runtime

我有一个应用程序,我想在其中打开一个在运行时打开并创建的JSP文件。我的问题是,如果我没有固定的路径,如何打开它。我怎么知道它在哪里以及如何在运行时打开它?

2 个答案:

答案 0 :(得分:1)

你可以使用servlet。

@WebServlet("/Test.pdf")
public class PdfServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
File file = new File("D:\\Test\\Test.pdf");
response.setHeader("Content-Type",    getServletContext().getMimeType(file.getName()));
response.setHeader("Content-Length", String.valueOf(file.length()));
response.setHeader("Content-Disposition", "inline; filename=\"Test.pdf\"");
     Files.copy(file.toPath(), response.getOutputStream());
}
}

(如果Servlet 3.0不可用,那么以通常的方式将其映射到web.xml中,如果Java 7不可用,则以通常的方式使用读/写循环)

只需将此类完整地复制到您的项目中,然后通过/contextpath/Test.pdf而不是/contextpath/youroriginal.jsp打开所需的PDF文件(在将其组织到包中并在类中自动完成必要的导入之后) ,当然)。

E.g。如下所示,您希望以内联方式显示PDF:

<object data="${pageContext.request.contextPath}/Test.pdf" 
type="application/pdf" width="500" height="300">
<a href="${pageContext.request.contextPath}/Test.pdf">Download file.pdf</a>

答案 1 :(得分:0)

解决您的问题重新编写链接行

<A HREF="<%="file://D:/filesDir/"+fileNames[i] %>"><%= fileNames[i]%></A>

但是如果您真的希望在其他系统上访问文件以及服务器本身以外的其他系统,则应将文件移动到您的Web目录中,然后使用相对路径进行访问