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