linux 解析pdf,使用PDFBox解析PDF文件

今天在Nutch源码中准备增加一个PDF处理方面的功能,其中要做的一步是提取出PDF文档中的文本信息。考虑了一下,还是准备使用PDFBox。看了一下,Nutch源码中的parse-tika插件下有一个PDFBox,不过是1.1.0版本,很多PDF文档都处理不了。现在官网上最新的版本已经是1.6.0了,于是准备替换一下。由于自己不喜欢看英文说明,在弄的时候倒是费了一番周折。

我一开始只下载了pdfbox-1.6.0.jar,替换了老版本的jar包,程序报错。无奈之下,仔细看了一下官方文档。PDFBox的官网(http://pdfbox.apache.org/)上的depandencies一栏中明确指出了使用PDFBox所需的组件及其关联。PDFBox共有三个主要组件,除了上面的pdfbox-1.6.0.jar,还有fontbox-1.6.0.jar与jempbox-1.6.0.jar,此外还需要一个日志处理的commons-logging组件。对于日志组件,Nutch中本来就有,是commons-logging-1.0.4.jar和

commons-logging-api-1.0.4.jar,如果你在自己的应用程序中使用PDFBox,就需要上面这五个jar包(日志组件是两个jar包)。

当然,官网上为了方便用户使用,还提供了一个集成的jar包:pdfbox-app-1.6.0.jar,如果使用该jar包,就不再需要其他的了。

OK,一切就绪后,就开始提取文本信息。提取文本信息的代码比较简单,网上也有许多。示例如下:

PDDocument doc = PDDocument.load("D:/331.pdf");

PDFTextStripper stripper = new PDFTextStripper();

String text = stripper.getText(doc);

String title = stripper.getTitle(doc);

这是从本地读取pdf文件,如果是从网络上,你首先会得到文件的一个InputStream对象(假设名为stream),代码如下:

PDDocument doc = new PDDocument();

PDFParser parser = new PDFParser(stream);

parser.parse();

doc = parser.getPDDocument();

PDFTextStripper stripper = new PDFTextStripper();

String text = stripper.getText(doc);

String title = stripper.getTitle(doc);

但要说明;

(1)    PDFBox对某些格式的pdf文件是提取不出来的,但大部分都可以。

(2)    PDFTextStripper尝试提取出更多的信息,比如标题,摘要等;但不要过多指望该类,只有那些规范的PDF文档(论文那种),才可以提取出来。其余的要么是null,要么是错误的。

PDFBox还有很多其他的功能,比如试着解码等,如果需要,就去研究API吧……

PDFBox 的详细介绍:请点这里

PDFBox 的下载地址:请点这里

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值