java 使用openoffice 转换文档,成.pdf,实现在线预览效果

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()); } }

  

扫描二维码关注公众号,回复: 4240462 查看本文章

猜你喜欢

转载自www.cnblogs.com/bb1008/p/10019576.html