打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java代码实现开启openoffice服务和关闭sffice.exe进程

最近这段时间,在研究lucene实现网页预览文档

使用Openoffic+Swftools+flexpaper实现预览

首先要开启openoffice服务 ,每次都要手动启动,很是麻烦,所以研究了一下windows命令,启动openoffice服务。

思想:将启动openoffice服务的命令封装在.bat文件中,使用java代码调用该.bat文件,实现启动openoffice服务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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();
        }
    }
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java利用OpenOffice将word等office文档转换成PDF
JAVA如何调用DOS命令
Java Process中waitFor()的问题
如何利用Java获取进程的信息(通过tasklist和cmd与Windows进行交互)
java 执行shell命令及日志收集避坑指南
网页文档在线浏览(仿百度文库设计)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服