2017-03-08 46 views
0

节到pdf ISO 32000-1 7.5.5说为什么拖车在此pdf不符合PDF标准?

一个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指向另一个xref表,该表几乎位于文件的开始处,然后是另一个确实包含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

你想要的东西不是更具体的“使用该软件生成也不会产生100%兼容PDF文件” ? – Phylogenesis

回答

0

你所描述的看起来像一个线性化的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