1. 下载 openoffice 地址
https://pan.baidu.com/s/1dfpoG6zlawoW1pqpDvBL0A 密码: v4ej
如果上面的地址无法访问请访问这个地址:下载地址如下:http://www.openoffice.org/
2. jodconverter-2.2.2.zip 下载地址:
http://sourceforge.net/projects/jodconverter/files/JODConverter/
3. JODConverter 下的jar包访问项目lib包中。
4. 使用openoffice的工具类
package com.rdkl.utils; import java.io.File; import org.apache.commons.io.FilenameUtils; import org.apache.log4j.Logger; import org.artofsolving.jodconverter.OfficeDocumentConverter; import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration; import org.artofsolving.jodconverter.office.ExternalOfficeManagerConfiguration; import org.artofsolving.jodconverter.office.OfficeException; import org.artofsolving.jodconverter.office.OfficeManager; import com.ddyun.imooc.common.SysConfigManager; public class PdfUtils { private static final Logger logger = Logger.getLogger(PdfUtils.class .getName()); @SuppressWarnings("static-access") private static String officeHome = "这里写的是你的openoffice的安装地址"; @SuppressWarnings("static-access") private static int port = "这里的内容是根据你的系统选择不同的端口号,windows系统的端口号是8100"; private static OfficeManager officeManager; // 尝试连接已存在的服务器 private static boolean reconnect(){ try { // 尝试连接openoffice的已存在的服务器 ExternalOfficeManagerConfiguration externalProcessOfficeManager = new ExternalOfficeManagerConfiguration(); externalProcessOfficeManager.setConnectOnStart(true); externalProcessOfficeManager.setPortNumber(8100); officeManager = externalProcessOfficeManager.buildOfficeManager(); officeManager.start(); return true; } catch (OfficeException e) { e.printStackTrace(); return false; } } // 开启新的openoffice的进程 private static void start() { logger.debug("启动OpenOffice服务"); try { DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration(); configuration.setOfficeHome(officeHome);// 安装地址 configuration.setPortNumbers(port);// 端口号 configuration.setTaskExecutionTimeout(1000 * 60 * 5);// 设置任务执行超时为5分钟 configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24);// 设置任务队列超时为24小时 officeManager = configuration.buildOfficeManager(); officeManager.start(); // 启动服务 } catch (Exception e) { logger.error("启动OpenOffice服务出错" + e); } } // 使用完需要关闭该进程 private static void stop() { logger.debug("关闭OpenOffice服务"); try { if (officeManager != null) officeManager.stop(); } catch (Exception e) { logger.error("关闭OpenOffice服务出错" + e); } } public static File convertToPdf(String input) { File inputFile = null; File outFile = null; try { // 如果已存在的服务不能连接或者不存在服务,那么开启新的服务 if(!reconnect()){ start();// 开启服务 } // filenameUtils是Apache对java io的封装。 FilenameUtils.separatorsToSystem:转换分隔符为当前系统分隔符 / FilenameUtils.getFullPath:获取文件的完整目录 // FilenameUtils.getBaseName:取出文件目录和后缀名的文件名 String output = FilenameUtils.separatorsToSystem(FilenameUtils.getFullPath(input) + FilenameUtils.getBaseName(input) + ".pdf"); inputFile = new File(input); outFile = new File(output); logger.info("开始转换文档:" + input + "=>" + output); OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); converter.convert(inputFile,outFile); // 转换文档 } catch (Exception e) { logger.error("转换文档出错" + e); outFile = null; }finally{ logger.info("结束转换文档"); stop(); } return outFile; } // 测试工具类是否成功 public static void main(String[] args) { //PdfUtils.convertToPdf("E:/test.ppt"); File sf = new File("E:/test.ppt"); System.out.println(sf.getPath()); } }
原文地址:https://www.cnblogs.com/bb1008/p/10019576.html
时间: 2024-10-12 17:13:34