下载时如何部分显示PDF文件?
根据第90页第3.4节: 前面的部分描述了各个对象的语法。这 第节介绍如何在PDF文件中组织对象以提高效率 随机访问和增量更新。一个规范的PDF文件 由四个要素组成(见图3.2):下载时如何部分显示PDF文件?,pdf,random-access,cross-reference,Pdf,Random Access,Cross Reference,根据第90页第3.4节: 前面的部分描述了各个对象的语法。这 第节介绍如何在PDF文件中组织对象以提高效率 随机访问和增量更新。一个规范的PDF文件 由四个要素组成(见图3.2): 一个单行标题,标识所引用的PDF规范的版本 文件符合 包含组成包含在文档中的文档的对象的主体 文件 一种交叉引用表,其中包含有关间接引用的信息 文件中的对象 给出交叉参考表位置和特定位置的拖车 文件正文中的特殊对象 基本上,结构有标题,然后是主体内容,然后是交叉引用表,最后是提供外部参照表位置的尾部。这里的关键部
- 一个单行标题,标识所引用的PDF规范的版本 文件符合
- 包含组成包含在文档中的文档的对象的主体 文件
- 一种交叉引用表,其中包含有关间接引用的信息 文件中的对象
- 给出交叉参考表位置和特定位置的拖车 文件正文中的特殊对象
拖车
和外部参照
表位于文件的末尾,而外部参照
表包含正文内容的相关元数据(主要是10位字节偏移量)
鉴于外部参照表本身位于PDF文件的最末端:
- 为什么我的浏览器(Google Chrome)能够在整个文件下载完成之前部分显示PDF文件(前100页左右)李>
OP描述的PDF文件类型也称为“网络优化”(营销术语)或“线性化”(PDF术语中的技术术语) 必须注意的是,只有在满足两个额外条件(在文件线性化特性的基础上)时,它才起作用:
表格部分进行索引
xref
部分紧跟在第一个间接对象之后,非常接近文件的开头xref
部分位于文件的末尾(与标准的非线性PDF一样)%PDF-1.x
标题行之后的第一个对象应包含一个字典键,指示文件的/线性化
属性
这种整体结构允许一致性读者快速了解对象地址的完整列表,而无需从头到尾下载完整文件:
- 在下载完整文件之前,查看器可以快速显示第一页
- 用户可以单击缩略图页面预览(或文件ToC中的链接),以便在显示第一页后立即跳转到第445页,然后查看者可以通过字节范围请求请求远程服务器发送这些“无序”的内容,请求第445页所需的所有对象因此,查看器可以更快地显示此页面。(当用户无序阅读页面时,完整文档的下载仍将在后台进行…)