office文件轉PDF

office文件轉PDF

所需依賴 : jodconverter-2.2.2.jar
注:轉換文件需要部署openoffice環境,可參考博主藍色格子的文章

	/**
     * office文件轉PDF
     * @param file
     * @return
     */
    public static File Office2Pdf(File file,String pdfSavePath, String openOfficeIp){
        String rule = "txt|doc|docx|xlsx|xls|pdf|ppt|pptx";
        String fileType = file.getName().substring(file.getName().indexOf(".") + 1);
        if (!fileType.toLowerCase().matches(rule)){
            logger.info("不支持的文件格式{}",fileType);
            return file;
        }
        //判斷源文件是否存在
        if (!file.exists()){
            throw new RuntimeException("源文件不存在!");
        }
        //輸出文件
        File pdfFile = new File( pdfSavePath + File.separator + file.getName().substring(0,file.getName().lastIndexOf("."))+".pdf");
        // 轉換後的pdf文件保存位置
        logger.info("轉換後的pdf文件保存位置:{}",pdfFile.getAbsolutePath());
        OpenOfficeConnection connection = null;
        try {
            logger.debug("PDF開始轉換");
            // PDF格式特殊處理
            if ("pdf".equals(fileType)){
                FileUtils.copyFile(file,pdfFile);
            }else{
                //創建連接
                connection = new SocketOpenOfficeConnection(openOfficeIp,8100);
                //遠程連接OpenOffice服務
                connection.connect();
                //創建文件轉換器
                DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);
                //開始轉換
                converter.convert(file, pdfFile);
            }
            Thread.sleep(1000);
            if (pdfFile.exists()){
                logger.info("文件{}轉換成功",file.getAbsolutePath());
            }else {
                logger.info("文件{}轉換失敗",file.getAbsolutePath());
            }
            if (connection != null && connection.isConnected()){
                connection.disconnect();
            }
        } catch (Exception e) {
            if (connection != null && connection.isConnected()){
                connection.disconnect();
            }
            e.printStackTrace();
            logger.error("office轉PDF異常:{}",e.getMessage());
            return file;
        }
        return pdfFile;
    }

Main 測試

import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.StreamOpenOfficeDocumentConverter;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;

/**
 * @Describe: office文件轉PDF工具
 * @Author: zml
 * @Date: 2020-5-18 17:58:51
 */
public class OfficeToPDFUtils {

    private static Logger logger = LoggerFactory.getLogger(OfficeToPDFUtils.class);

    public static void main(String[] args) {
        File file = new File("D:\\liang\\office轉PDF\\測試文件.docx");
        String pdfSavePath = "D:\\liang\\office轉PDF";
        String openOfficeIp = "111.229.31.20";
        Office2Pdf(file,pdfSavePath,openOfficeIp);
    }
}

對比示例
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章