1.1 Java程序中可以利用OpenOffice,将办公文档(包括doc、docx、xls、xlsx等)转换为PDF格式的文档。由于PDF格式的文档可以达到在线预览的效果,而Office办公文档实现在线预览相对来说会比较麻烦,但曲线救国,通过文档格式的转换,从而也很容易地达到对Office办公文档实现在线预览的效果。
2.1 以Windows版本的OpenOffice安装为例,到OpenOffice官网下载最新版本的OpenOffice软件【[OpenOffice下载地址](http://www.openoffice.org/download/index.html】
2.2 下载完毕后进行安装,但需要记住软件的安装目录,如安装在D:/Program Files (x86)/OpenOffice 4,这个安装路径在文档格式转换的时候需要用到。
/**
*
* @description:将Office格式的文档转换为PDF格式的文档
* @author huang.j
* @date 2017年5月24日 上午11:44:03
* @param inputFilePath
*
*/
public void convertWord2Pdf(String inputFilePath) {
DefaultOfficeManagerConfiguration config = new DefaultOfficeManagerConfiguration();
// OpenOffice安装在本地环境的目录
String officeHome = "D:/Program Files (x86)/OpenOffice 4";
config.setOfficeHome(officeHome);
OfficeManager officeManager = config.buildOfficeManager();
officeManager.start();
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
String outputFilePath = getReplaceFileAbsolutePath(inputFilePath, ".pdf");
File inputFile = new File(inputFilePath);
if (inputFile.exists()) {
File outputFile = new File(outputFilePath);
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().mkdirs();
}
// 进行PDF格式的转换
converter.convert(inputFile, outputFile);
}
officeManager.stop();
}
/**
*
* @description:更改文档后缀为指定的后缀名
* @author huang.j
* @date 2017年5月24日 上午11:44:20
* @param inputFilePath 输入文档的绝对路径
* @param replaceEndWith 指定的后缀名
* @return 返回替换指定后缀名的文档的绝对路径
*
*/
private String getReplaceFileAbsolutePath(String inputFilePath, String replaceEndWith) {
String replaceFilePath = null;
Pattern pattern = Pattern.compile("(\\.[a-zA-Z]+)");
Matcher matcher = pattern.matcher(inputFilePath);
String endWith = null;
if(matcher.find()) {
endWith = matcher.group(1);
}
if(StringUtil.isEmpty(endWith)) {
return null;
}
replaceFilePath = inputFilePath.replaceAll(endWith, replaceEndWith);
return replaceFilePath;
}
/**
*
* @description:预览PDF文件
* @author huang.j
* @date 2017年5月23日 下午4:51:59
* @param attathFile
* @param response
*
*/
public void previewPdf(File attathFile, HttpServletResponse response) {
response.setContentType("application/pdf");
try {
if(attathFile.exists()) {
DataOutputStream dataOutputStream = new DataOutputStream(response.getOutputStream());
DataInputStream dataInputStream = new DataInputStream(new FileInputStream(attathFile));
byte[] buffer = new byte[2048];
int len = buffer.length;
while((len = dataInputStream.read(buffer, 0, len)) != -1) {
dataOutputStream.write(buffer);
dataOutputStream.flush();
}
dataInputStream.close();
dataOutputStream.close();
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
1) commons-cli-xx.jar
2) commons-io-xx.jar
3) jodconverter-core-3.0-beta-4.jar
4) json-xxx.jar
5) juh-xx.jar
6) jurt-xx.jar
7) ridl-xx.jar
8) unoil-xx.jar