翻译版:一个 PDF 文件,在内部,大致分为四个部分:HeaderBodyCross-Reference TableTrailer. 标题应包含写入文件的 PDF 格式的版本号——PDF-1.7 是最新的,对应于 Acrobat 8​​;1.6 到 Acrobat 7 等等。版本号仅是 PDF 规范版本的一般指示;PDF 阅读器和处理器不一定依赖它来操作文件。Body 保存我们在屏幕上看到的 PDF 内容,例如文本、图像、绘图、书签、表格,包括以适当方式显示和使用内容的所有必要信息。Body的所有部分都被分成所谓的对象。例如,文档中的每个页面、使用的每种字体、每个图像等都有一个对象。page 对象与其他页面属性一起保存代表我们在屏幕上看到的页面的所有绘图命令。绘图命令引用正文中的其他对象,例如字体、图像等。这里要注意的一点是,许多页面可以引用一种字体或图像或其他资源。这也应该告诉我们,我们可以通过重用优化 PDF 中资源的使用,并生成更小的 PDF 文档。Trailer包含一些非常重要的 PDF 文档键,没有这些键,甚至无法阅读 PDF 文档。正如我们发现 Body 中的所有内容都保存在特定类型的对象中,并且这些对象是可重用的,如果它们不能随机访问,那么将内容存储在对象中就没有多大意义。PDF 文档格式是一种经过充分发展和深思熟虑的文档格式,它确保主体中对象的随机访问。随机访问是通过将每个对象的绝对字节偏移地址存储在称为交叉引用表(或外部参照表)的表中来实现的,Trailer包含的键之一是此外部参照表的起点。对此的实现细节是,对于在 PDF 文档中修改对象之后出现的所有对象,需要更新外部参照表中的偏移地址。当然有优化的机制来处理这种情况。

英文版:

A PDF file, internally, is broadly divided into four parts: the HeaderBodyCross-Reference Table and Trailer. The Header is expected to contain the version number of the PDF format that the file was written to – PDF-1.7 is the newest and corresponds to Acrobat 8; 1.6 to Acrobat 7 and so on. The version number is a general indication of the version of the PDF specification only; PDF readers and processors cannot necessarily rely on it to operate on the file. The Body holds the content of the PDF that we see on screen, such as text, images, drawings, bookmarks, forms, including all the necessary information to show and make use of the content in a proper way. All the parts of the Body are divided up into what are known as objects. For example, there’s an object for each page in the document, each font used, each image and so on. The page object holds, along with other page attributes, all the drawing commands that represent the page that we see on screen. The drawing commands reference other objects in the Body, such as fonts, images, etc. A point to note here is that many pages can reference to one font or image or other resource. This should also tell us that we can optimize use of resources in PDF through reuse and generate a much smaller PDF document. The Trailer contains some very important keys to the PDF document, without which no reading of the PDF document can even be possible. As we found out that all content in the Body is held in specialized types of objects, and that the objects are reusable, it would not make much sense to store the content in objects if they were not accessible randomly. The PDF document format is a quite well evolved and well thought out document format and it does take care of the random access of the objects in the Body. Random access is achieved by storing the absolute byte offset address of each object in a table known as the Cross-reference table (or XRef Table) and one of the keys that the Trailer contains is the starting point of this XRef table. The implementation detail to this is that the offset addresses in the XRef table needs to be updated for all objects that occur after the object that was modified in the PDF document. There are of course optimized mechanisms to handle this scenario.

随着 PDF 格式的发展,它获得了许多有用的特性和技术,使文件更紧凑、阅读速度更快,并支持一些标准的文档控制和验证技术。以下是对这些技术和技巧的选择的简短描述:

  • 压缩——从第一个版本开始,PDF 已经支持压缩,但仅限于压缩 Body 中对象的核心内容。PDF 文件的其余部分:对象的属性(在对象的开头),有时会变得非常大;预告片中的外部参照表保持完全未压缩。PDF 1.4(我希望我的确切版本号是正确的)也引入了对其余部分的压缩支持,这些部分在压缩时称为对象流和外部参照流。PDF 支持多种压缩算法,包括 Flate、LZW 等图像压缩算法。
  • 线性化——线性化是一种组织 PDF 文档的技术,它允许 PDF 查看者在将整个文件下载到系统之前查看 PDF。此功能也称为“快速 Web 查看”,它对于线性化大型 PDF 文档非常有用,尤其是在发布以供在 Web 上查看时。当我们在 Acrobat Reader 中打开文档时,我们可以通过检查文档属性对话框 (Ctrl+D) 中的“快速 Web 查看”属性来快速验证 PDF 文档是否已线性化。不久前,我们在本文中了解到 PDF 文档的处理从 Trailer 开始,Trailer 大部分位于文档的末尾:是的,对于非线性化的 PDF 文档来说也是如此。因此,对于我们可以在本文中讨论的这个主题的深度,
  • 增量更新 - 增量更新或增量写入是 PDF 中的另一种技术,其中无需重写或重建整个文档即可完成对文档的更新或更改。仅将更新和更改附加到现有文档并进行适当标记,以便 PDF 处理器参考新内容。在处理(更新或修改)大型 PDF 文档时,此技术非常有用并大大加快了整个过程。更重要的是,如果 PDF 处理器必须提供对数字签名功能的全面支持,那么这种技术对于支持 PDF 处理器是必不可少的。

