最近这段时间,在研究lucene实现网页预览文档
使用Openoffic+Swftools+flexpaper实现预览
首先要开启openoffice服务 ,每次都要手动启动,很是麻烦,所以研究了一下windows命令,启动openoffice服务。
思想:将启动openoffice服务的命令封装在.bat文件中,使用java代码调用该.bat文件,实现启动openoffice服务。
package ytu.botao.util;import java.io.File;import java.io.FileWriter;/** * 功能:开启openoffice服务 * 使用方法:直接生成该类对象 * *****由于本机openoffice安装路径不同,需要更改openoffice的安装路径 * @author botao * */public class JavaCallOpenoffice { /** * 将启动程序定义在构造函数中,直接生成该类对象,即可启动openoffice服务 */ public JavaCallOpenoffice() { Runtime rn = Runtime.getRuntime(); Process p = null; try { File file=new File("d:\\openoprenoffice.bat"); if (false==file.exists()) { System.out.println("。。。。。。。。。。"); FileWriter writer = new FileWriter("d:\\openoprenoffice.bat "); writer.write("@echo off "); writer.write("\r\n "); writer.write("D:"); writer.write("\r\n "); //D:\\Program Files\\OpenOffice 4\\program: openoffice的安装路径路径 writer.write("cd D:\\Program Files\\OpenOffice 4\\program"); writer.write("\r\n "); writer.write("soffice -headless -accept="+"socket,host=127.0.0.1,port=8100;urp;"+" -nofirststartwizard"); writer.write("\r\n "); writer.write("@echo on "); writer.close(); } p = rn.exec("cmd.exe /C d:\\openoprenoffice.bat"); } catch (Exception e1) { e1.printStackTrace(); } }}
每次启动openoffice服务,soffice进程都占用100M内存,很是浪费,所以在文档转换完之后,要关闭soffice进程
package ytu.botao.util;import java.io.IOException;import java.util.Scanner;/** * 功能:关闭openoffice服务 * 使用方法:直接生成该类对象即可 * @author botao * */public class DistorySoffice { private Process process=null; /** * 构造方法,实现关闭soffice进程 */ public DistorySoffice() { try { //显示进程 process=Runtime.getRuntime().exec("tasklist"); Scanner in=new Scanner(process.getInputStream()); while (in.hasNextLine()) { String processString=in.nextLine(); if (processString.contains("soffice.exe")) { //关闭soffice进程的命令 String cmd="taskkill /f /im soffice.exe"; process=Runtime.getRuntime().exec(cmd); System.out.println("openoffice正常关闭......."); } } } catch (IOException e) { e.printStackTrace(); } }}