新聞中心
1. JODConverter簡介

創(chuàng)新互聯(lián)建站服務項目包括湛江網(wǎng)站建設、湛江網(wǎng)站制作、湛江網(wǎng)頁制作以及湛江網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,湛江網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到湛江省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
JODConverter,是一個Java的OpenDocument文件轉(zhuǎn)換器,可以進行許多文件格式的轉(zhuǎn)換。它依賴于OpenOffice.org或者LibreOffice提供的服務來進行轉(zhuǎn)換,它能將Microsoft Office文檔(Word,Excel,PowerPoint)轉(zhuǎn)換為PDF格式。
你可以將JODConverter內(nèi)嵌在Java應用程序里,也可以單獨作為命令行由腳本調(diào)用,更可以應用為網(wǎng)頁程序或者Web Service以供網(wǎng)絡應用。
(1) 轉(zhuǎn)換文檔范例:
- OfficeManager officeManager = new DefaultOfficeManagerConfiguration( ).buildOfficeManager( );
- //啟動OpenOffice服務
- officeManager.start( );
- //執(zhí)行轉(zhuǎn)換
- OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
- converter.convert(new File(“test.odt”), new File(“test.pdf”));
- //停止服務
- officeManager.stop( );
(2) 主要類說明:
OfficeManager是一個接口,主要定義了三個方法:
public void start( )啟動OpenOffice服務
public void stop( )停止OpenOffice服務
public void execute(OfficeTask task)執(zhí)行轉(zhuǎn)換任務
DefaultOfficeManagerConfiguration是一個實現(xiàn)了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)設置連接協(xié)議,確定使用管道通信,還是socekt通信。
pubcli DefaultOfficeManagerConfiguration setTemplateProfileDir(File templateProfileDir)設定臨時目錄。
除以上幾個方法之外,DefaultOfficeManagerConfiguration還提供了別的配置OpenOffice.org的方法,具體方法可以查詢JODConverter API手冊。配置完之后,必須要執(zhí)行方法buildOfficeManager(),實現(xiàn)真正的配置。
OfficeDocumentConverter中主要包含convert方法,該方法實際上調(diào)用的是實現(xiàn)OfficeManager接口的類中的execute方法。
#p#
2. 利用JODConverter轉(zhuǎn)化文檔為PDF格式實現(xiàn)
2.1 算法設計
算法流程圖如圖4-1所示:
圖4-1 JODConverter調(diào)用OpenOffice服務轉(zhuǎn)換文檔為PDF算法
第一步,啟動OpenOffice服務。例如,首先設定DefaultOfficeManagerConfiguration相關參數(shù)來配置OpenOffice,并得到OfficeManager。調(diào)用OfficeManager實現(xiàn)類的start方法啟動服務。
第二步,轉(zhuǎn)換文檔。例如,初始化OfficeDocumentConverter,調(diào)用其convert方法執(zhí)行轉(zhuǎn)換。
第三步,停止OpenOffice服務。例如,調(diào)用OfficeManager實現(xiàn)類的stop方法停止方法。
2.2 安裝配置
JODConverter是一個開源文檔轉(zhuǎn)換工具,既可以應用于Linux平臺,也可其應用于Windows平臺。其基于OpenOffice.org或者LibreOffice。因此,文檔轉(zhuǎn)換服務器上必須安裝有OpenOffice或者LibreOffice。
目前最新版本的JODConverter為JODConverter3.0,它要求JDK1.5以上的Java環(huán)境,同時還需要OpenOffice.org 3.x版本。本文基于最新版本3.0設計實現(xiàn),如果是版本為2,則有不同的實現(xiàn)。(版本2需要手動啟動OpenOffice.org服務,或者創(chuàng)建Windows服務設置為開機啟動,而版本3提供了開啟服務的接口,因此筆者用的是版本3)
2.3 實現(xiàn)代碼
- 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("進行文檔轉(zhuǎn)換轉(zhuǎn)換:" + 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); //設置轉(zhuǎn)換端口,默認為8100
- configuration.setTaskExecutionTimeout(1000 * 60 * 5L);//設置任務執(zhí)行超時為5分鐘
- configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);//設置任務隊列超時為24小時
- officeManager = configuration.buildOfficeManager();
- officeManager.start(); //啟動服務
- System.out.println("office轉(zhuǎn)換服務啟動成功!");
- } catch (Exception ce) {
- System.out.println("office轉(zhuǎn)換服務啟動失敗!詳細信息:" + ce);
- }
- }
- public static void stopService(){
- System.out.println("關閉office轉(zhuǎn)換服務....");
- if (officeManager != null) {
- officeManager.stop();
- }
- System.out.println("關閉office轉(zhuǎn)換成功!");
- }
- }
源代碼下載地址:DocConverter
本文題目:仿百度文庫解決方案之四:JODConverter調(diào)用轉(zhuǎn)換
標題鏈接:http://www.dlmjj.cn/article/djoopje.html


咨詢
建站咨詢
