`
897371388
  • 浏览: 529548 次
文章分类
社区版块
存档分类
最新评论

仿百度文库解决方案(二)-OpenOffice。org简介和安装

 
阅读更多

在文档的转换过程中需要使用的到OpenOffice.org 软件,使用openoffice 的converter方法把文档转换成pdf格式。在这里来了解一下OpenOffice.org 软件。

OpenOffice.org 简介:

OpenOffice.org 是一套跨平台的办公室软件套件,能在 Windows、Linux、MacOS X (X11)、和 Solaris 等操作系统上执行。它与各个主要的办公室软件套件兼容。OpenOffice.org 是自由软件,任何人都可以免费下载、使用、及推广它。

现在的最新版本为OpenOffice.org3.4,下载地址为:http://www.openoffice.org/download/

本文用到的是OpenOffice2.2.2版本下载地址:http://www.skycn.com/soft/3251.html

OpenOffice的使用 :

在调用OpenOffice.org的converter的方法之前,我们必须开启OpenOffice 的服务器,这个主要讲三种开启服务的方法,第一种:以命令方式开启openoffice的服务,第二种: 系统开启 openoffice的服务。 第三种:通过java代码开启或者关闭openoffice服务

第一种: 以命令的方式开启openoffice的服务

在cmd命令下,cd opeonofiice的安装路径/program 如:cd c:\program files\openoffice.org 3\program soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

第二种 :系统开启openoffice的服务

在系统开启openoffice的服务我们还需要一个Windows Resource Kit tools ,将openoffice server设为系统服务。Windows Resource Kit tools 是微软专为管理人员、开发人员和高级用户开发的,包括管理活动目录、组策略、TCP/IP网络、注册表、系统安全、监测等涉及Windows Server 2003 操作系统的其它很多方面的非常规安装的工具组件。Resource Kit Tools for XP的发布使得XP用户也能使用Resource Kit Tools对这些问题进行处理。

下载windows resource kit tools,我们进行默认安装。

1.打开Windows Resource Kit Tools

在Command Shell执行以下命令:

"C:\Program Files\Windows Resource Kits\Tools\instsrv" OpenOfficeUnoServer "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"

打开 管理工具->服务 可以找到以 OpenOfficeUnoServer 命名的服务

2.打开注册表寻找以下路径

HKEY_LOCAL_MACHINE -> SYSTEM ->ControlSet001 ->Services ->OpenOfficeUnoServer

 新建项 Parameters,在该项下添加两个字符串值:

  key:Application

value:C:\Program Files\OpenOffice.org 3\program\soffice.exe

key:AppParameters

value:-invisible -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard

3.在服务控制台,启动 openoffice 服务

4.在CMD中用以下命令查看8100是否已被监听:netstat -anop tcp

这样OpenOffice3.0就以服务方式运行在Windows系统上了。(使用cmd命令:netstat -anp tcp查看8100端口是否工作)

然後可以通过socket方式连接openOffice,以使用openoffice提供的某些服务,如文件转换服务,ms office转pdf等等。

开源项目 JODConverter 就是结合openoffice来进行文档转换的java组件。

另外有一个命令行工具swftools,该工具可以将pdf转换为swf格式的文档,提供给ie客戶端流览。

  另外,我们可以将该配置用bat文件来快速实现,运行前请先修改相应目录参数:

openoffice service.bat文件

"C:\Program Files\Windows Resource Kits\Tools\instsrv" OpenOfficeUnoServer "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"
reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters /ve /d
reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters /v Application /t REG_SZ /d "C:\Program Files\OpenOffice.org 3\program\soffice.exe"
reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters /v AppParameters /t REG_SZ /d "-invisible -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard"

关于这两种的方法我都是从网上搜集到的,在使用的过程中经常无法正常的启用。或许因为我看到有个dos和系统的注册表就晕的问题了。可是总体来说在文档的转换过程之前我们必须开启OpenOpenoffice的服务,不然无法进行正常的转换,会在控制台报出让人反感的异常。这样看起来很麻烦,个人不太喜欢这个方式,所以有了第三种方案。通过java代码开启服务,这个方法主要是在进行转换文档时自动开启OpenOpenoffice的服务,转换完成后自动关闭。虽然这样或许有些问题,可是个人感觉比较实用点。

第三种方案: java代码开启服务

java代码开启服务主要的是在转换文档的过程中每次转换之前先进行startserveice ,执行转换,stopservice。主要的代码如下 :

public static void startService() {
		DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
		try {
			System.out.println("准备启动服务....");
			configuration.setOfficeHome(OFFICE_HOME);// 设置OpenOffice.org安装目录
			configuration.setPortNumbers(port); // 设置转换端口,默认为8100
			configuration.setTaskExecutionTimeout(1000 * 60 * 5L);// 设置任务执行超时为5分钟
			configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);// 设置任务队列超时为24小时

			officeManager = configuration.buildOfficeManager();
			officeManager.start(); // 启动服务
			System.out.println("office转换服务启动成功!");
		} catch (Exception ce) {
			System.out.println("office转换服务启动失败!详细信息:" + ce);
		}
	}

	// 关闭服务器
	public static void stopService() {
		System.out.println("关闭office转换服务....");
		if (officeManager != null) {
			officeManager.stop();
		}
		System.out.println("关闭office转换成功!");
	} 
 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics