java应用excel等文件转PDF格式(需要安装openoffice)

  1. 安装openoffice网上一大堆,我就不重复了。
  2. 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());
		}
    }
}
  1. 文件转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等
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值