700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Office文档转换成PDF

Office文档转换成PDF

时间:2019-06-02 14:01:30

相关推荐

Office文档转换成PDF

分享知识 传递快乐

Office文档转换成PDF

文档转换的方式有很多种,比如有Apache下的POI、jodconverter等技术。本例用的jodconverter-core-3.0技术对文档进行转换,首先下载所需的JAR包有:

commons-cli-1.1.jarcommons-io-1.4.jarjodconverter-core-3.0-beta-4.jarjuh-3.2.1.jarjurt-3.2.1.jarridl-3.2.1.jarunoil-3.2.1.jar

如果用jodconverter-core转换文档时需要安装OpenOffice,要借助OpenOffice来在线浏览office文档,前提是要转成pdf。因为浏览器不能直接找开office文档,所以只能转换一下。 想要运行些项目机器上必须要装上OpenOffice才可以运行,否则不能运行,windows和Linux都可以运行的。有些网上说要先手动启用服务,再运行项目, 但这个项目不用,只要安装了OpenOffice就可以了,项目里有开启和关闭OpenOffice服务。

本项目有3.0和2.0两个版本

OpenOffice2Pdf所的技术是jodconverter-core-3.0.jar,(3.0和2.0很大,详情上网查),

源码:

package com.xh;// 定义属性public class Constant {// 可以操作的文件类型public static final String FILE_SUFFIX[] = { ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".txt" };// 转换得出的文件类型public static final String PDF_SUFFIX = ".pdf";// OpenOffice安装路径public static final String OFFICE_HOME = "D:/OpenOffice/OpenOffice 4";// 设置转换端口,默认为8100public static final int PORT = 8100;// 设置任务执行超时为2分钟public static final long EXECUTE_OVERTIME = 2 * 60 * 1000;// 设置任务队列超时为5分钟public static final long QUEUE_OVERTIME = 5 * 60 * 1000;}

package com.xh;import java.io.File;import org.artofsolving.jodconverter.OfficeDocumentConverter;import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;import org.artofsolving.jodconverter.office.OfficeManager;public class OpenOffice2Pdf {private static OfficeManager officeManager;/*** 文档转换* <hr>* 将doc,docx,xls,xlsx,ppt,pptx,txt等文档转换成PDF文档,如果不指定输出地址默认当前文件地址* * @author Hyang* @date 12月13日* @explain* * @param inputFilePath* - 转换文件地址(必须)* @param outputFilePath* - 输出地址(可空)* @param newFileName* - 新文件名(可空)* @return*/public String execute2Pdf(String inputFilePath, String outputFilePath, String newFileName) {return processing(inputFilePath, outputFilePath, newFileName);}/*** 数据加工* * @author Hyang* @date 12月13日* @explain* * @return*/private static String processing(String inputFilePath, String outputFilePath, String newFileName) {File inputFile = new File(inputFilePath);String fileName = inputFile.getName();String prefix = fileName.substring(fileName.lastIndexOf(".") + 0);String outputPath = null;boolean isTrue = false;if (!inputFile.exists()) {System.out.println("文件不存在!");return null;}for (String name : Constant.FILE_SUFFIX) {if (fileName.endsWith(name)) {isTrue = true;break;}}if (!isTrue) {System.out.println("文件格式错误");return null;}if (outputFilePath != null) {outputPath = newFileName == null ? outputFilePath + fileName.replace(prefix, Constant.PDF_SUFFIX): outputFilePath + fileName.replace(fileName, newFileName) + Constant.PDF_SUFFIX;} else {outputPath = newFileName == null ? inputFile.getPath().replace(prefix, Constant.PDF_SUFFIX): inputFile.getPath().replace(fileName, newFileName) + Constant.PDF_SUFFIX;}File outputFile = new File(outputPath);if (!outputFile.exists()) {//执行方法服务功能execute(inputFile, outputFile);} else {System.out.println("文件已存在");}return outputPath;}/*** 执行方法服务功能* * @author Hyang* @date 12月13日* @explain* * @param inputFile* @param outputFile*/private static void execute(File inputFile, File outputFile) {long startTime = System.currentTimeMillis();// 获取开始时间try {if (startService()) {System.out.println("进行文档转换转换:" + inputFile + " --> " + outputFile);OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);converter.convert(inputFile, outputFile);System.out.println("Office转换成功");stopService();}} catch (Exception e) {stopService();e.printStackTrace();}long endTime = System.currentTimeMillis(); // 获取结束时间System.out.println("程序运行时间: " + (endTime - startTime) / 1000 + "s");}/*** 开启服务* * @author Hyang* @date 12月13日* @explain* * @return*/private static boolean startService() {DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();try {// 设置任务执行超时,long executeOvertime = Constant.EXECUTE_OVERTIME;// 设置任务队列超时long queueOvertime = Constant.QUEUE_OVERTIME;System.out.println("准备启动服务....");configuration.setOfficeHome(Constant.OFFICE_HOME); // 设置安装目录configuration.setPortNumber(Constant.PORT); // 设置转换端口,默认为8100configuration.setTaskExecutionTimeout(executeOvertime);configuration.setTaskQueueTimeout(queueOvertime);officeManager = configuration.buildOfficeManager();officeManager.start(); // 启动服务System.out.println("office服务启动成功!");return true;} catch (Exception ce) {System.out.println("office转换服务启动失败!详细信息:" + ce);return false;}}/*** 关闭服务* * @author Hyang* @date 12月13日* @explain**/private static void stopService() {System.out.println("准备关闭服务....");if (officeManager != null) {officeManager.stop();}System.out.println("office关闭成功!");}}

/*** * @author Dingdong* @date 12月14日* @explain*/public class Test {public static void main(String[] args) {OpenOffice2Pdf openOffice2Pdf = new OpenOffice2Pdf();String path = "E:/TestThreadOpenOffice/1理性追求者的福音.docx";SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");String dateTime = sdf.format(new Date());String resultPath = openOffice2Pdf.execute2Pdf(path, null, dateTime);System.out.println(resultPath);}}

源码如下:点击打开链接

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。