引自:https://blog.csdn.net/steve_cui/article/details/81981943


一般情况下,文件头,即,PDF文件的第一行,它用来定义PDF的版本,从而确定该PDF遵循的哪个版本的PDF规范。
PDF版本是向下兼容的,即高版本的规范,兼容低版本的规范。
目前我见过的版本有:
%PDF-1.0
%PDF-1.1
%PDF-1.2
%PDF-1.3
%PDF-1.4
%PDF-1.5
%PDF-1.6
%PDF-1.7(最常见)
%PDF-1.8(在标准文档里没有,只是遇到一些客户特殊的文件中会出现,非常少见)
以上都是常见的版本号,还有一个特殊的版本,如PDF/X、PDF/E 和 PDF/A,PDF/VT等,它们在PDF文件中表现为文件头版本+OutputIntent相结合来标识版本。
在Catalog字典中,存在Version属性,它的值也是PDF版本号,该版本号如果高与文件头版本号,则采用这里的版本号,否则忽略。这里的Version属性是可选的,通常是在PDF增量写的情况下用到。因为原PDF文件进过编辑后,添加或修改的内容需要遵循的版本比原本更高,而增量写的方式要求原PDF文件内容不修改,所以,通过修改catalog对象中Version,只要增量部分写入catalog对象,就可以改变PDF的版本号。

PDF文件头有些情况下,并不只保存了版本号,还可能在版本号前面加一下用户自定义的内容,用来满足用户的特殊需求。当遇到这种情况时,对文件头的读取算法就要写的灵活一点,不然取值会发生错误,同时还会影响到间接对象读取的问题

最新文章

  1. iOS阶段学习第32天笔记(页面传值方法介绍)
  2. jQuery与Struts2综合应用[stream/json]
  3. C#导出涉及行列合并的复杂的Excel数据
  4. Android xml text 预览属性
  5. [Git] Git 常用技巧
  6. 使用yum快速升级CentOS 6.5内核到 3.10.28
  7. PHP中将对数据库的操作,封装成一个工具类以及学会使用面向对象的方式进行编程
  8. 分布式EventBus的Socket实现 - 发布订阅
  9. ArcGIS 网络分析[4] 网络数据集深入浅出之连通性、网络数据集的属性及转弯要素
  10. [W班]第二次结对作业成绩评价
  11. 做了两年多salesforce平台开发,转Java的经历
  12. Socket编程实践(5) --TCP粘包问题与解决
  13. JAVA学习笔记 (okHttp3的用法)
  14. 【python小练】0012题
  15. 每月IT摘录201903
  16. 如何解决“504 Gateway Time-out”错误
  17. SQL Server T—SQL 学生选课数据库SQL语句考试题(45道题)
  18. Hadoop在启动时的坑——start-all.sh报错
  19. 动态规划模板1|LIS最长上升子序列
  20. Ubuntu下安装zookeeper

热门文章

  1. Binding a Xamarin.Forms WebView to ReactiveUI View Model using Custom Type Converters
  2. 洛谷P2659 美丽的序列
  3. JDK 下载相关资料
  4. 【大数据应用技术】作业十二|Hadoop综合大作业
  5. Spark2.x(五十九):yarn-cluster模式提交Spark任务,如何关闭client进程?
  6. C#中将xml文件反序列化为实例时采用基类还是派生类的问题
  7. mysql查询、子查询、连接查询
  8. 【LeetCode算法-28/35】Implement strStr()/Search Insert Position
  9. Linux下使用iptables配置防火墙端口转发
  10. 【环境搭建与软件安装】How to install CUDNN or uninstall