ODFDOM for Java:简化文档及其数据的程序控制

本文介绍如何使用ODFDOM库在Java中处理OpenDocument格式,包括读写文档、设置样式和创建表格。ODFDOM提供API简化了内容插入、样式设置和文档保存的过程。通过示例代码,展示了从XML文件读取数据并输出到ODF文档的流程,以及创建电子表格和演示文稿的方法。
摘要由CSDN通过智能技术生成

近期要考虑构建一个支持openDocument的文档结构,就像ms-office的07+,是为了能在linux服务器上可自动生成支持office07的文档简报。以前每次都是根本模板纯手工去制作基于两种xml格式的office,以至于对xml的规范跟schema被熟练,但java对xpath的不完美支持完美的体现在了这类xml中,所以只能手工去写工具函数予以支持,但读写起来还是很不爽!

大家都知道它的openDocument结构,一直想着会有开源的分析、工具支持等等,不一定有for java我也能接受,一直没时间去寻找,找着了

http://www.ibm.com/developerworks/cn/lotus/symphony-odfdom-pt2/index.html这篇文章,对ODF的定制概念有了一定的了解,代码示例在第三部分,此文仅记录对这方面的思路,有备无患。

 

本人整理的参考资料来自

分类 http://swik.net/office+Java

 

simple~code-base https://hg.odftoolkit.org/hg/simple~code-base

 

Simple Java API for ODF http://simple.odftoolkit.org/downloads.html

 

The Apache Xerces Project http://xerces.apache.org/mirrors.cgi

 

 

首先,我们简要描述一下 ODF 文档结构。ODF 文档保存在一个 ZIP 压缩包中,它包含 content.xml、style.xml 及其他若干文档。

Content.xml 用来保存文档内容,style.xml 用来保存文档样式信息。content.xml 文件也含有一些样式信息,可以用来自动创建一些默认值,如字体和颜色。

一般来说,操作一个 ODF 文档分四步:

  1. 加载已有 ODF 文档或创建 ODF 文档。
  2. 向 ODF 文档插入内容。
  3. 为信息的不同部分设置样式。
  4. 保存文档。

ODFDOM 现在提供一些 API,借助它们,可以轻松完成这四步主要操作。

在本小节中,我们将演示一个简单用例:读取一个 XML 文件并输出到 ODF 文档。

作为文本文件,content.xml 层级如下(见清单 1):

  • 第一个元素是 <office:body>,它是文档根目录的子元素。
  • 下一级是 <office:text> 元素,它表示所有要保存在输出文档中的文档元素。
  • 在 <office:body> 之前的 <office:automatic-styles> 是文档根目录的另一个子元素,用于保存元素的各种样式信息。


<office:document-content>
    <office:automatic-style/>
      <office:body>
         <office:text/>
      </office:body>
</ office:document-content>
				

 

此处,<office:style> 和 <office:automatic-styles> 都定义了一些样式,但有些区别。<office:style> 通常用来定义常用样式。一般通过设置样式名称来应用 <office:style> 中定义的样式。从 ODF 编辑器的角度来看,<office:style> 中定义的样式是由用户定义的一组特征值。

另一方面,<office:automatic-styles> 中定义的样式包含一些特别的样式属性。从 ODF 编辑器的角度看,它用于编辑对象的某些属性。

ODFDOM 提供对象来表示各种文档的 ODF 包:

  • OdfTextDocument textDocument:对应于一个文本文件(odt)对象。
  • OdfFileDom contentDom:对应于 content.xml 的 XML 文档对象。
  • OdfFileDom stylesDom:对应于 styles.xml 的 XML 文档对象。

文本文件对象可以使用 API 来获取内容对象(content.xml)和样式对象(styles.xml):

  • OdfFileDom contentDom = textDocument.getContentDom()
  • OdfFileDom stylesDom = textDocument.getStylesDom()

ODFDOM 还提供多个对象来表示各种内容和样式元素:

  • OdfOfficeAutomaticStyles contentAutoStyles:对应 content.xml 中 <office:automatic-styles>。
  • OdfOfficeStyles stylesOfficeStyles:对应 styles.xml 中 <office:styles>。
  • OdfOfficeText officeText:对应 content.xml 中 <office:text>。

用 ODFDOM API 获取内容元素对象和文本元素对象也很容易:

  • OdfOfficeAutomaticStyles autoStyles = textDocument.getContentDom (). GetAutomaticStyles ()
  • OdfOfficeStyles styles = textDocument.getDocumentStyles ();
  • OdfOfficeText text = (OfficeText) textDocument.getContentRoot ();

ODFDOM 还提供一个 API 来对 ODF 文档进行文件级操作,例如ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值