PDFBOX详细介绍(整理)(一).pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PDF 和Java 技术(PDFBox) 2008-07-17 08:29:44| 分类:java(B/S) |字号订阅 原文标题:Making PDFs Portable: Integrating PDF and Java Technology 原文日期:2005 年3 月24 日 原文作者:Ben Litchfield 摘要 自从Adobe 公司1993 年第一次发布公共PDF 参考以来,支持各种语言和平台的PDF 工具和类库就 如雨后春笋般涌现。然而,Java 应用开发中Adobe 技术的支持相对滞后了。 自从Adobe 公司1993 年第一次发布公共PDF 参考以来,支持各种语言和平台的PDF 工具和类库就 如雨后春笋般涌现。然而,Java 应用开发中Adobe 技术的支持相对滞后了。这是个奇怪的现象,因为 PDF 文档是企业信息系统存储和交换信息的大势所趋,而Java 技术特别适合这种应用。然而,Java 开发 人员似乎直到最近才获得成熟可用的PDF 支持。 PDFBox (一个BSD 许可下的源码开放项目)是一个为开发人员读取和创建PDF 文档而准备的纯 Java 类库。它提供如下特性: • 提取文本,包括Unicode 字符。 • 和Jakarta Lucene 等文本搜索引擎的整合过程十分简单。 • 加密/解密PDF 文档。 • 从PDF 和XFDF 格式中导入或导出表单数据。 • 向已有PDF 文档中追加内容。 • 将一个PDF 文档切分为多个文档。 • 覆盖PDF 文档。 1 PDFBox API PDFBox 设计时采用面向对象的方式来描述PDF 文档。PDF 文档的数据是一系列基本对象的集合: 数组,布尔型,字典,数字,字符串和二进制流。PDFBox 在org.pdfbox.cos 包(COS 模型)中定义这些基 本对象类型。你可以使用这些对象与PDF 文档进行任何交互,但你应该先对PDF 文档内部结构以及高 层概念作一些深入的了解。例如,页面和字体都是带有特殊属性的字典对象;PDF 参考手册提供这些特 殊属性的含义和类型的说明,但这是一个枯燥的文档查阅过程。 于是,org.pdfbox.pdfmodel 包(PD 模型)应运而生,它的基础是COS 模型,但提供了以一种熟悉的方 式访问PDF 文档对象的高层API (如图1)。对底层COS 模型进行了封装的PDPage 和PDFont 等类就 在这个包中。 注意,虽然PD 模型提供了一些优秀的功能,但它依然是一个开发中的模型。在有些实例中,你可能需 要借助于COS 模型才能访问PDF 的特定功能性。所有的PD 模型对象都提供返回相应的COS 模型对 象的方法。所以,在一般情况下,你都会使用PD 模型,但PD 模型鞭长莫及时你可以直接操作底层的 COS 模型。 上文对PDFBox 作了大体上的介绍,现在是举一些例子的时候了。我们从如何读已存在的PDF 文档 开始: 1. PDDocument document = 2. PDDocument.load( ./test.pdf ); 上面的语句解析指定的PDF 文件并在内存中创建其文档对象。考虑到处理大文档时的效率问题, PDFBox 只在内存中存储文档结构,图像、内嵌字体和页面内容等对象将被缓存在一个临时文件中。 注意:PDDocument 对象使用完毕时需要调用其close()方法来释放创建时使用的资源。 2 文本提取和Lucene 整合 这是一个信息展现时代(an information retrieval age),不管信息存放在哪种媒体中,应用程序都应该 支持检索和索引。对信息进行组织和分类从而形成可检索的格式是很关键的。这对于文本文档和HTML 文档来说是很简单的,但PDF 文档包含大量的结构和元信息,提取文档内容决不是一件简单的事情。 PDF 语言和Postscript 相似,二者中的对象都是作为矢量绘制在页面的某些位置。例如: 1. /Helv 12 Tf 2. 0 13.0847 Td 3. (Hello World) Tj 上面的指令将字体设为12 号的Helvetica,移到下一行然后打印“Hello World”。这些命令流通常是经 过压缩的,文字在屏幕上的显示顺序并不一定是文件中的字符出现顺序。因此,

文档评论(0)

number02 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档