【问题标题】:PDF.JS Preview large pdf file (> 200MB) on client side, that was sent from server sidePDF.JS 在客户端预览从服务器端发送的大型 pdf 文件 (> 200MB)
【发布时间】:2020-01-14 13:28:03
【问题描述】:

我正在使用 pdf 查看器,它将从服务器 (nodejs) 加载 pdf 文件,然后在客户端呈现以允许用户直接在我的站点中阅读。

我正在使用pdf.js 在客户端呈现 pdf 文件。问题是客户端必须先下载整个pdf文件才能解析和渲染它,所以如果文件太大(在我的情况下约为200MB),用户必须等待下载整个200MB。

我研究过,我认为我可以通过两种方式解决这个问题:

  • 在服务器端将大的 pdf 文件拆分为多个较小的 pdf 文件,并仅按需提供特定的小文件。但是这样一来,我会丢失一些重要的元数据,比如 pdf 大纲,...

  • 在服务器端直接使用 pdf.js,获取 pdf 页面,然后将每个页面作为二进制文件提供给客户端,客户端还将使用 pdf.js(addPage 函数)将每个页面添加到他们的查看器。但我不知道这是否可能。

那么我应该怎么做才能解决这个问题呢? 非常感谢。

【问题讨论】:

  • 您是否能够在服务器端进行更改以呈现带有范围请求的 pdf?即使我正在尝试做同样的事情,我已经在服务器端进行了更改,Pdf.js 按预期调用服务器,但它并不适用于所有范围。请让我知道我正在使用 Spring Boot 在服务器端需要进行哪些更改。非常感谢您的帮助。
  • 是的,我通过更新服务器来支持范围请求解决了这个问题,然后 pdf.js 工作得很好。我没有在客户端改变任何东西。我在服务器端使用 nodejs
  • 另外,我在服务器端手动实现范围请求时失败了,所以我尝试使用一个库(github.com/pillarjs/send),所以你可以参考那个库的代码来看看需要改变什么

标签: javascript node.js pdf pdf-generation pdfjs


【解决方案1】:

最好的解决方案是优化您所有的网络 PDF 文件。

pdf.js 的默认设置将只加载它需要渲染的部分。

请参阅here 了解更多信息。

【讨论】:

  • 啊,我不知道pdf.js支持范围请求,我去试试,非常感谢!
猜你喜欢
  • 2013-08-25
  • 2021-02-15
  • 2011-05-29
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 2015-05-02
相关资源
最近更新 更多