借助OpenOffice实现office转pdf(Java)的.exe小程序
原料:OpenOffice4.1.2(之所以选OpenOffice是因为可以跨平台,下载后直接安装),jodconverter-core-3.0-beta-4-dist.zip(可以搜博客园),Exe4j
目标:生成一个office2pdf.exe程序,在命令行中用该程序实现转换。
1.先建立一个文件夹(我在桌面建了一个ExecuteFile文件夹,将jodconverter-core-3.0-beta-4-dist.zip解压后的lib文件夹拷贝到该文件夹)
2.下面是在eclipse中建的项目
3.代码:
Office2Pdf.java代码
package com.gohigh;
import java.util.*;
import java.io.*;
import org.apache.log4j.Logger;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;
/**
*
* @author lxh
*/
public class Office2Pdf{
public static Logger logger = Logger.getLogger(Office2Pdf.class);
public static ResourceBundle bundle =null;
public Office2Pdf(){}
public OfficeManager getOfficeManager() {
DefaultOfficeManagerConfiguration config = new DefaultOfficeManagerConfiguration();
// 获取OpenOffice的安装目录
Properties prop=new Properties();
String rootPath = System.getProperty("user.dir").replace("\\", "/");
FileInputStream in;
try {
in = new FileInputStream(rootPath+"/OpenOffice_Home.properties");try {
prop.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
logger.error("openoffice安装配置文件找不到");
}
String officeHome=prop.getProperty("OpenOffice_Home");
config.setOfficeHome(officeHome);
OfficeManager officeManager = config.buildOfficeManager();
return officeManager;
}
public void office2pdf(String inputFilePath, String outputFilePath) {
OfficeManager officeManager = getOfficeManager();
// 启动OpenOffice的服务
officeManager.start();
// 连接OpenOffice
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
if (null != inputFilePath) {
File inputFile = new File(inputFilePath);
// 判断目标文件路径是否为空
if (null == outputFilePath) {
// 转换后的文件路径
outputFilePath= getOutputFilePath(inputFilePath);
File outputFile = new File(outputFilePath);
if (inputFile.exists()) {// 找不到源文件, 则返回
converter.convert(inputFile, outputFile);
}else{
logger.error("源文件无效");
}
} else {
File outputFile=new File(outputFilePath);
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().mkdirs();
}
File[] files=outputFile.getParentFile().listFiles();
for(File ff:files){
if(ff.equals(outputFile))
logger.warn("文件名重复");
}
if (inputFile.exists()) {// 找不到源文件, 则返回
converter.convert(inputFile, outputFile);
logger.info("转换完成");
}else{
logger.error("源文件无效");
}
}
officeManager.stop();
} else {
logger.error("没有源文件");
}
}
public String getOutputFilePath(String inputFilePath) {
String[] s=inputFilePath.split("\\.");
String outputFilePath =s[0]+".pdf";
return outputFilePath;
}
}
Process.java代码
package com.gohigh; import org.apache.log4j.Logger; public class Process { /** * @param args */ public static Logger logger = Logger.getLogger(Process.class); public static void main(String[] args) { Office2Pdf office=new Office2Pdf(); try{ office.office2pdf(args[0], args[1]); }catch(Exception e){ logger.error("请输入有效路径"); } } }
OpenOffice_Home.properties(配置OpenOffice的安装目录,然后将其拷贝到要输出的文件夹中,以便在项目打包成jar包后配置其安装路径,此处是默认安装路径)
OpenOffice_Home=C:\\Program Files (x86)\\OpenOffice 4
log4j.properties(此处是想运用刚学习的日志知识,输出日志路径为F://logs)
### \u8BBE\u7F6E### log4j.rootLogger = debug,stdout,D,E ### \u8F93\u51FA\u4FE1\u606F\u5230\u63A7\u5236\u62AC ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### \u8F93\u51FADEBUG \u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\u5230=E://logs/error.log ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = F://logs/log.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### \u8F93\u51FAERROR \u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\u5230=E://logs/error.log ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =F://logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.Conversi
4.将项目Office2Pdf打成jar包,输出到ExecuteFile文件中
最终用jar包外面的openoffice安装路径配置文件,所以不将它打包,此时ExecuteFile文件夹中便生成了Office2Pdf.jar
5.利用Exe4j将jar文件转成可执行程序office2pdf.exe(此处转化可百度,为防目标机器没有安装jdk,可先将jre拷贝到ExecuteFile文件夹,以便生成.exe时用)
最终ExecuteFile文件夹中便有了office2pdf.exe
此时便大功告成了,下面可以直接使用了:
ExecuteFile文件夹中生成的1.pdf文件
打开可见转化效果良好~个人简历就不打开了

浙公网安备 33010602011771号