【问题标题】:java open pdf file when it is being downloadedjava在下载时打开pdf文件
【发布时间】:2014-05-05 20:52:51
【问题描述】:

我有一个包含许多大 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”设置为“内联”,并且我将 out.flush() 放在循环中而不是外侧循环中。

【问题讨论】:

  • 这是一个问答网站。如果您希望有人为您工作或为您创建一些代码,请尝试像 vworker 这样的程序员招聘网站。
  • 我不想让任何人工作。我尝试了很多类似 response.setHeader("Content-disposition","inline; filename="abc.pdf") 但我无法实现所以我只是在寻求帮助,如果有人以前做过。
  • 如果你尝试了很多东西,请在这里分享。它显示了努力,也减少了获得您已经尝试过的解决方案的机会。使用您尝试过的代码以及为什么它不起作用(发布错误日志或“它什么也没做”或解释)编辑您的问题。如果你这样留下你的问题,它可能会被关闭。
  • 令人惊讶的是,我在 Stack Overflow 上没有看到类似的问题。你是否正确地解决了这个问题?字节服务 PDF 已经存在了一段时间。 Google: java servlet "byte serve" pdf.
  • 我正在寻找像 mozilla.github.io/pdf.js/web/viewer.html 这样的功能。但我正在寻找更快的过程,就像 pdf.js 一样,最终用户也必须等待一段时间才能加载整个 pdf。

标签: jsp servlets pdf


【解决方案1】:

我暂时使用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?filePath=值。在我的问题中上面给出的代码中,我将从文件系统中读取数据,其余代码相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 2014-05-13
    相关资源
    最近更新 更多