- 安装openoffice网上一大堆,我就不重复了。
- openoffice跟随java应用启动。(注意:在停止java应用的时候记得杀死openoffice,防止重启应用openoffice启动报错,【也可以更改代码判断(需自己编写)openoffice是否已经启动,启动了再java应用重启就不执行】)
import javax.annotation.PostConstruct;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeException;
import org.artofsolving.jodconverter.office.OfficeManager;
import org.springframework.context.annotation.Configuration;
//编码启动openoffice
@Configuration
public class OfficeManagerFactory {
static Logger logger = LogManager.getLogger(OfficeManagerFactory.class);
private static OfficeManager officeManager =null;
private final String officeHome="/opt/openoffice4";
private final Integer port = 8100;
private final Long taskexecutionTimeout=300000L;
private final Long taskqueueTimeout=86400000L;
private final Integer maxtasksPerprocess=10;
private OfficeManagerFactory(){
};
//程序启动时执行
@PostConstruct
void init(){
try {
if(officeManager==null){
logger.info("准备启动openOffice服务....");
DefaultOfficeManagerConfiguration configuration=new DefaultOfficeManagerConfiguration();
//String officeHome = "C:\\Program Files\\OpenOffice 4";
configuration.setOfficeHome(officeHome);// 设置OpenOffice.org安装目录
configuration.setPortNumbers(port); // 设置转换端口,默认为8100
configuration.setTaskExecutionTimeout(taskexecutionTimeout);// 设置任务执行超时为5分钟
configuration.setTaskQueueTimeout(taskqueueTimeout);// 设置任务队列超时为24小时
configuration.setMaxTasksPerProcess(maxtasksPerprocess);
officeManager = configuration.buildOfficeManager();
officeManager.start(); // 启动服务
logger.info("office转换服务启动成功!");
}
} catch (Exception ce) {
logger.error("office转换服务启动失败,异常信息:"+ce.getMessage());
}
}
public static OfficeManager getOfficeManager(){
return officeManager;
}
//关闭服务器
public static void stopService() {
logger.info("关闭office转换服务....");
try {
if (officeManager != null) {
officeManager.stop();
logger.info("关闭office转换成功!");
}
} catch (OfficeException e) {
logger.error("关闭office转换失败,异常信息:" + e.getMessage());
}
}
}
- 文件转PDF格式
import java.io.File;
import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Image;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.OfficeManager;
import org.springframework.util.StringUtils;
import com.phfund.openoffice.OfficeManagerFactory;
public class ExcelToPdfUtils{
static Logger logger = LogManager.getLogger(ExcelToPdfUtils.class);
public static String openOfficeToPDF(String inputFilePath){
try {
if (StringUtils.isEmpty(inputFilePath)) {
return null;
}
logger.info("开始转换文件:"+inputFilePath);
File inputFile = new File(inputFilePath);
String fixStr = inputFilePath.substring(inputFilePath.lastIndexOf(".") + 1);
// 转换后的文件路径
String outputFilePath_end = inputFilePath.replaceAll("." + fixStr, ".pdf");
if (!inputFile.exists()) {
return null;
}
OfficeManager officeManager = OfficeManagerFactory.getOfficeManager();
// 连接OpenOffice
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
File outputFile = new File(outputFilePath_end);
// 假如目标路径不存在,则新建该路径
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().mkdirs();
}
//判断转换文件的编码方式,如果不是UTF-8,则改为UTF-8编码
converter.convert(inputFile, outputFile);
logger.info("\n文件:" + inputFilePath + "\n转换为\n目标文件:" + outputFilePath_end + "\n成功!");
return outputFilePath_end;
} catch (Exception e) {
logger.error(e.getMessage());
}
return null;
}
}
使用 com.aspose.words将word转换PDF等