欢迎来到天天文库
浏览记录
ID:37712923
大小:32.32 KB
页数:8页
时间:2019-05-29
《PDFBOX详细介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PDF和Java技术(PDFBox) 2008-07-1708:29:44
2、 分类: java(B/S)
3、字号 订阅原文标题:MakingPDFsPortable:IntegratingPDFandJavaTechnology原文日期:2005年3月24日原文作者:BenLitchfield摘要 自从Adobe公司1993年第一次发布公共PDF参考以来,支持各种语言和平台的PDF工具和类库就如雨后春笋般涌现。然而,Java应用开发中Adobe技术的支持相对滞后了。 自从Adobe公司1993年第一次发布公共PDF参考以来,支持各种语言和平台的PDF工具和类库就如雨后春笋般涌现。然
4、而,Java应用开发中Adobe技术的支持相对滞后了。这是个奇怪的现象,因为PDF文档是企业信息系统存储和交换信息的大势所趋,而Java技术特别适合这种应用。然而,Java开发人员似乎直到最近才获得成熟可用的PDF支持。 PDFBox(一个BSD许可下的源码开放项目)是一个为开发人员读取和创建PDF文档而准备的纯Java类库。它提供如下特性:·提取文本,包括Unicode字符。·和JakartaLucene等文本搜索引擎的整合过程十分简单。·加密/解密PDF文档。·从PDF和XFDF格式中导入或导出表单数据。·向已有PDF文档中追加内容。·将一个PDF文档切分为多个文档。·覆盖PDF文
5、档。 PDFBoxAPI PDFBox设计时采用面向对象的方式来描述PDF文档。PDF文档的数据是一系列基本对象的集合:数组,布尔型,字典,数字,字符串和二进制流。PDFBox在org.pdfbox.cos包(COS模型)中定义这些基本对象类型。你可以使用这些对象与PDF文档进行任何交互,但你应该先对PDF文档内部结构以及高层概念作一些深入的了解。例如,页面和字体都是带有特殊属性的字典对象;PDF参考手册提供这些特殊属性的含义和类型的说明,但这是一个枯燥的文档查阅过程。 于是,org.pdfbox.pdfmodel包(PD模型)应运而生,它的基础是COS模型,但提供了以一种熟悉的方
6、式访问PDF文档对象的高层API(如图1)。对底层COS模型进行了封装的PDPage和PDFont等类就在这个包中。 注意,虽然PD模型提供了一些优秀的功能,但它依然是一个开发中的模型。在有些实例中,你可能需要借助于COS模型才能访问PDF的特定功能性。所有的PD模型对象都提供返回相应的COS模型对象的方法。所以,在一般情况下,你都会使用PD模型,但PD模型鞭长莫及时你可以直接操作底层的COS模型。 上文对PDFBox作了大体上的介绍,现在是举一些例子的时候了。我们从如何读已存在的PDF文档开始:1.PDDocumentdocument=2.PDDocument.load( "./t
7、est.pdf" ); 上面的语句解析指定的PDF文件并在内存中创建其文档对象。考虑到处理大文档时的效率问题,PDFBox只在内存中存储文档结构,图像、内嵌字体和页面内容等对象将被缓存在一个临时文件中。 注意:PDDocument对象使用完毕时需要调用其close()方法来释放创建时使用的资源。 文本提取和Lucene整合 这是一个信息展现时代(aninformationretrievalage),不管信息存放在哪种媒体中,应用程序都应该支持检索和索引。对信息进行组织和分类从而形成可检索的格式是很关键的。这对于文本文档和HTML文档来说是很简单的,但PDF文档包含大量的结构和元信
8、息,提取文档内容决不是一件简单的事情。PDF语言和Postscript相似,二者中的对象都是作为矢量绘制在页面的某些位置。例如:1./Helv12Tf2.013.0847Td3.(HelloWorld)Tj 上面的指令将字体设为12号的Helvetica,移到下一行然后打印“HelloWorld”。这些命令流通常是经过压缩的,文字在屏幕上的显示顺序并不一定是文件中的字符出现顺序。因此,你有时无法直接从原始PDF文档中提取字符串。然而,PDFBox成熟的文本提取算法使得开发人员可以提取文档内容,就像在阅读器中呈现的那样。 Lucene是ApacheJakarta项目的子项目,它是一个流
9、行的源代码开放的搜索引擎库。开发人员可以使用Lucene来创建索引,并基于该索引对大量的文本内容进行复杂的检索。Lucene只支持文本内容的检索,所以开发人员需要将其他形式的数据转换为文本形式才能使用Lucene。例如,MicrosoftWord和StarOffice文档都必须先转换为文本形式才能添加到Lucene索引中。 PDF文件也不例外,但PDFBox提供一个特殊的整合对象,这让在Lucene索引中包含PDF文档变得非常容易
此文档下载收益归作者所有