java源代码:
1 package com.jeecms.common.office2pdf; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.IOException; 6 import java.util.Properties; 7 8 import org.artofsolving.jodconverter.OfficeDocumentConverter; 9 import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration; 10 import org.artofsolving.jodconverter.office.OfficeManager; 11 12 /** 13 * 将Office文档转换为PDF文档 14 * @author BaiFL 15 */ 16 public class Office2PDF { 17 18 /** 19 * 环境变量下面的url.properties的绝对路径 20 */ 21 private static final String URL_PATH = Thread.currentThread() 22 .getContextClassLoader().getResource("").getPath().replace("%20", " ") 23 + "com/jeecms/common/office2pdf/url.properties"; 24 25 /** 26 * 将Office文档转换为PDF 27 * @param sourceFile 源文件绝对路径 28 * 包括.doc, .docx, .xls, .xlsx, .ppt, .pptx, txt等 29 * @return result 目标文件绝对路径 30 */ 31 public synchronized static String office2PDF(String sourceFile) { 32 //返回值 33 String result = null; 34 try { 35 File inputFile = new File(sourceFile); 36 if (!inputFile.exists()) { 37 return null; //找不到源文件 38 } 39 40 /** 41 * 目标文件为原文件路径及原文件名.pdf,如果目标路径不存在, 则新建该路径 42 * sourceFile:“source.doc” 43 * targetFile:“source.pdf” 44 */ 45 String targetFile = sourceFile.substring(0, sourceFile.lastIndexOf(".")) + ".pdf"; 46 File outputFile = new File(targetFile); 47 if (!outputFile.getParentFile().exists()) { 48 outputFile.getParentFile().mkdirs(); 49 } 50 51 52 //从url.properties文件中读取OpenOffice的安装根目录 53 Properties prop = new Properties(); 54 // 属性文件输入流 55 FileInputStream fis = new FileInputStream(URL_PATH); 56 // 将属性文件流装载到Properties对象中 57 prop.load(fis); 58 // 关闭流 59 fis.close(); 60 61 //OpenOffice在windows/linux系统下的安装路径 62 String OPENOFFICE_HOME = prop.getProperty("OPENOFFICE_HOME"); 63 64 if (OPENOFFICE_HOME == null){ 65 return null; //找不到安装路径 66 } 67 68 //检查安装路径是否以“/”结尾 69 if (OPENOFFICE_HOME.charAt(OPENOFFICE_HOME.length() - 1) != '/') { 70 OPENOFFICE_HOME += "/"; 71 } 72 73 DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration(); 74 configuration.setOfficeHome(new File(OPENOFFICE_HOME)); // 设置OpenOffice.org安装目录 75 configuration.setPortNumbers(8100); // 设置转换端口,默认为8100 76 configuration.setTaskExecutionTimeout(1000 * 60 * 1L); // 设置任务执行超时为1分钟 77 configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L); // 设置任务队列超时为24小时 78 79 OfficeManager officeManager = configuration.buildOfficeManager(); 80 //启动服务 81 officeManager.start(); 82 OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); 83 //执行转换 84 converter.convert(inputFile, outputFile); 85 if (officeManager != null) { 86 officeManager.stop(); 87 } 88 result = targetFile; 89 } catch (IOException e) { 90 // TODO Auto-generated catch block 91 e.printStackTrace(); 92 }finally{ 93 } 94 return result; 95 } 96 }
url.properties
1 #OpenOffice installation path in the windows/linux operating system 2 3 #test in the windows change it for linux 4 #OPENOFFICE_HOME=C\:/Program Files (x86)/OpenOffice 4/ 5 OPENOFFICE_HOME=/opt/openoffice4/
需要jar包:使用最新的 jodconverter-core-3.0-beta-4