gpt4 book ai didi

pdf - 如何在下载时部分显示 PDF 文件?

转载 作者:行者123 更新时间:2023-12-03 16:28:33 25 4
gpt4 key购买 nike

根据PDF 1.7 specification ,第 90 页,第 3.4 节:

The preceding sections describe the syntax of individual objects. This section describes how objects are organized in a PDF file for efficient random access and incremental update. A canonical PDF file initially consists of four elements (see Figure 3.2):

  • A one-line header identifying the version of the PDF specification to which the file conforms

  • A body containing the objects that make up the document contained in the file

  • A cross-reference table containing information about the indirect objects in the file

  • A trailer giving the location of the cross-reference table and of certain special objects within the body of the file



基本上,该结构具有标题,然后是正文内容,然后是交叉引用表,最后是给出外部参照表位置的尾部。这里的关键部分是 trailerxref table 在 文件结尾 ,以及 xref表包含正文内容的相关元数据(主要是 10 位字节偏移量)。

鉴于外部参照表本身位于 PDF 文件的最后:
  • 在整个文件下载完成之前,我的浏览器(谷歌浏览器)如何能够部分显示 PDF 文件(前一百页左右)?

  • 查看我部分下载的 PDF 文件的屏幕截图:

    Partially downloaded PDF file

    最佳答案

    OP 描述的 PDF 文件类型也称为“网络优化”(营销术语)或“线性化”(PDF 术语中的技术术语)。

    必须注意的是,它仅在满足两个额外条件(在文件的线性化特征之上)时才有效:

  • PDF 查看器需要能够处理这些类型的 PDF 并利用线性化功能。
  • 为线性化 PDF 提供服务的(远程)主机需要支持“字节流”。

  • 如果服务器不支持字节流或 PDF 文件未线性化,则整个文件 仍然需要完全下载,然后查看器才能显示任何页面。

    OP引用的PDF文件结构的描述不适用于线性化的PDF文件。它们的组织方式略有不同:
  • 对 PDF 对象的排序应用特殊规则(“标准”PDF 可以具有任意顺序的对象)。
  • PDF 文档需要包含一些称为“提示表”的附加结构,以确保在其中进行有效导航(即使尚未完全下载)。

  • 关于附加结构,线性化 PDF 将其对象分为两组:
  • 第一组是文档目录,所有文档级对象,以及属于第一个显示页面(不一定是“页面0”!)的所有对象。对象应按顺序编号。
  • 第二组包含所有其他对象。

  • 这些组应由 索引两个 xref表部分。
  • 第一组的xref section 紧接在第一个间接对象之后,非常接近文件的开头。
  • 第二组的xref部分位于文件的末尾(就像在标准的非线性 PDF 中一样)。
  • %PDF-1.x 之后的第一个对象标题行应包含指示 /Linearized 的字典键文件的属性。

    这种整体结构允许符合标准的读者非常快速地了解对象地址的完整列表,而无需从头到尾下载完整的文件:
  • 在下载完整文件之前,查看器可以非常快地显示第一页。
  • 用户可以单击缩略图页面预览(或文件 ToC 中的链接),以便在第一页显示后立即跳转到第 445 页,然后查看者可以请求所有445 页所需的对象,通过字节范围请求向远程服务器发送这些“乱序”,以便查看者可以更快地显示此页面。 (当用户乱序阅读页面时,整个文档的下载仍然会在后台继续......)

  • PDF“线性化”的技术细节可以在 的“规范”附录F中找到。 Adobe's original PDF 1.7 Specification (大约 11 兆字节——这本身就是这种线性化 PDF 文件的一个例子!)

    关于pdf - 如何在下载时部分显示 PDF 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29417217/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com