什么是线性化PDF?

news/2025/2/4 5:38:05/

线性化PDF是一种特殊的PDF文件组织方式。

总体而言,PDF是一种极为优雅且设计精良的格式。PDF由大量PDF对象构成,这些对象用于创建页面。相关信息存储在一棵二叉树中,该二叉树同时记录文件中每个对象的位置。因此,打开文件时只需加载这棵树,随后便可借助它加载显示页面所需的对象。无需读取整个文件,仅读取这棵树即可。树的位置始终存储在文件末尾,所以很容易找到,而且只需追加新信息和一棵新树,就能轻松修改文件。

然而,如果通过网络读取文件,它是以字节流的形式被访问的。这意味着,必须在整个PDF文件传输完毕后,才能读取位于文件末尾的引用。对于大文件而言,这可能需要一些时间。

 

如何创建线性化PDF

于是,Adobe创建了一种新的PDF布局方式,即线性化PDF。其文件格式依然不变,但在文件开头有一个特殊标记,创建第一页所需的所有对象(以及描述这些对象的一个小型二叉树)都存储在文件开头。一旦读取了这些数据,即可显示第一页,同时文件的其余部分继续下载。这使得整个过程看起来快得多,即便对于超大文件,用户也几乎能立刻看到一些内容。

 

线性化PDF与非线性化PDF有何区别

线性化PDF用于按页面顺序有序地组织内部组件,这有助于提升网页浏览体验,使用户能够尽快查看最想看的页面。而非线性化PDF的对象分散在整个文件中,必须完全下载后才能查看。

 

如何检查PDF是否为线性化的?

在Adobe Acrobat和Adobe Reader中,查看PDF是否为线性化的最佳方法是查看文档属性。如果文件是线性化PDF,“快速网络视图”这一项将显示“是”。


 

在JPedal PDF阅读器中,我们也添加了类似功能,可在文档属性中显示文件是否为线性化PDF。如果是线性化PDF,“linearized(线性化)”一词会出现在常规信息部分中PDF版本之后。

 

用于查看PDF文件是否为线性化的Java代码

在JPedal中,你也可以通过编程方式检查文件是否为线性化的,方法是查看Linearized对象是否存在——如果存在,那它就是一个线性化的PDF。

final PdfUtilities extract = new PdfUtilities(filename);

if (extract.openPDFFile()) {

final boolean isLinearized = extract.isPDFLinearized();

}

extract.closePDFfile();

 

为什么线性化PDF很重要?

简而言之,线性化PDF是一种组织PDF文件的方式,这样如果要通过互联网访问该文件,它的加载速度会显得快很多。而且它确实能很好地做到这一点!

 

我们的主页:PDF 转 HTML5、Java 图像库、Java PDF SDK - IDRsolutions

关注我们🛰️:IDRSolutions

 


http://www.ppmy.cn/news/1569156.html

相关文章

Java篇之继承

目录 一. 继承 1. 为什么需要继承 2. 继承的概念 3. 继承的语法 4. 访问父类成员 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. super和this关键字 7. 子类构造方法 8. 代码块的执行顺序 9. protected访问修饰限定符 10. 继承方式…

《STL基础之vector、list、deque》

【vector、list、deque导读】vector、list、deque这三种序列式的容器,算是比较的基础容器,也是大家在日常开发中常用到的容器,因为底层用到的数据结构比较简单,笔者就将他们三者放到一起做下对比分析,介绍下基本用法&a…

Baklib在内容中台智能化推荐系统中的应用与未来发展路径分析

内容概要 在当今数字化快速发展的时代,内容分发的方式与技术日益重要。内容中台智能化推荐系统通过精细的数据分析与用户行为研究,能够有效提升内容分发的精准度与效率。本文旨在深入探讨Baklib的应用,分析其在内容中台中的技术优势及实际实…

Oracle Primavera P6 最新版 v24.12 更新 2/2

目录 一. 引言 二. P6 EPPM 更新内容 1. 用户管理改进 2. 更轻松地标准化用户设置 3. 摘要栏标签汇总数据字段 4. 将里程碑和剩余最早开始日期拖到甘特图上 5. 轻松访问审计数据 6. 粘贴数据时排除安全代码 7. 改进了状态更新卡片视图中的筛选功能 8. 直接从活动电子…

DeepSeek横空出世,AI格局或将改写?

引言 这几天,国产AI大模型DeepSeek R1,一飞冲天,在全球AI圈持续引爆热度,DeepSeek R1 已经是世界上最先进的 AI 模型之一,可与 OpenAI 的新 o1 和 Meta 的 Llama AI 模型相媲美。 DeepSeek-V3模型发布后,在…

Python-基于PyQt5,wordcloud,pillow,numpy,os,sys等的智能词云生成器(最终版)

前言:日常生活中,我们有时后就会遇见这样的情形:我们需要将给定的数据进行可视化处理,同时保证呈现比较良好的量化效果。这时候我们可能就会用到词云图。词云图(Word cloud)又称文字云,是一种文本数据的图片视觉表达方式,一般是由词汇组成类似云的图形,用于展示大量文…

对比DeepSeek、ChatGPT和Kimi的学术写作中搜集参考文献能力

参考文献 列出引用过的文献,按引用顺序排列,并确保格式规范。只列举确实阅读过的文献,包括书籍、期刊文章等,以便读者进一步查阅相关资料。也可以利用endnotes和zotero等文献管理工具插入文献。由于ChatGPT4无法联网进行检索&…

C语言:输入正整数链表并选择删除任意结点

输入正整数链表并选择删除任意结点 在本博客中,我们将逐步解析一个C语言程序,该程序实现了以下功能: 创建一个正整数链表,以负数作为输入结束标志。 打印链表的内容。 删除链表中指定的节点。 再次打印链表以验证删除操作。 代码功能概述 创建链表:通过用户输入正整数,以…