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