使用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包,就不再需要其他的了。

使用PDFBox处理PDF文档 http://www.linuxidc.com/Linux/2014-06/103584.htm

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 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-06/103585.htm

转载于:https://www.cnblogs.com/Yiutto/articles/4716094.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab 数字图像滤波,数字图像处理 (基于Matlab) 滤波

《数字图像处理》实验报告一、实验目的(不少于200字)一、第一个实验用的是各种空间域的方式来滤波,也就是直接把图像和空间滤波器的模板做卷积,当然图像处理很重要的一个部分还有频域的处理。这就涉及到图像的傅里叶变换,通过将空域内的图像傅…

myelicpes怎么导入PHP项目,利用PHP执行SQL文件,将SQL文件导入到数据库

引用如何利用php自动执行 sql文件。其实很简单,就是获取sql文件中的内容,然后将每一句sql语句一次执行就行啦。//读取文件内容$_sql file_get_contents(test.sql);$_arr explode(;, $_sql);$_mysqli new mysqli(DB_HOST,DB_USER,DB_PASS);if (mysqli_…

atitit. 分销系统规划p8k

atitit. 分销系统规划p8k 1. 商户平台管理 overview2 1.1. 分销业务管理2 1.2. 文案管理2 1.3. 订单管理3 1.4. 统计报表3 1.5. 财务结算3 1.6. 自身信息管理4 2. 商户后台详细5 3. 推广人后台6 3.1. 产品及文案6 3.2. 订单与结算6 3.3. 下线邀请与奖励6 3.4. 订单统计6 3.5. 资…

php数据访问层设计,php - Zend框架数据访问层(DAL) - 堆栈内存溢出

好吧,在处理Data Access Layer ,您必须考虑的第一件事是该层还具有子层 ,在现代框架中很难找到名为“ dal”的文件夹(我以Zend为基础框架和Symfony)。其次,关于ActiveRecord ,您必须知道默认情况下Zend Frameworks 不会…

matlab 8.4,《DSP using MATLAB》Problem 8.42

代码:%% ------------------------------------------------------------------------%% Output Info about this m-filefprintf(‘\n***********************************************************\n‘);fprintf(‘ Problem 8.42 \n\n‘);banner();%% ------------…

lua的string.gsub初使用

今天在学习lua,熟悉项目代码的过程中,发现string.gsub好高级,所以在此mark下。 以下是lua5.1的官方文档介绍。 string.gsub (s, pattern, repl [, n])Returns a copy of s in which all occurrences of the pattern have been replaced by a …

php对象比较大小,PHP 面向对象:对象的比较

简明现代魔法 -> PHP服务器脚本 -> PHP 面向对象:对象的比较PHP 面向对象:对象的比较2010-04-07在PHP中有 赋值符号、 等于符号 和 全等于符号, 这些符号代表什么意思?当使用比较操作符()时,对象以一种很简单的规则比较&a…

mysql 备份

方法一: 1,暂停Mysql进程或服务 2,复制mysql\data文件夹 3,重新安装程序和mysql, 把 ibdata1及数据库文件夹copy到新目录 4,重启服务 方法二 数据导出:mysqldump -u数据库用户名 -p 要导出的数据库> otc…

php程序变量,PHP 变量

PHP 变量变量是用于存储信息的"容器":实例$x5;$y6;$z$x$y;echo $z;?>运行实例 与代数类似x5y6zxy在代数中,我们使用字母(如 x),并给它赋值(如 5)。从上面的表达式 zxy ,我们可以计算出 z 的值为 11。在 PHP 中&…

为什么构造函数不能是虚函数

为什么构造函数不能是虚函数 从存储空间角度看,使用虚函数时,系统要有一定的空间开销,当一个类带有虚函数时,编译系统会为该类构造一个虚函数表(virtual function table),他是一个指针数组&…

漏洞:WebRTC 泄漏用户IP

WebRTC又称为“网页即时通信”,是一组API函数,它经过W3C组织的认证,支持浏览器之间的语音通话、视频聊天和P2P模式分享文件。 这个协议主要包括:getUserMedia,RTCPeerConnection,RTCDataChannels&…

怎么在电脑安装php文件夹在哪个文件夹,php进行文件上传时找不到临时文件夹怎么办,电脑自动保存的文件在哪里...

php进行文件上传时找不到临时文件夹怎么办PHP上传文件时找不到临时文件夹怎么办,php上传文件时找不到临时文件夹的解决方案:先打开php.ini配置文件;然后修改内容[upload _ tmp _ dir’ c :/windows/temp ‘],文件夹路径要根据自己…

【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术。...

【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术 作者:西川善司日文链接 http://www.4gamer.net/games/202/G020288/20150811091/计算机图形和交互技术的学术大会【SIGGRAPH 2015】,在北美时间的8月9日到13日召…

php边框圆角,css3圆角和圆角边框使用方法总结

在CSS3出现之前,想要实现圆角的效果可以通过图片或者用margin属性实现,传统的圆角生成方案,需要多张图片作为背景图案。CSS3出现以后,就不需要浪费时间去制作多张图片了,大大的减少了工作量,提高了网页的性…

php中二进制函数,PHP-----函数和二进制

递归-----函数本身调用本身。每一个栈中的变量都是独立的,不受外部变量的影响,除非传参。这一点和Js不一样。在一个php页面中要引用其他的php文件可以使用require,require_once或者include,include_once;require引入的文件如果不存…

关于指针和堆栈

转载:http://blog.qdac.cc/?p2804 【码神】[长春]swish(109867294) 21:17:40 这块要明白一个东西,我们程序所能操作的数据,从CPU的角度来看,只是在寄存器中的那几个东西。剩下的内存中的东西,磁盘上的东西&#xff0c…

php 文件类型 html,HTML的文档类型怎么选择

声明帮助浏览器正确地显示网页。声明(推荐学习:HTML入门教程)Web 世界中存在许多不同的文档。只有了解文档的类型,浏览器才能正确地显示文档。HTML 也有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全正确…

HDOJ 2037 今年暑假不AC 【贪心】

HDOJ 2037 今年暑假不AC 【贪心】 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid2037 给出n个电视节目的开始时间和结束时间, 要求合理安排如果看这些节目可以完整的看完更多节目 策略是观看的节目的长度越短越好,也即节目越早结束我越想看它。…

php 邮件发送验证码,发送验证码邮件有什么好的解决方案?

用户Passport系统,注册,找回密码都是通过邮件发送验证码,有什么好的方案实现。我之前用的是私人的QQ邮箱,发现偶尔系统会来一封邮件要我输入验证码,而且就怕用多了会被腾讯拉黑或者自动移到垃圾箱处理。还有就是什么情…