pdf ISO 32000-1的第7.5.5节说
PDF文件的预告片使符合本标准的阅读器能够快速找到交叉引用表格 特殊物品。合规读者应从其末尾阅读PDF文件。文件的最后一行应包含 只有文件结束标记,%% EOF。前两行应包含,每行一个,按顺序, 关键字startxref和从文件开头到开头的解码流中的字节偏移量 最后一个交叉引用部分中的xref关键字。 startxref行前面应有预告片 字典,由关键字预告片组成,后跟一系列以双角括起来的键值对 括号(<<>>)(使用LESS-THAN SIGNs(3Ch)和GREATER-THAN SIGNs(3Eh))。
但我发现this pdf文件不符合此规则,但可以通过pdfviewer打开而不会有任何问题。具体来说,此文件的最后5行是
trailer
<</Size 352/ID[<9257C760F49955A23047D72C37914E79> <82F1302E14912449A9BB43536F853CD6>]>>
startxref
116
%%EOF
显然这个预告片字典不正确,因为标准说这个字典必须包含一个以Root
为键的条目,而这个预告片没有。然后我发现偏移116指向另一个外部参照表,它几乎位于文件的开头,后跟另一个确实包含Root entry
的预告片。
xref
352 24
0000000016 00000 n
0000001914 00000 n
0000001980 00000 n
0000002147 00000 n
... ...
trailer
<</Size 376/Root 353 0 R/Info 351 0 R/ID[<9257C760F49955A23047D72C37914E79><82F1302E14912449A9BB43536F853CD6>]/Prev 4183097>>
答案 0 :(得分:1)
您描述的内容看起来像线性化的PDF。因此,您已经参考了PDF规范,因此您还应该查看附件F(规范性)线性化PDF ,特别是 F.3.11主要交叉引用和预告片(第11部分:
主要预告片没有上一个条目,不得包含尺寸以外的任何条目。
因此,至少对于线性化的PDF,预告片不需要具有您正在寻找的条目。严格来说,样本文件的最终预告片实际上存在不同的错误:它包含 ID 条目,尽管要求不包含大小以外的任何条目强> 的
在F.3.1中,您将找到线性化PDF结束的示例:
trailer
<< /Size 43>>% Trailer need not contain other entries; in particular,
% it should not have a Prev entry
% Offset of first-page cross-reference table (part 3)
startxref
257
%%EOF