Java调用ApacheOpenOffice将Word转PDF
踩坑后补充建议首先进行以下操作
1、安装X Window System
yum groupinstall "X Window System"
2、安装字体
yum -y install fontconfig #安装字体库
yum -y install ttmkfdir mkfontscale #安装字体索引信息
3、上传中文字体
cd /usr/share/fonts
mkdir zh
- 将windows系统内中文字体拷贝一份上传到服务器。
cp -r font/* /usr/share/fonts/zh/
mkfontscale
mkfontdir
fc-cache
- 查看安装完成的中文字体
fc-list :lang=zh
Linux安装ApacheOpenOffice
安装
- 下载地址:http://www.openoffice.org/download/index.html
1、解压
tar -zxvf Apache_OpenOffice_4.1.13_Linux_x86-64_install-rpm_zh-CN.tar.gz
2、进入rpm安装
cd zh-CN/RPMS
rpm -ivh *.rpm
进入到RPMS/desktop-integration文件夹中执行
rpm -ivh openoffice4.1.13-redhat-menus-4.1.13-9810.noarch.rpm
测试
- 上传jodconverter-2.2.2的zip包
- 解压完后,上传一个word文档和jar包同级
- 执行转换命令
java -jar jodconverter-cli-2.2.2.jar up.docx up.pdf
OpenOffice服务没有启动,启动一下。
/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
报错一:
no suitable windowing system found, exiting.
说是没有什么桌面系统无法启动,然后万千百度后,安装了桌面系统
yum grouplist #查看可安装组件
yum groupinstall "X Window System"
报错二:
error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory.
执行安装
yum install libXext.x86_64
安装完成后
从/usr/lib64中将libXext.so.6拷贝到/opt/openoffoce4/program中
cp libXext.so.6 /opt/openoffice4/program/
然后拷贝完成后赋予权限
chmod +x libXext.so.6
转换
- 8100端口已被服务占用
- 执行测试
java -jar jodconverter-cli-2.2.2.jar demo.docx demo.pdf
Java转换方法
public static void word2Pdf(File sourceFile, File pdfFile) throws Exception {
OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
try {
connection.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(sourceFile, pdfFile);
connection.disconnect();
log.info("OpenOffice正在转换文件中.");
} catch (java.net.ConnectException e) {
e.printStackTrace();
log.error("OpenOffice服务未启动.");
throw e;
} catch (OpenOfficeException e) {
e.printStackTrace();
log.error("读取文件失败.");
throw e;
} catch (Exception e) {
e.printStackTrace();
log.error("未知异常.");
throw e;
}
}