資源簡介
開發了一個后臺服務,提供文檔的轉換,包括:
DOC->PDF
DOCX->PDF
XLS->PDF
XLSX->PDF
PPT->PDF
PPTX->PDF
TXT->PDF
PDF->TXT
JPG->DOCX
PDF->縮略圖
此外,該服務擁有定義良好的啟動、停止功能。能夠優雅地停止正在執行的轉換任務。會記錄下尚未完成的任務,下次啟動服務的時候自動繼續執行。

代碼片段和文件信息
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;
/**
?*?文檔轉換服務類
?*/
public?class?DocumentConvertService?{
/**
?*?任務執行器
?*/
private?volatile?TrackingExecutor?exec;
/**
?*?存儲一組要執行的文檔轉換任務
?*/
private?final?List?tasksToExecute;
/**
?*?默認構造函數
?*/
public?DocumentConvertService()
{
this.tasksToExecute?=?new?ArrayList();
}
/**
?*?啟動文檔轉換服務
?*/
public?synchronized?void?start()
{
if(ExeEnvironment.isVerbose())
System.out.println(“正在啟動文檔轉換服務...“);
//?創建任務執行器
this.exec?=?new?TrackingExecutor(Executors.newSingleThreadExecutor());
//?從xml文件中加載上次未執行完的文檔轉換任務
loadUnExecutedDocumentConvertTaskFromxmlFile();
for?(IDocumentConvertTask?task?:?this.tasksToExecute)
submitDocumentConvertTask(task);
this.tasksToExecute.clear();
if(ExeEnvironment.isVerbose())
System.out.println(“文檔轉換服務啟動成功!“);
}
/**
?*?停止文檔轉換服務
?*?@param?timeout?最大等待時間
?*?@param?timeUnit?時間單位
?*?@throws?InterruptedException
?*/
public?synchronized?void?stop(long?timeout?TimeUnit?timeUnit)?throws?InterruptedException
{
if(ExeEnvironment.isVerbose())
System.out.println(“正在停止文檔轉換服務...“);
try
{
List?unExecutedList=this.exec.shutdownNow();
//?如果在指定時間內成功取消了已提交但未結束的任務,將這些任務保存起來
if?(this.exec.awaitTermination(timeout?timeUnit))
saveUnExecutedDocumentConvertTask(this.exec.getCancelledTasks());
//?保存已提交但尚未啟動的任務
saveUnExecutedDocumentConvertTask(unExecutedList);
}
finally
{
this.exec?=?null;
}
//將未執行的文檔轉換任務保存到xml文件,以便下次啟動該服務時再執行。
saveUnExecutedDocumentConvertTaskToxmlFile();
if(ExeEnvironment.isVerbose())
System.out.println(“文檔轉換服務已停止!“);
}
/**
?*?從xml文件中加載上次未執行完的文檔轉換任務
?*/
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個文件信息
- 上一篇:廣義估計方程詹姆斯英文版
- 下一篇:Windows Azure平臺概述ppt
評論
共有 條評論