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

1. JODConverter简介

创新互联建站服务项目包括湛江网站建设、湛江网站制作、湛江网页制作以及湛江网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,湛江网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到湛江省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

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

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

(1)     转换文档范例:

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

(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所示:

图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 实现代码

 
 
 
 
  1. package com.converter.pdfConverter;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import org.artofsolving.jodconverter.OfficeDocumentConverter;
  5. import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
  6. import org.artofsolving.jodconverter.office.OfficeManager;
  7. import com.converter.utils.FileUtils;
  8. public class OpenOfficePDFConverter implements PDFConverter{ 
  9.     private static  OfficeManager officeManager;
  10.     private static String OFFICE_HOME = "D:\\Program Files\\OpenOffice.org 3";
  11.     private static int port[] = {8100};
  12.     public  void convert2PDF(String inputFile, String pdfFile) {
  13.         
  14.         if(inputFile.endsWith(".txt")){
  15.             String odtFile = FileUtils.getFilePrefix(inputFile)+".odt";
  16.             if(new File(odtFile).exists()){
  17.                 System.out.println("odt文件已存在!");
  18.                 inputFile = odtFile;
  19.             }else{
  20.                 try {
  21.                     FileUtils.copyFile(inputFile,odtFile);
  22.                     inputFile = odtFile;
  23.                 } catch (FileNotFoundException e) {
  24.                     System.out.println("文档不存在!");
  25.                     e.printStackTrace();
  26.                 }
  27.             }
  28.         }        
  29.         startService();
  30.         System.out.println("进行文档转换转换:" + inputFile + " --> " + pdfFile);
  31.         OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
  32.         converter.convert(new File(inputFile),new File(pdfFile));
  33.         stopService();
  34.         System.out.println();
  35.     }
  36.     public void convert2PDF(String inputFile) {
  37.         String pdfFile = FileUtils.getFilePrefix(inputFile)+".pdf";
  38.         convert2PDF(inputFile,pdfFile);        
  39.     }    
  40.     public static void startService(){
  41.         DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
  42.         try {
  43.           System.out.println("准备启动服务....");
  44.             configuration.setOfficeHome(OFFICE_HOME);//设置OpenOffice.org安装目录
  45.             configuration.setPortNumbers(port); //设置转换端口,默认为8100
  46.             configuration.setTaskExecutionTimeout(1000 * 60 * 5L);//设置任务执行超时为5分钟
  47.             configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);//设置任务队列超时为24小时         
  48.             officeManager = configuration.buildOfficeManager();
  49.             officeManager.start();    //启动服务
  50.             System.out.println("office转换服务启动成功!");
  51.         } catch (Exception ce) {
  52.             System.out.println("office转换服务启动失败!详细信息:" + ce);
  53.         }
  54.     }    
  55.     public static void stopService(){
  56.           System.out.println("关闭office转换服务....");
  57.             if (officeManager != null) {
  58.                 officeManager.stop();
  59.             }
  60.             System.out.println("关闭office转换成功!");
  61.     }
  62. }

源代码下载地址:DocConverter

网站标题:仿百度文库解决方案之四:JODConverter调用转换
网站链接:http://www.shufengxianlan.com/qtweb/news11/265811.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联