在网上打开一个大的pdf文件

时间:2011-12-05 11:01:12

标签: pdf web

我有一个27MB的pdf文件,它托管在网络上。当我尝试打开它时,打开它需要一些时间。那么我有什么方法可以快速查看这个大型pdf文件。我想有一些设置,我们可以在下载一些页面后查看文件的页面。 对此的任何解决方案都将受到高度赞赏

5 个答案:

答案 0 :(得分:4)

您需要对PDF进行“网络优化”。技术上更正确的术语是使它们“线性化”:

  • Acrobat + Distiller和许多其他工具都可以做到这一点。
  • Ghostscript还附带一个名为pdfopt.ps的PostScript编写的辅助工具,可以执行此操作。简单地说:
     gs -q -dNODISPLAY -P- -dSAFER -dDELAYSAFER -- /path/to/pdfopt.ps input.pdf optimized.pdf,或者如果你在Windows上:
     gswin32.exe -q -dNODISPLAY -P- -dSAFER -dDELAYSAFER -- c:/path/to/pdfopt.ps input.pdf optimized.pdf

通常pdfopt.ps应与Ghostscript一起安装在安装路径的lib/子目录中。如果没有,您可以从Ghostscript Git存储库中download pdfopt.ps

线性化在内部重新组织PDF,以便其PDF对象的内部ToC(在技术术语中:其“ xref 表”)的(副本)接近开头的文件(而不是它的结尾),再加上一些更改。

这样,符合规范的PDF阅读器将能够在加载文件的其余部分之前开始渲染第一页。如果您使用基于HTTP的协议通过Web访问PDF,甚至可以在下载中间页之前跳转到最后一页并查看它。但是,Web服务器需要支持HTTP“字节范围”请求(否则即使对于线性化的PDF也不行)。

您可以在官方PDF-1.7 ISO标准规范available on the Adobe website

中阅读有关PDF线性化的更多详细信息。
  • 在其(规范性)附件F中,“线性化PDF”,从第683页开始,
  • 在其(资料性附录)附件G,“线性化PDF访问策略”,从第703页开始。

线性化PDF can be found here

的示例

更新(2013-2-15)

从Ghostscript的9.07版本开始,通过在命令行中添加以下开关,可以直接生成线性化(“web优化”)PDF输出(没有上面概述的两步法):

-dFastWebView=true

由于pdfopt.ps文件现在是冗余的,因此它已从当前的Ghostscript源存储库中删除。

答案 1 :(得分:0)

一种选择是使用像JPedal这样的pdf库来从服务器端的PDF渲染页面图像,然后(通过AJAX)将图像呈现给客户端。

答案 2 :(得分:0)

两种可能的解决方法是:

如果PDF通常不会更改,您可以为资源设置cache expiry(在response中设置),这样当客户打开pdf / view时,资源会缓存在他们的浏览器中,将减少第二次访问的加载时间(取决于它到期的时间)

另一个选项,如果可能,尝试加载pdf文件asynchronously。这是首先加载你网页的其他内容,然后你的pdf将被加载。

或者你可以将两者结合起来。

答案 3 :(得分:0)

FlexPaper支持将大型PDF文档拆分为多个页面,以便只下载可见页面。他们有两个观众,一个是翻页效果,一个是更经典的文档阅读器/阅读器,提供从免费到商业许可的选项。

http://flexpaper.devaldi.com/

答案 4 :(得分:0)

补充Kurt的评论。我组装了这个命令行,它似乎可以解决生成优化的PDF文件的问题:

gs -q -P- -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dFastWebView -sOutputFile=optimized.pdf input.pdf 

您可以使用pdfinfo optimized.pdf检查输出,您应该在输出中看到Optimized: yes