我有一个客户端一直在努力在网络上缓慢加载pdf文件。 我的客户端有一些非常大的pdf文件,几乎是10 Mb。他们花了3-4分钟下载。在加载整个文件之前,文件不会显示。 我们和他们已经看到了pdf一次加载一个页面的其他站点,因此最终用户可以开始查看该文件,因为页面的其余部分仍然在后台加载。给出了页面加载速度更快的错觉。
根据他们看到的文档,如果使用“针对快速Web查看优化”创建的pdf文件,IIS 6应自动执行此操作。它被检查,文件仍然不会一次加载页面。
他们已经搜索过,如果文件保存得当,IIS会自动执行此操作。
他们如何“流式传输”PDF格式?这是因为pdf是以特殊方式保存的吗?这是一个处理下载的java脚本吗?或者是否需要在IIS中进行更改?
由于
更新: 该文件开头如下:
%PDF-1.4
%âãÏÓ
171 0 obj << 0/Linearized 1
线性化?
未从aspx / asp页面提供PDF文档。 (它只是直接发布到网站并链接到)。
答案 0 :(得分:1)
是否可以使用第三方服务,例如Scribd?如果你走这条路,你可以将他们的流媒体查看器嵌入到你客户的网站上。只是一个想法,虽然我知道它并不适合所有类型的业务。
答案 1 :(得分:1)
如果您从aspx页面提供PDF,可能会发生这种情况,以获得线性化的字节服务pdf需要直接提供页面,或者您需要从aspx代码提供字节服务。
答案 2 :(得分:1)
您需要对PDF进行线性化,而不是信任IIS为您执行此操作。
有很多应用可以帮到您。我使用过CVision(他们的压缩是首屈一指的,但许可和SDK都很痛苦),还有一些更便宜的替代品here,但我不知道它们的工作情况。
澄清托尼的观点...(我认为)
如果您实际使用过这些工具且pdf已线性化,请尝试将PDF转换为字节数组,并将Response.Write()字节数组(带内容标题等)转换为客户端(在新的浏览器窗口中或帧)
答案 3 :(得分:1)
保存其中一个文件并在文本编辑器中将其打开。如果你没有看到像
这样的东西<< /Linearized 1.0 /L <number> /H [<number> <number>] /O <number> /E <number> ...
在前几百字节左右,那么你就没有得到一个线性化的(即快速网络)PDF。
答案 4 :(得分:1)
首先,文件需要“线性化”,正如其他人所解释的那样;您可以在Acrobat中线性化它或使用Ghostscript中的pdfopt。其次,Web服务器必须能够提供字节范围(即支持Range标头);我不知道如何为此配置IIS,但即使文档是线性化的,客户端也必须能够读取特定的字节范围。