java itext解析pdf

    解析pdf的java开源包有itext、pdfbox、xpdf等。据说pdfbox对中文支持不好,xpdf是用命令行调用,还一堆七七八八的配置,没用过。itext一般来说是生成pdf比较容易,解析比较麻烦,效果感觉还是可以的。但是。
    标准pdf文件是根据pdf规范设计的。pdf文件中的文字、页面、页眉页脚、图、线等都是一个个对象。总的来说就是一个pdf对应一个文档,文档中有若干页,每页中有各自所包含的对象,比如说行,也比如说行中的文本。
    对象可以由操作符推断出,操作符后面紧跟该操作符所需的若干个操作数。一类很重要的操作数是位置坐标。itext返回的数据流顺序不一定是我们眼睛看pdf得到的顺序,但是位置坐标不会骗人,把坐标进行排序得到的才是正确的顺序。
    对需要处理的操作符或操作符对,定制处理方法,操作数对应为处理方法的参数。比如说把线[re、m/l、do](可能是长的也可能是很短的)一个个连起来,可能就组成了表格;文本也是,不是说一个数据流就是一段或者一行,可能是1个字,也可能是几个字,没有规律,根据需要组成段或者行。
    有些pdf用itext解析不出任何文本,也可能是pdf本身有问题,用abrocatreader也复制不出东西。
    总体来说感觉itext挺强大的,但是提供的功能不够全,比如不支持表格的抽取,需要自己定制方法识别。但是表格构成的线有些是很短的线组成的,拼接的时候误差较大。又比如像文本,只能得到文字和位置、字体字号等信息,要是能提供接口区分结构,那就更完美了。期待以后itext源码中会加入更多的功能。

猜你喜欢

转载自goofyan.iteye.com/blog/1982570