java office轉pdf

java office 轉 pdf支持所有文檔格式。

準備環境:java開發環境(不多說),centos 7(一枚),LibreOffice安裝包(下載地址:https://zh-cn.libreoffice.org/)

LibreOffice此處下載最穩定版本
這裏寫圖片描述

1.安裝LibreOffice_5.3.7_Linux_x86-64_rpm.tar.gz

解壓

tar -xzvf LibreOffice_5.3.7_Linux_x86-64_rpm.tar.gz

解壓後得到LibreOffice_5.3.7.2_Linux_x86-64_rpm目錄

cd LibreOffice_5.3.7.2_Linux_x86-64_rpm/PRMS

切換到安裝目錄

這裏寫圖片描述

rpm -ivh -f --nodeps *.rpm

安裝所有的rpm
默認安裝在opt下

2.給LibreOffice添加中文字體
http://download.csdn.net/download/woaiwo521/10233185

上傳到

/opt/libreoffice5.3/share/fonts/truetype

3.測試轉換
上傳一個office

./soffice -headless -invisible -convert-to pdf /tmp/test/test.doc -outdir /tmp/test/

執行的是報錯

/opt/libreoffice5.3/program/oosplash: error while loading shared libraries: libXinerama.so.1: cannot open shared object file: No such file or directory

需要安裝依賴

yum  install -y libXinerama

再次測試轉換

/opt/libreoffice5.3/program/soffice.bin: error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory

yum install -y ibus

再次測試轉換

終於轉換成功了。

這裏寫圖片描述

xshell 用sz命令。下載到本地查看轉換效果。效果還不錯
這裏寫圖片描述
啓動服務

/opt/libreoffice5.3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

轉換java工具類

package com.rtaksoft.core.office2pdf;

import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry;
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.log4j.Logger;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * office轉pdf
 * LibreOffice_5.3.4
 */
public class Office2Pdf {
    private static Logger logger = Logger.getLogger(Office2Pdf.class);

    /**
     * office轉pdf
     * @param ip
     * @param port
     * @param sourceFile
     * @param destFile
     * @return
     */
    public static int office2Pdf(String ip, int port, String sourceFile, String destFile) {
        int r_int = 0;
        OpenOfficeConnection connection = null;
        try {
            File inputFile = new File(sourceFile);
            if (!inputFile.exists()) {
                r_int = 2;
            }else{
                File outputFile = new File(destFile);
                if (!outputFile.getParentFile().exists()) {
                    outputFile.getParentFile().mkdirs();
                }
                connection = new SocketOpenOfficeConnection(
                        ip, port);
                connection.connect();

                DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);
                converter.convert(inputFile, outputFile);
            }
        } catch (Exception e) {
            logger.error(e);
            r_int = 1;
        }finally {
            connection.disconnect();
        }
        return r_int;
    }

    /**
     * office轉pdf
     * @param ip
     * @param port
     * @param inputStream
     * @param outputStream
     * @return
     */
    public static int office2Pdf(String ip, int port, InputStream inputStream, String extension1, OutputStream outputStream, String extension2) {
        int r_int = 0;
        OpenOfficeConnection connection = null;
        try {
            connection = new SocketOpenOfficeConnection(
                    ip, port);
            connection.connect();

            DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);
            DefaultDocumentFormatRegistry defaultDocumentFormatRegistry = new DefaultDocumentFormatRegistry();
            converter.convert(inputStream,defaultDocumentFormatRegistry.getFormatByFileExtension(extension1),outputStream,defaultDocumentFormatRegistry.getFormatByFileExtension(extension2));
            r_int = 0;
        } catch (Exception e) {
            logger.error(e);
            r_int = 1;
        }finally {
            connection.disconnect();
        }
        return r_int;
    }
}

相關jar下載
https://download.csdn.net/download/woaiwo521/12086672

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