符合规范的最小PDF大小
我正在阅读PDF规范,我对它的结构有一些疑问 首先,文件签名是符合规范的最小PDF大小,pdf,binaryfiles,file-structure,Pdf,Binaryfiles,File Structure,我正在阅读PDF规范,我对它的结构有一些疑问 首先,文件签名是%PDF-n.m(8字节)。 之后,文档说可能至少有4个字节的二进制数据(但也可能没有)。文档没有说明可以有多少二进制字节,所以这是我的第一个问题。如果我试图解析PDF文件,我应该如何解析该部分?我怎么知道有多少二进制字节(如果有的话)放在那里?我应该在哪里停止解析 之后,应该有一个主体、一个外部参照表和一个尾部以及一个%%EOF 假设PDF文件中没有任何内容(没有任何对象),并且假设文件开头不包含可选的二进制字节部分,那么PDF的最
%PDF-n.m
(8字节)。
之后,文档说可能至少有4个字节的二进制数据(但也可能没有)。文档没有说明可以有多少二进制字节,所以这是我的第一个问题。如果我试图解析PDF文件,我应该如何解析该部分?我怎么知道有多少二进制字节(如果有的话)放在那里?我应该在哪里停止解析
之后,应该有一个主体、一个外部参照表和一个尾部以及一个%%EOF
假设PDF文件中没有任何内容(没有任何对象),并且假设文件开头不包含可选的二进制字节部分,那么PDF的最小文件大小是多少
第三个也是最后一个问题:如果有多个主体+外部参照+拖车部分,那么在%%EOF
指向之前偏移到哪里?第一个还是最后一个xref
表
首先,文件签名是%PDF-n.m(8字节)。之后,文档说可能至少有4个字节的二进制数据(但也可能没有)。文档没有说明可以有多少二进制字节,所以这是我的第一个问题。如果我试图解析PDF文件,我应该如何解析该部分?我怎么知道有多少二进制字节(如果有的话)放在那里?我应该在哪里停止解析
你有哪些文件?PDF规范说明:
如果PDF文件包含二进制数据,与大多数文件一样(见7.2“词汇约定”),则标题行应为
紧接着是一个注释行,该行至少包含四个二进制字符,即
代码为128或更大
因此,这些至少4字节的二进制数据不会紧跟在没有任何结构的文件签名之后,而是在注释行上!这意味着它们是
%
(它开始一条注释,即在解析时必须忽略的数据)和- 你从只有一个交叉参考部分的PDF开始李>
- 您附加了一个增量更新,其交叉引用部分与之前一样指向原始交叉引用,并且
之前的新偏移量指向该新交叉引用李>%%EOF
- 您附加了另一个增量更新,其中的交叉引用部分指向上一次更新中的交叉引用,并且
之前的新偏移量指向该最新的交叉引用李>%%EOF
- 等等
%%EOF
之前的偏移量指向初始交叉引用,而初始交叉引用又像前面一样指向文件末尾的部分。有关详细信息,请参见附录F
当然,您可以对线性化文档应用增量更新,因此可以使用混合形式
一般来说,解析器最好能够解析任意顺序的部分交叉引用。别忘了,不仅有交叉参考部分,还有交叉参考流
首先,文件签名是%PDF-n.m(8字节)。之后,文档说可能至少有4个字节的二进制数据(但也可能没有)。文档没有说明可以有多少二进制字节,所以这是我的第一个问题。如果我试图解析PDF文件,我应该如何解析该部分?我怎么知道有多少二进制字节(如果有的话)放在那里?我应该在哪里停止解析
你有哪些文件?PDF规范说明:
如果PDF文件包含二进制数据,与大多数文件一样(见7.2“词汇约定”),则标题行应为
紧接着是一个注释行,该行至少包含四个二进制字符,即
代码为128或更大
因此,这些至少4字节的二进制数据不会紧跟在没有任何结构的文件签名之后,而是在注释行上!这意味着它们是
%
(它开始一条注释,即在解析时必须忽略的数据)和