java下载时打开pdf文件

时间:2014-04-22 13:46:19

标签: jsp servlets pdf

我有一个包含许多重要pdf文件的存储库。我允许用户使用servlet下载pdf文件。我希望功能只要我点击"查看文件",用户应该能够看到已经下载的内容(逐页)。

String fileType = "application/pdf";

response.setContentType(fileType);

// Make sure to show the download dialog
response.setHeader("Content-disposition","inline; filename=JavaIn21Days.pdf");

URL url = new URL("http://portal.aauj.edu/e_books/teach_your_self_java_in_21_days.pdf");  
BufferedInputStream bufferedInputStream  = new BufferedInputStream(url.openStream());

byte[] buffer = new byte[4096];
int length;
while ((length = bufferedInputStream.read(buffer)) > 0){
    out.write(buffer, 0, length);
    out.flush();
}
in.close();
out.close();

正如你所看到的,我试图制作" Content-disposition" as" inline"而且我把out.flush()放在循环中而不是侧循环。

1 个答案:

答案 0 :(得分:0)

暂时使用 PDF.js 。如果快速响应非常重要,单页面布局非常充分。只需轻轻一点就可以加载第一页。用户可以点击上一个和下一个,并且由于每次只加载一个页面,它的工作速度非常快

单页布局http://www.worldwidewhat.net/2011/08/render-pdf-files-with-html5/

Pdf.js是javascript技术并在浏览器上运行。因此,它不允许您访问HTML(显示PDF)所在的文件夹之外的任何文件(也称为绝对路径问题)。 为了解决这个问题,我使用了jsp servlet 。我的view.HTML页面变成了jsp页面。我创建了一个 servlet来访问文件系统上的任何pdf 。您可以在PDFJS.open(" url")函数或DEAFULT_URL参数中提供 servlet URL。您可以将文件路径作为参数传递给servlet servletname?文件路径=值。在上面给出的问题代码中,我将从文件系统中读取数据,其余代码是相同的。