Office文档转换成PDF
2018-03-06 23:02
323 查看
分享知识 传递快乐
Office文档转换成PDF
文档转换的方式有很多种,比如有Apache下的POI、jodconverter等技术。本例用的jodconverter-core-3.0技术对文档进行转换,首先下载所需的JAR包有:commons-cli-1.1.jar commons-io-1.4.jar jodconverter-core-3.0-beta-4.jar juh-3.2.1.jar jurt-3.2.1.jar ridl-3.2.1.jar unoil-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"; // 设置转换端口,默认为8100 public 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 2016年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 2016年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 2016年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 2016年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); // 设置OpenOffice.org安装目录 configuration.setPortNumber(Constant.PORT); // 设置转换端口,默认为8100 configuration.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 2016年12月13日 * @explain * */ private static void stopService() { System.out.println("准备关闭服务...."); if (officeManager != null) { officeManager.stop(); } System.out.println("office关闭成功!"); } }
/** * * @author Dingdong * @date 2016年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); } }
源码如下:点击打开链接
相关文章推荐
- java将office文档pdf文档转换成swf文件在线预览
- 利用OpenOffice将word等office文档转换成PDF
- 这个是微软官方关于office 2007转换pdf等格式的接口调用文档
- C#实现office文档转换为PDF或xps
- Java利用OpenOffice将word等office文档转换成PDF
- Office文档转换成PDF文档
- C#实现office文档转换为PDF格式
- C#实现office文档转换为PDF或xps的一些方法
- [文档格式转换神器]pdf,jpg,xps转doc,xls,ppt等office格式
- java将office文档pdf文档转换成swf文件在线预览
- 使用MSOffice .NET API 将文档(Word \ Excel \ PowerPoint \ Visio \ text \ XML \ RTF \ CSV等)转换为PDF
- C#实现office文档转换为PDF或xps的一些方法
- 使用Office API 将word文档转换为Pdf
- Office文档如何转换 PDF 转 DOC XLS
- (java office转pdf) MS Office2010、WPS2015、OpenOffice4用Java将Office文档转换为PDF,WIN7 64位系统
- 仿百度文库解决方案(四)——利用JODConverter调用OpenOffice.org服务转换文档为PDF
- C#实现office文档转换为PDF或xps的一些方法(留存备用)
- 将office文档(word,excel,powerpoint)转换为pdf
- java调用openoffice将office系列文档转换为PDF的示例方法
- office(doc,xls,txt,pdf,ppt)文档在线预览及转换(office2pdf) - PHP版