开发了一个后台服务,提供文档的转换,包括:
DOC->PDF
DOCX->PDF
XLS->PDF
XLSX->PDF
PPT->PDF
PPTX->PDF
TXT->PDF
PDF->TXT
JPG->DOCX
PDF->缩略图
此外,该服务拥有定义良好的启动、停止功能。能够优雅地停止正在执行的转换任务。会记录下尚未完成的任务,下次启动服务的时候自动继续执行。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 937 2017-04-01 08:27 DocumentConvertService.classpath
文件 398 2017-04-01 08:27 DocumentConvertService.project
文件 629 2017-04-01 08:27 DocumentConvertService.settingsorg.eclipse.jdt.core.prefs
文件 7236 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceDocumentConvertService.class
文件 2289 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceGetThumbnailConvertTask.class
文件 275 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceIDocumentConvertTask.class
文件 2806 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceImageToWordConvertTask.class
文件 1999 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceOfficeToPDFConvertTask.class
文件 2386 2017-04-01 08:27 DocumentConvertServiceincomopenofficeservicePDFToTxtConvertTask.class
文件 1092 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceRunnableTask.class
文件 2998 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceTest.class
文件 1454 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceTest2.class
文件 2156 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceTrackingExecutor.class
文件 59 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceunExecutedTasks.xml
文件 3140 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsExeEnvironment.class
文件 1588 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsFileCopyUtil.class
文件 11327 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsImageToWordConverter.class
文件 5599 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsOfficeToPDFConverter.class
文件 4863 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsPdfThumbnailGenerator.class
文件 3310 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsPDFToTxtConverter.class
文件 122 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsurl.properties
文件 16332 2017-04-01 08:27 DocumentConvertServicelibsootstrapconnector.jar
文件 41123 2017-04-01 08:27 DocumentConvertServicelibscommons-cli-1.2.jar
文件 109043 2017-04-01 08:27 DocumentConvertServicelibscommons-io-1.4.jar
文件 60841 2017-04-01 08:27 DocumentConvertServicelibscommons-logging.jar
文件 313898 2017-04-01 08:27 DocumentConvertServicelibsdom4j-1.6.1.jar
文件 218564 2017-04-01 08:27 DocumentConvertServicelibsfontbox-1.8.8.jar
文件 1508245 2017-04-01 08:27 DocumentConvertServicelibsicepdf-core.jar
文件 32054 2017-04-01 08:27 DocumentConvertServicelibsjodconverter-2.2.2.jar
文件 5712 2017-04-01 08:27 DocumentConvertServicelibsjodconverter-cli-2.2.2.jar
............此处省略43个文件信息
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.settingsorg.eclipse.jdt.core.prefs
文件 7236 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceDocumentConvertService.class
文件 2289 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceGetThumbnailConvertTask.class
文件 275 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceIDocumentConvertTask.class
文件 2806 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceImageToWordConvertTask.class
文件 1999 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceOfficeToPDFConvertTask.class
文件 2386 2017-04-01 08:27 DocumentConvertServiceincomopenofficeservicePDFToTxtConvertTask.class
文件 1092 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceRunnableTask.class
文件 2998 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceTest.class
文件 1454 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceTest2.class
文件 2156 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceTrackingExecutor.class
文件 59 2017-04-01 08:27 DocumentConvertServiceincomopenofficeserviceunExecutedTasks.xm
文件 3140 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsExeEnvironment.class
文件 1588 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsFileCopyUtil.class
文件 11327 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsImageToWordConverter.class
文件 5599 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsOfficeToPDFConverter.class
文件 4863 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsPdfThumbnailGenerator.class
文件 3310 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsPDFToTxtConverter.class
文件 122 2017-04-01 08:27 DocumentConvertServiceincomopenofficeutilsurl.properties
文件 16332 2017-04-01 08:27 DocumentConvertServicelibsootstrapconnector.jar
文件 41123 2017-04-01 08:27 DocumentConvertServicelibscommons-cli-1.2.jar
文件 109043 2017-04-01 08:27 DocumentConvertServicelibscommons-io-1.4.jar
文件 60841 2017-04-01 08:27 DocumentConvertServicelibscommons-logging.jar
文件 313898 2017-04-01 08:27 DocumentConvertServicelibsdom4j-1.6.1.jar
文件 218564 2017-04-01 08:27 DocumentConvertServicelibsfontbox-1.8.8.jar
文件 1508245 2017-04-01 08:27 DocumentConvertServicelibsicepdf-core.jar
文件 32054 2017-04-01 08:27 DocumentConvertServicelibsjodconverter-2.2.2.jar
文件 5712 2017-04-01 08:27 DocumentConvertServicelibsjodconverter-cli-2.2.2.jar
............此处省略43个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)