从PDF1.5开始,参照信息被存储在参照流中而不是参照表中。参照流提高以下优势:
更简洁紧凑的表示参照信息。
可以访问存储在对象流中的压缩对象(参看3.4.6部分,“对象流”),并允许以后加入新
的参照选项类型。
但是也提高了一定的解析数据的难度,下面我将对PDF参照流进行分析:
读取一个sample.pdf(获取start xref地址获取firt-page cross-reference)
35 0 obj
<</DecodeParms<</Columns 4/Predictor 12>>/Filter/FlateDecode/ID[<D0D1F903C5032042884E61B2933652DA><F929944EC68A3543A18A40F2E7630A9D>]/Index[24 23]/Info 23 0 R/Length 61/Prev 12284/Root 25 0 R/Size 47/Type/XRef/W[1 2 1]>>stream
h辀bd``b`?M 恅?,驛,%怐愢?$轎0012?
endstream
endobj
先来分析下数据:
35 0 :代表对象号为35,0为生成号,有什么不懂可以去查下PDF reference
Filter :代表过滤器类别,这里是 FlateDecode,我们可以使用zlib的inflate来完成解压
DecodeParms:这个主要代表是解码参数,colunms代表每行样例数,Predictor为使用png filterÿ