资源简介

开发了一个后台服务,提供文档的转换,包括: 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.xml

     文件       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个文件信息

评论

共有 条评论