java代码自动启动OpenOffice
2022/5/28 1:24:05
本文主要是介绍java代码自动启动OpenOffice,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
之前用openOffice将docx转pdf实现在线预览,但每次都要自己手动cmd启动,看网上教程说可以下载Server 2003 Resource Kit Tools来自启动OpenOffice,但是这个连接已经失效并且下载不了了,就选择采取用java代码来启动OpenOffice,就只要我们电脑安装了openOffice就可以啦。
方法
* 在FileConvertUtil
里加两个方法
//启动OpenOffice servicePath 是OpenOffice的安装路径 public static void startOpenOfficeService(String servicePath) { String command = servicePath + "program\\soffice -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\" -nofirststartwizard"; try { Process pro = Runtime.getRuntime().exec(command); } catch (IOException e) { System.out.println("OpenOffice服务启动失败"); } } /** *关闭OpenOffice **/ public static void shutdownOpenOfficeService() { try { Process pro = Runtime.getRuntime().exec("tasklist"); Scanner in = new Scanner(pro.getInputStream()); while(in.hasNext()) { String proString = in.nextLine(); if(proString.contains("soffice.exe")) { String cmd = "taskkill /f /im soffice.exe"; pro = Runtime.getRuntime().exec(cmd); System.out.println("soffice.exe关闭"); } if(proString.contains("soffice.bin")) { String cmd = "taskkill /f /im soffice.bin"; pro = Runtime.getRuntime().exec(cmd); System.out.println("soffice.bin关闭"); } } } catch (IOException e) { e.printStackTrace(); } }
* 业务层代码调这个方法
//servicePath 是OpenOffice的安装路径 private static final String servicePath = "C:\\Program Files (x86)\\OpenOffice 4\\"; //在线预览 public OutputStream onlinePreview(@RequestParam("url") String url, HttpServletResponse response) throws Exception { //获取文件类型 String suffix = url.substring(url.lastIndexOf('.') + 1); if (!suffix.equals("txt") && !suffix.equals("doc") && !suffix.equals("docx") && !suffix.equals("xls") && !suffix.equals("xlsx") && !suffix.equals("ppt") && !suffix.equals("pptx") && !suffix.equals("sheet") && !suffix.equals("pdf")) { throw new Exception("文件格式不支持预览"); } url = url.replace(STORE_PATH, LOCAL_STORE_PATH); InputStream in = null; //如果是pdf文件,则不用转,直接展示 if (suffix.equals("pdf")) { in = new BufferedInputStream(new FileInputStream(url)); } else { //docx文件则先启动openOffice FileConvertUtil.startOpenOfficeService(servicePath); in = FileConvertUtil.convertLocaleFile(url, suffix); //关闭openOffice FileConvertUtil.shutdownOpenOfficeService(); } // url = String.format("http://"+url); OutputStream outputStream = response.getOutputStream(); //创建存放文件内容的数组 byte[] buff = new byte[1024]; //所读取的内容使用n来接收 int n; //当没有读取完时,继续读取,循环 while ((n = in.read(buff)) != -1) { //将字节数组的数据全部写入到输出流中 outputStream.write(buff, 0, n); } //强制将缓存区的数据进行输出 outputStream.flush(); //redisTemplate.opsForValue().set("Knowledge:" + url, outputStream.toString()); //关流 outputStream.close(); in.close(); return outputStream; }
ok!
这篇关于java代码自动启动OpenOffice的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器