java word openoffice_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包中。

d8144255f1b889f1f6723d69136856cb.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值