使用openoffice转换ms_office to pdf

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

jar包

转载于:https://www.cnblogs.com/baifeilong/p/3626298.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值