既然我们对 PDF 格式有了很好的理解,我们也应该能够更好地理解对 PDF 文件执行操作的含义,但更重要的是,意识到处理 PDF 文档时的潜在可能性,这正是新的 Gnostice PDF 处理器,使软件开发人员能够利用 PDF 的力量。

[图解]PDF 格式概述(pdf structure)相关推荐

  1. 免费离线PDF工具箱,PDF工具大全,PDF合并PDF加密PDF解密PDF格式转换PDF分割PDF旋转以及从PDF中提取图片,满足对PDF操作的一切需求~完全免费无使用次数限制,文末附下载链接~

    一款 完全免费 的PDF工具箱,软件一共 内置45个和PDF文件操作相关的功能,无需注册登录 即可 免费使用,所有的功能都 不限制使用次数,你对PDF操作的大多数需求它都能满足!而且 所有操作均在本地 ...

  2. pdf打印机安装程序_CAD快速出打印PDF格式文件

    pdf最大的特点就是只能查看,不可编辑. 我们肯定不能够直接给到客户CAD源文件, 所以我们需要把CAD文件格式,转换成为PDF格式. PDF格式,比起CAD文件,能够更好的阅览 CAD是不能够直接生 ...

  3. ppt转换成pdf格式转换器怎么使用

    ppt转换成pdf格式转换器怎么使用 临近期末考试之时,各科老师都会将自己制作好的课件分发给大家,粗略一看每张文稿合起来少说也有几千张.一张一张翻阅起来太慢了,倘若将之转入pdf中,借助pdf良好的视 ...

  4. \t\t把超星图书虚拟打印为PDF格式,实现永久阅读

    把超星图书虚拟打印为PDF格式,实现永久阅读 超星图书是一个丰富的电子图书资源,一般大学图书馆购买了这个系统的账号即可登陆下载其所提供的所有图书.有些绝版图书都能找到.非常实用,首先感谢超星图书工作人 ...

  5. 怎么将CAD图纸转换为PDF格式?可以将PDF图纸在此转换为CAD格式图纸吗?

    怎么将CAD图纸转换为PDF格式,想必这也是不少接触CAD的小伙伴们学习的第一种CAD格式转换,这个是因为CAD图纸只能在那例如AutoCAD或迅捷CAD看图中打开,在其他的设备中时无法进行查看的,就 ...

  6. 图片怎么转换成pdf格式?其实图片转换为pdf很简单

    图片怎么转换成pdf格式?pdf作为我们日常生活中十分常见的一种格式之一,和我们的生活息息相关,我们在日常生活中无时无刻不在接触pdf格式.除了word文档转换为pdf文件之外,其实图片也是可以存放在 ...

  7. Android文本保存成PDF格式

    支持Android文本保存成PDF格式,Canvas画图保存JPG格式导出PDF格式,使用itextpdf-5.5.1.jar包 项目地址:http://download.csdn.net/downl ...

  8. 图解HTTP+彩色版 pdf版学习(更新中)

    图解HTTP+彩色版 pdf版学习 第一章 了解Web及网络基础 3.27 使用 HTTP 协议访问 Web 当我们在网页浏览器(Web browser)的地址栏中输入 URL时,Web 页面是如何呈 ...

  9. 数据预处理:自定义PDF格式批量转换TXT系统

    数据预处理:自定义文件格式转换系统 ( 白宁超 2018年8月29日15:36:24 ) 导读:随着大数据的快速发展,自然语言处理.数据挖掘.机器学习技术应用愈加广泛.针对大数据的预处理工作是一项庞杂 ...

最新文章

  1. mysql create table()_MySQL Create Table创建表
  2. HTML5 canvas处理图片的各种效果,包括放大缩小涂鸦等
  3. redis复制_Redis复制
  4. Java十大简单性能优化
  5. 加入阿里技术团队三年,哪些习惯让我在工作上持续受益?
  6. 第49课 大大大(纯小数变整数) 《小学生C++趣味编程》
  7. Linux启动管理:grub
  8. maya 阿诺德水晶材质_Maya教程之Arnold材质
  9. postek二次开发_POSTEK二次开发接口
  10. xamarin android界面框架,Xamarin图表开发基础教程(3)OxyPlot框架
  11. r语言中trifit怎么用_用R语言做非参数和半参数回归笔记
  12. 性能测试-Loadrunner脚本录制步骤
  13. 计算机平均分函数a,平均值计算函数Average、Averagea、AverageIfs、Trimmean
  14. 计算机禁止开机自启动,通过禁止开机启动项快速开机,提升电脑流畅度,拒绝自启...
  15. 计算机系统基础 大作业
  16. 一站式跨境电商免费开源ERP平台,简洁的操作,助您高效工作
  17. ZUI易入门Android之Git的使用(一)本地仓库
  18. 设计一款主动降噪(ANC)耳机
  19. UltraEdit-32 v13.20的注册码
  20. ContentPrivider

热门文章

  1. 东北大学OJ-1224: 实验4-6 :存款利息的计
  2. 特种光纤丨光谱分析仪用光纤
  3. 服务器系统2008R2安全模式,windows2008 r2怎么进安全方式
  4. uefi安装android x86,Android-x86 8.1 RC1发布 支持从UEFI系统引导和安装
  5. U盘数据丢失了怎么免费恢复教程-快速有效
  6. 基于SSH的百货中心供应链管理系统(附论文)
  7. 基于JAVA学院学生论坛计算机毕业设计源码+系统+数据库+lw文档+部署
  8. adf的主要功能之一是_ADF
  9. 基于51单片机的步进电机的控制
  10. det曲线_如何画说话人识别/确认的DET曲线?