3

我有一个客户一直在努力在网络上加载缓慢的 pdf 文件。我的客户有一些非常大的 pdf 文件,几乎 10 Mb。下载它们需要 3-4 分钟以上。在加载整个文件之前,这些文件不会显示。我们和他们已经看到其他网站的 pdf 一次加载一页,因此最终用户可以开始查看文件,因为页面的其余部分仍在后台加载。给人一种页面加载速度更快的错觉。

根据他们看到的文档,如果在创建 pdf 文件时选中了“针对快速 Web 视图进行优化”,IIS 6 应该会自动执行此操作。它被选中,文件仍然不会一次加载页面。

他们已经搜索并发现如果文件保存正确,除了 IIS 之外没有任何东西会自动执行此操作。

他们如何“流式传输”pdf?这是因为 pdf 是以特殊方式保存的吗?这是一个处理下载的java脚本吗?或者是否需要在 IIS 中进行更改?

谢谢

更新:文件开始是这样的:

%PDF-1.4
%âãÏÓ
171 0 obj << 0/Linearized 1

线性化?

PDF 文档不是从 aspx/asp 页面提供的。(它只是直接发布到该站点并链接到)。

4

5 回答 5

1

是否可以使用第三方服务,例如Scribd?如果你走这条路,你可以将他们的流媒体查看器嵌入到你客户的网站上。只是一个想法,虽然我知道它并不适合所有类型的业务。

于 2008-11-18T14:17:20.107 回答
1

如果您从 aspx 页面提供 PDF,则可能会发生这种情况,为了获得线性化 pdf 需要直接提供页面的字节服务,或者您需要提供来自 aspx 代码的字节服务。

于 2008-11-18T14:40:20.480 回答
1

您需要对 PDF 进行线性化,而不是信任 IIS 为您执行此操作。

有许多应用程序可以为您执行此操作。我用过 CVision(他们的压缩比没有,但许可和 SDK 很痛苦),这里也有一些更便宜的替代品但我不知道它们的效果如何。

为了澄清托尼的观点......(我认为)

如果您实际使用过这些工具并且您的 pdf 是线性化的,请尝试将 PDF 转换为字节数组并 Response.Write() 将字节数组(带有内容标题等)发送到客户端(在新的浏览器窗口或框架中)

于 2008-11-18T15:07:49.957 回答
1

保存其中一个文件并在文本编辑器中打开它。如果你没有看到类似的东西

<< /Linearized 1.0 /L <number> /H [<number> <number>] /O <number> /E <number> ...

在前几百个字节左右,那么您就没有得到线性化(即快速网络)PDF。

于 2008-11-18T15:27:49.607 回答
1

首先,文档需要“线性化”,正如其他人所解释的那样;您可以在 Acrobat 或使用Ghostscript中的 pdfopt 对其进行线性化。其次,Web 服务器必须能够提供字节范围(即支持 Range 标头);我不知道如何为此配置 IIS,但即使文档是线性化的,客户端也必须能够读取特定的字节范围。

于 2008-11-18T15:40:31.547 回答