E N D
中华人民共和国 党代会
uuuuuuuu • 整理示例代码 • 不得不说,DocumentConverter.java真不能算是段优秀的示例代码。首先,它并没有很好地起到示范的作用。我理想中的示例代码应 该能够清晰地说明工作的方式和步骤,而不会添加太多额外的内容。这段示例代码的效果是“转化指定目录中的所有文件”,还用到了递归。再加上它没有 import任何类型,每个类型在使用时都拖着长长的“com.sun.star”,这让原本就十分冗余的Java代码变得更为难以理解。更别说注释与代 码本身的冲突,还有多余的类型强制转换等问题。为此,我根据文档说明,重新改写了一下示例代码,将整个过程拆分为多个步骤。 • 首先,我们打开并连接一个OOo程序,这需要创建一个XComponentContext对象: • private static XComponentContext createContext() throws Exception { // get the remote office component context return Bootstrap.bootstrap(); } 然后创建一个XComponentLoader对象: • private static XComponentLoader createLoader(XComponentContext context) throws Exception { // get the remote
使用OpenOffice.org将各类文档转为PDF • 使用OpenOffice.org将各类文档转为PDF • 2010-05-27 04:37 by 老赵, 9194 visits 最近在项目中遇到一个需求,是要将各类文档转换为PDF。这应该是个很常见的工作,而且我也只需要支持MS Word,Excel,PowerPoint等常见的文档格式就行了。于是有朋友就建议了,可以使用MS Office转嘛。当然也可以使用其他方法,例如装一些PDF打印机,把文档打印成pdf文件。不过这些做法在“授权”方面似乎都有些问题。当然,我也找 了一些商业解决方案(如Aspose)保底,咋看之下它的授权方式也并不算贵。不过现在看来,OpenOffice.org已经能够满足我的需求了。如果您有更好的做法也请告诉我。 • OpenOffice.org是个开源的办公套件,提供了与MS Word,Excel,PowerPoint等对应的多个软件,在很多时候倒也足够使用。更重要的是,它支持包括MS Office 2007在内的多种格式,并且能够将其导出为PDF文件,再加上它的授权方式是LGPL,在生产环境里使用自然也不会有什么明显的限制了。此外,OOo本身也有相当多的开发文档,我对完成这个工作还是很有信心的——但我没想到的是,这过程还真不如想象中那么顺利。 • 编译通过也不容易 • 首先,我安装了OpenOffice.org主程序以及SDK。SDK随带一些示例代码,其中DocumentHandling部分正 好包含一个我需要的DocumentConverter功能。于是我打开Eclipse,倒入这个文件,很显然会出现无数错误提示:还没有引入合适的类库 嘛。那么我该引用哪些jar包呢?根据其他一些搜索到的零碎的资料提示,我该引入的是一些放在~\Basis\program\classes下的几个 jar包,比如unoil.jar、juh.jar……等等,这个包在什么地方?事实上,我在这么目录下唯独只找到unoil.jar这个独苗。莫名之 余,我一股脑的将目录中的30多个jar包全部引入,可是错误依旧。 • 我就蒙了,在搜索引擎里不断地用juh.jar相关的关键字进行查询,希望可以找到一些提示,一无所获。然后我动用了系统中的文件搜索, 在~/Basis目录中查找*.jar,还是没有发现juh.jar的踪影。于是我很沮丧,怎么第一步也这么不顺利。直到大约过了一个小时后,我才无意间 在~\URE\java目录下发现了那几个关键的jar包。引入后我长吁一口气:示例代码终于编译通过了。概括来说,如果需要让 DocumentConverter.java编译通过,需要引入一下三个jar包: • ~\URE\java\juh.jar • ~\URE\java\jurt.jar • ~\Basis\program\classes\unoil.jar • 真是痛恨文档和实际现象不符的情况,消耗时间不说,心情也变糟糕了。 • UnoRuntime.queryInterface(XStorable.class, doc); // Storing and converting the document storable.storeAsURL(outputUrl, propertyValues); } 最后还要关闭文档: