Java调用ApacheOpenOffice将Word转PDF

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;
        }
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟叮咚糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值