-
大小: 7.42MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-11-02
- 語言: 其他
- 標(biāo)簽: Libre??Office??文檔轉(zhuǎn)換??DOC轉(zhuǎn)PDF??
資源簡介
開發(fā)了一個后臺服務(wù),提供文檔的轉(zhuǎn)換,包括:
DOC->PDF
DOCX->PDF
XLS->PDF
XLSX->PDF
PPT->PDF
PPTX->PDF
TXT->PDF
PDF->TXT
JPG->DOCX
PDF->縮略圖
此外,該服務(wù)擁有定義良好的啟動、停止功能。能夠優(yōu)雅地停止正在執(zhí)行的轉(zhuǎn)換任務(wù)。會記錄下尚未完成的任務(wù),下次啟動服務(wù)的時候自動繼續(xù)執(zhí)行。

代碼片段和文件信息
package?com.openoffice.service;
import?java.io.File;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.util.ArrayList;
import?java.util.List;
import?java.util.concurrent.Executors;
import?java.util.concurrent.TimeUnit;
import?org.dom4j.Document;
import?org.dom4j.DocumentException;
import?org.dom4j.DocumentHelper;
import?org.dom4j.Element;
import?org.dom4j.io.OutputFormat;
import?org.dom4j.io.SAXReader;
import?org.dom4j.io.xmlWriter;
import?com.openoffice.utils.ExeEnvironment;
/**
?*?文檔轉(zhuǎn)換服務(wù)類
?*/
public?class?DocumentConvertService?{
/**
?*?任務(wù)執(zhí)行器
?*/
private?volatile?TrackingExecutor?exec;
/**
?*?存儲一組要執(zhí)行的文檔轉(zhuǎn)換任務(wù)
?*/
private?final?List?tasksToExecute;
/**
?*?默認(rèn)構(gòu)造函數(shù)
?*/
public?DocumentConvertService()
{
this.tasksToExecute?=?new?ArrayList();
}
/**
?*?啟動文檔轉(zhuǎn)換服務(wù)
?*/
public?synchronized?void?start()
{
if(ExeEnvironment.isVerbose())
System.out.println(“正在啟動文檔轉(zhuǎn)換服務(wù)...“);
//?創(chuàng)建任務(wù)執(zhí)行器
this.exec?=?new?TrackingExecutor(Executors.newSingleThreadExecutor());
//?從xml文件中加載上次未執(zhí)行完的文檔轉(zhuǎn)換任務(wù)
loadUnExecutedDocumentConvertTaskFromxmlFile();
for?(IDocumentConvertTask?task?:?this.tasksToExecute)
submitDocumentConvertTask(task);
this.tasksToExecute.clear();
if(ExeEnvironment.isVerbose())
System.out.println(“文檔轉(zhuǎn)換服務(wù)啟動成功!“);
}
/**
?*?停止文檔轉(zhuǎn)換服務(wù)
?*?@param?timeout?最大等待時間
?*?@param?timeUnit?時間單位
?*?@throws?InterruptedException
?*/
public?synchronized?void?stop(long?timeout?TimeUnit?timeUnit)?throws?InterruptedException
{
if(ExeEnvironment.isVerbose())
System.out.println(“正在停止文檔轉(zhuǎn)換服務(wù)...“);
try
{
List?unExecutedList=this.exec.shutdownNow();
//?如果在指定時間內(nèi)成功取消了已提交但未結(jié)束的任務(wù),將這些任務(wù)保存起來
if?(this.exec.awaitTermination(timeout?timeUnit))
saveUnExecutedDocumentConvertTask(this.exec.getCancelledTasks());
//?保存已提交但尚未啟動的任務(wù)
saveUnExecutedDocumentConvertTask(unExecutedList);
}
finally
{
this.exec?=?null;
}
//將未執(zhí)行的文檔轉(zhuǎn)換任務(wù)保存到xml文件,以便下次啟動該服務(wù)時再執(zhí)行。
saveUnExecutedDocumentConvertTaskToxmlFile();
if(ExeEnvironment.isVerbose())
System.out.println(“文檔轉(zhuǎn)換服務(wù)已停止!“);
}
/**
?*?從xml文件中加載上次未執(zhí)行完的文檔轉(zhuǎn)換任務(wù)
?*/
private?void?loadUnExecutedDocumentConvertTaskFromxmlFile()
{
String?path?=?Thread.currentThread()
.getContextClassLoader().getResource(“com/openoffice/service/unExecutedTasks.xml“).getPath()
.replace(“%20“?“?“);
File?file?=?new?File(path);
if?(file.exists()){
SAXReader?saxReader?=?new?SAXReader();
try?{
//?獲取地圖屬性xml文檔
Document?document?=?saxReader.read(file);
//?獲取根元素
????????Element?root?=?document.getRootElement();
????????
????????//?獲取序列列表
????????@SuppressWarnings(“unchecked“)
List?taskList?=?root.elements();?
????????//?遍歷序列
????????for(int?i=0;?i ????????
???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????937??2017-04-01?08:27??DocumentConvertService\.classpath
?????文件????????398??2017-04-01?08:27??DocumentConvertService\.project
?????文件????????629??2017-04-01?08:27??DocumentConvertService\.settings\org.eclipse.jdt.core.prefs
?????文件???????7236??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\DocumentConvertService.class
?????文件???????2289??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\GetThumbnailConvertTask.class
?????文件????????275??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\IDocumentConvertTask.class
?????文件???????2806??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\ImageToWordConvertTask.class
?????文件???????1999??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\OfficeToPDFConvertTask.class
?????文件???????2386??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\PDFToTxtConvertTask.class
?????文件???????1092??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\RunnableTask.class
?????文件???????2998??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\Test.class
?????文件???????1454??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\Test2.class
?????文件???????2156??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\TrackingExecutor.class
?????文件?????????59??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\service\unExecutedTasks.xm
?????文件???????3140??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\utils\ExeEnvironment.class
?????文件???????1588??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\utils\FileCopyUtil.class
?????文件??????11327??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\utils\ImageToWordConverter.class
?????文件???????5599??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\utils\OfficeToPDFConverter.class
?????文件???????4863??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\utils\PdfThumbnailGenerator.class
?????文件???????3310??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\utils\PDFToTxtConverter.class
?????文件????????122??2017-04-01?08:27??DocumentConvertService\bin\com\openoffice\utils\url.properties
?????文件??????16332??2017-04-01?08:27??DocumentConvertService\libs\bootstrapconnector.jar
?????文件??????41123??2017-04-01?08:27??DocumentConvertService\libs\commons-cli-1.2.jar
?????文件?????109043??2017-04-01?08:27??DocumentConvertService\libs\commons-io-1.4.jar
?????文件??????60841??2017-04-01?08:27??DocumentConvertService\libs\commons-logging.jar
?????文件?????313898??2017-04-01?08:27??DocumentConvertService\libs\dom4j-1.6.1.jar
?????文件?????218564??2017-04-01?08:27??DocumentConvertService\libs\fontbox-1.8.8.jar
?????文件????1508245??2017-04-01?08:27??DocumentConvertService\libs\icepdf-core.jar
?????文件??????32054??2017-04-01?08:27??DocumentConvertService\libs\jodconverter-2.2.2.jar
?????文件???????5712??2017-04-01?08:27??DocumentConvertService\libs\jodconverter-cli-2.2.2.jar
............此處省略43個文件信息
- 上一篇:廣義估計(jì)方程詹姆斯英文版
- 下一篇:Windows Azure平臺概述ppt
評論
共有 條評論