使用Jodconverter 利用OpenOffice3.X将Office文件转换成HTML,PDF

JAVA中使用jodconverter 利用OpenOffice3.X将office文件转换成HTML或是PDF
项目中,经常有用户将一些Office文档上传到应用中。之后如果需要查看的话,只能下载,才能查看。
为了达到更好的用户体验,需要不用下载Office文件就能在网页中查看文件内容。于是只好将Office文件转换成HTML或是PDF直接显示在网页中。就实现了在网页中直接查看的效果。
这种方法需要在服务端安装OpenOffice3.X的。但是比起需要在客户端安装office还是在服务器端安装更好一点。下面就是根据网上查找的一些资料,初步实现了转换工能。
第一步:下载 jodconverter-core-3.0-beta-4.zip 
解开后导入下列jar
        jodconverter-core-3.0-beta-4.jar
        commons-cli-1.1.jar
        commons-io-1.4.jar
        json-20090211.jar
        juh-3.2.1.jar
        jurt-3.2.1.jar
        ridl-3.2.1.jar
        unoil-3.2.1.jar
导入相关的包:
第二步:下载OpenOffice3.X,安装

自已写转换调用:
1.OpenOfficeConverter.java
2.FileUtils.java
/**************************转换调用类********************/
package com.rd.utils;

import java.io.File;
import java.io.FileNotFoundException;

import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;

public class OpenOfficeConverter {

    private static  OfficeManager officeManager;
    private static String OFFICE_HOME = "C:\\Program Files (x86)\\OpenOffice.org 3";
    private static int port[] = {8100};
    private static final String HTML = ".html";
    private static final String PDF = ".pdf";



    /**
     * 转换格式
     * @param inputFile 需要转换的原文件路径
     * @param fileType 要转换的目标文件类型 html,pdf
     */
    public  void convert(String inputFile, String fileType) {
          String outputFile = FileUtils.getFilePrefix(inputFile)+fileType;
          if(inputFile.endsWith(".txt")){
            String odtFile = FileUtils.getFilePrefix(inputFile)+".odt";
            if(new File(odtFile).exists()){
                System.out.println("odt文件已存在!");
                inputFile = odtFile;
            }else{
                try {
                    FileUtils.copyFile(inputFile,odtFile);
                    inputFile = odtFile;
                } catch (FileNotFoundException e) {
                    System.out.println("文档不存在!");
                    e.printStackTrace();
                }
            }
        }        
        startService();
        System.out.println("进行文档转换转换:" + inputFile + " --> " + outputFile);
        OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
        converter.convert(new File(inputFile),new File(outputFile));
        stopService();
        System.out.println();
    }

    public static void main(String[] args){
        OpenOfficeConverter  cov = new OpenOfficeConverter();
        String inputFile= "d:\\使用手册1.4.doc";
        cov.convert(inputFile,HTML);
    }
    public static void startService(){
        DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
        try {
          System.out.println("准备启动服务....");
            configuration.setOfficeHome(OFFICE_HOME);//设置OpenOffice.org安装目录
            configuration.setPortNumbers(port); //设置转换端口,默认为8100
            configuration.setTaskExecutionTimeout(1000 * 60 * 5L);//设置任务执行超时为5分钟
            configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);//设置任务队列超时为24小时

            officeManager = configuration.buildOfficeManager();
            officeManager.start();    //启动服务
            System.out.println("office转换服务启动成功!");
        } catch (Exception ce) {
            System.out.println("office转换服务启动失败!详细信息:" + ce);
        }
    }

    public static void stopService(){
          System.out.println("关闭office转换服务....");
            if (officeManager != null) {
                officeManager.stop();
            }
            System.out.println("关闭office转换成功!");
    }

}

/****************文件工具类****************************/
package com.rd.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;



public class FileUtils {

    public static String getFilePrefix(String fileName){
        int splitIndex = fileName.lastIndexOf(".");
        return fileName.substring(0, splitIndex);
    }

    public static String getFileSufix(String fileName){
        int splitIndex = fileName.lastIndexOf(".");
        return fileName.substring(splitIndex + 1);
    }

    public static void copyFile(String inputFile,String outputFile) throws FileNotFoundException{
        File sFile = new File(inputFile);
        File tFile = new File(outputFile);
        FileInputStream fis = new FileInputStream(sFile);
        FileOutputStream fos = new FileOutputStream(tFile);
        int temp = 0;  
        try {  
            while ((temp = fis.read()) != -1) {  
                fos.write(temp);  
            }
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally{
            try {
                fis.close();
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } 
    }
}

转载于:https://my.oschina.net/youri/blog/104863

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值