PDF参照流分析

PDF1.5中,参照信息存储在参照流而非参照表,提供更紧凑的表示和对压缩对象的访问。本文将分析PDF参照流,包括对象号、生成号、过滤器类别(如FlateDecode)、解码参数及其含义,如Columns和Predictor,并讨论如何应用解压算法进行数据解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从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,其实还涉及两个参数:BitsPerComponent 默认值为8 Colors 默认值为1

W:表示数据域分别为 1个字节 2个字节和一个字节

现在针对上面数据进行分析:如果熟悉png解析的人,很容易理解下面的算法:

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值