【发布时间】:2016-04-25 12:36:01
【问题描述】:
我正在阅读 PDF 规范,但我对它的结构有一些疑问。
首先,文件签名是%PDF-n.m(8字节)。
在那之后,文档说可能有至少 4字节的二进制数据(但也可能没有)。文档没有说可能有多少二进制字节,所以这是我的第一个问题。如果我试图解析 PDF 文件,我应该如何解析那部分?我怎么知道放在那里的二进制字节(如果有的话)?我应该在哪里停止解析?
在那之后,应该有一个正文、一个外部参照表和一个预告片以及一个%%EOF。
假设 PDF 文件中根本没有任何内容(没有任何对象)并且假设文件开头不包含可选的二进制字节部分,那么 PDF 的最小文件大小可能是多少?
第三个也是最后一个问题:如果有多个 body+xref+trailer 部分,在 %%EOF 指向之前会偏移哪里?第一个还是最后一个xref 表?
【问题讨论】:
-
第二行不能是任意的“二进制数据”——它只是一个注释行。话虽如此:您可以将其解析为任何随机注释行。
-
@Jongware 不,据我在规范中看到的,这些实际上是 至少 4 个完全随机的字节。
-
不是完全随机的——它应该仍然是可解析的! Adobe 自己的指南(我的 iPad 上没有 ISO-32000)在 3.4.1 中说“包含至少四个二进制字符的注释行”。注意“评论”;想象你的第一个角色是一个LF! (他们还使用“二进制”作为字符代码 >128 的同义词:P 他们的明确意思是“设置了最高位”。)
-
@Jongware 啊,是的,我也是这么想的。无论如何,我怎么知道 PDF 有多少个二进制字符?我应该寻找任何“断点”吗?
-
哦...我刚刚意识到...值 > 128... 我应该只搜索值
标签: pdf binaryfiles file-structure