仿百度文库解决方案之四:JODConverter调用转换

开发 前端
你可以将JODConverter内嵌在Java应用程序里,也可以单独作为命令行由脚本调用,更可以应用为网页程序或者Web Service以供网络应用。

1. JODConverter简介

JODConverter,是一个Java的OpenDocument文件转换器,可以进行许多文件格式的转换。它依赖于OpenOffice.org或者LibreOffice提供的服务来进行转换,它能将Microsoft Office文档(Word,Excel,PowerPoint)转换为PDF格式。

你可以将JODConverter内嵌在Java应用程序里,也可以单独作为命令行由脚本调用,更可以应用为网页程序或者Web Service以供网络应用。

(1)     转换文档范例:

OfficeManager officeManager = new DefaultOfficeManagerConfiguration( ).buildOfficeManager( );  
//启动OpenOffice服务  
officeManager.start( );  
//执行转换  
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);  
converter.convert(new File(“test.odt”), new File(“test.pdf”));  
//停止服务  
officeManager.stop( ); 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

(2)     主要类说明:

OfficeManager是一个接口,主要定义了三个方法:

public void start( )启动OpenOffice服务

public void stop( )停止OpenOffice服务

public void execute(OfficeTask task)执行转换任务

DefaultOfficeManagerConfiguration是一个实现了OfficeManager接口的实体类,其提供了相关方法配置OpenOffice.org,比如:

public DefaultOfficeManagerConfiguration setOfficeHome(String officeHome)设置OpenOffice.org或者LibreOffice安装目录,windows下默认值为” C:\Program Files\OpenOffice.org 3”(LibreOffice进行相应更改),因此如果OpenOffice.org安装在别的目录,必须设置此项。

public DefaultOfficeManagerConfiguration setConnectionProtocol(OfficeConnectionProtocol conn)设置连接协议,确定使用管道通信,还是socekt通信。

pubcli DefaultOfficeManagerConfiguration setTemplateProfileDir(File templateProfileDir)设定临时目录。

除以上几个方法之外,DefaultOfficeManagerConfiguration还提供了别的配置OpenOffice.org的方法,具体方法可以查询JODConverter API手册。配置完之后,必须要执行方法buildOfficeManager(),实现真正的配置。

OfficeDocumentConverter中主要包含convert方法,该方法实际上调用的是实现OfficeManager接口的类中的execute方法。

#p#

2. 利用JODConverter转化文档为PDF格式实现

2.1 算法设计

算法流程图如图4-1所示:

JODConverter调用OpenOffice服务转换文档为PDF算法

图4-1 JODConverter调用OpenOffice服务转换文档为PDF算法

第一步,启动OpenOffice服务。例如,首先设定DefaultOfficeManagerConfiguration相关参数来配置OpenOffice,并得到OfficeManager。调用OfficeManager实现类的start方法启动服务。

第二步,转换文档。例如,初始化OfficeDocumentConverter,调用其convert方法执行转换。

第三步,停止OpenOffice服务。例如,调用OfficeManager实现类的stop方法停止方法。

2.2 安装配置

JODConverter是一个开源文档转换工具,既可以应用于Linux平台,也可其应用于Windows平台。其基于OpenOffice.org或者LibreOffice。因此,文档转换服务器上必须安装有OpenOffice或者LibreOffice。

目前最新版本的JODConverter为JODConverter3.0,它要求JDK1.5以上的Java环境,同时还需要OpenOffice.org 3.x版本。本文基于最新版本3.0设计实现,如果是版本为2,则有不同的实现。(版本2需要手动启动OpenOffice.org服务,或者创建Windows服务设置为开机启动,而版本3提供了开启服务的接口,因此笔者用的是版本3)

2.3 实现代码

package com.converter.pdfConverter;  
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;  
import com.converter.utils.FileUtils;  
public class OpenOfficePDFConverter implements PDFConverter{   
    private static  OfficeManager officeManager;  
    private static String OFFICE_HOME = "D:\\Program Files\\OpenOffice.org 3";  
    private static int port[] = {8100};  
    public  void convert2PDF(String inputFile, String pdfFile) {  
          
        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 + " --> " + pdfFile);  
        OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);  
        converter.convert(new File(inputFile),new File(pdfFile));  
        stopService();  
        System.out.println();  
    }  
    public void convert2PDF(String inputFile) {  
        String pdfFile = FileUtils.getFilePrefix(inputFile)+".pdf";  
        convert2PDF(inputFile,pdfFile);          
    }      
    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转换成功!");  
    }  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.

源代码下载地址:DocConverter

原文链接:http://www.cnblogs.com/luckyxiaoxuan/archive/2012/06/14/2549012.html

【编辑推荐】

 

责任编辑:张伟 来源: 肖恩也有梦想的博客
相关推荐

2012-06-19 13:25:15

Web

2012-06-18 16:37:41

Web

2012-06-19 13:45:57

Web

2012-06-18 16:29:48

Web

2012-06-19 13:42:08

Web

2012-07-16 14:43:32

silverlight

2015-10-28 13:40:28

高仿百度糯米源码

2012-10-19 09:47:30

百度云百度音乐云计算

2011-06-02 17:28:24

网站收录

2012-11-27 09:51:54

百度三星云解决方案

2011-06-29 08:31:56

收录

2011-05-24 10:40:12

SEO

2015-12-02 17:22:03

百度地图

2011-10-21 09:28:25

百度地图API

2020-09-15 19:29:40

搜索
点赞
收藏

51CTO技术栈公众号