//使用libreOffice比使用OpenOffice转换稳定,libreOffice是OpenOffice的升级版本,但也不能完全盖晗OpenOffice,下面代码注释的部分即为OpenOffice将文档转换成PDF,使用libreOffice/OpenOffice都必须安装对应系统的libreOffice/OpenOffice软件。
package com.frank.demo.file.common.util;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.ExternalOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.gridfs.GridFsTemplate;
import org.springframework.stereotype.Component;
import com.lowagie.text.Document;
import com.lowagie.text.Image;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.PdfWriter;
import com.mongodb.gridfs.GridFSDBFile;
@Component
public class FlieToPdfUtilTwo {
@Autowired
private GridFsTemplate fileRepository;
// private static String openOfficePath = "C:\\Program Files
// (x86)\\OpenOffice 4"; // openoffice软件的安装默认路径
private static String libreOfficePath = "C:\\Program Files\\LibreOffice 5"; // libreOffice软件的安装默认路径
// 记录日志信息
private static Logger logger = LoggerFactory.getLogger(FlieToPdfUtilTwo.class);
public ByteArrayOutputStream fileToPdf(String fileId) throws Exception {
GridFSDBFile gridFSDBFile = fileRepository.findOne(new Query(Criteria.where("_id").is(fileId)));
if (null != gridFSDBFile) {
String type = this.getFileSufix(gridFSDBFile.getFilename());
String folder = System.getProperty("java.io.tmpdir");
String docs[] = { "doc", "docx", "ppt", "pptx", "xls", "xlsx", "t