Apache Openoffice(1):安装Apache Openoffice及使用Java进行word转pdf

本文介绍了如何通过Apache OpenOffice服务将Word文档转换为PDF,以便实现在线预览。步骤包括OpenOffice的安装与启动、Java代码中使用JODConverter进行转换,并分享了关键依赖和测试代码。特别提到了依赖版本及注意事项,如大文件转换速度问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中需要使用在线预览Word的功能,可借助Apache OpenOffice服务然先将word转换成pdf,然后在通过在线pdf在线预览的迂回方式实现,以下记录此过程。

1、安装并启动OpenOffice的服务

去官网找下载包,官网地址:https://www.openoffice.org/download/

建议下载:https://udomain.dl.sourceforge.net/project/openofficeorg.mirror/4.1.10/binaries/zh-CN/Apache_OpenOffice_4.1.10_Linux_x86-64_install-rpm_zh-CN.tar.gz

mkdir /root/openoffice

tar -zxvf /root/Apache_OpenOffice_4.1.10_Linux_x86-64_install-rpm_zh-CN.tar.gz -C /root/openoffice

cd /root/openoffice/zh-CN/RPMS

yum localinstall *.rpm

cd /root/openoffice/zh-CN/RPMS/desktop-integration

yum localinstall openoffice4.1.10-redhat-menus-4.1.10-9807.noarch.rpm

安装成功后,会在 /opt目录下生成openoffice4文件夹, 即/opt/openoffice4

启动服务,启动命令为:

/opt/openoffice4/program/soffice.bin -headless -accept="socket,host=0.0.0.0,port=8100;urp;" -nofirststartwizard & 

查看进程

ps -ef|grep openoffice4
或者
netstat -luntp|grep 8100

至此,安装并启动OpenOffice的服务完成,接下来进行Java调用测试

2、Java使用Openoffice进行word转Pdf

依赖引用:

  <dependencies>

    <!-- junit start -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
    </dependency>
    <!-- junit end -->

    <!-- office to pdf need install something start -->
    <dependency>
      <groupId>com.artofsolving</groupId>
      <artifactId>jodconverter</artifactId>
      <version>2.2.1</version>
    </dependency>
    <dependency>
      <groupId>org.openoffice</groupId>
      <artifactId>ridl</artifactId>
      <version>4.1.2</version>
    </dependency>
    <dependency>
      <groupId>org.openoffice</groupId>
      <artifactId>juh</artifactId>
      <version>4.1.2</version>
    </dependency>
    <dependency>
      <groupId>org.openoffice</groupId>
      <artifactId>jurt</artifactId>
      <version>4.1.2</version>
    </dependency>
    <dependency>
      <groupId>org.openoffice</groupId>
      <artifactId>unoil</artifactId>
      <version>4.1.2</version>
    </dependency>
    <!-- office to pdf need install something end-->

    <!-- commons-io start -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.8.0</version>
    </dependency>
    <!-- commons-io end -->

    <!-- jackson start -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.12.1</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.12.1</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.12.1</version>
    </dependency>
    <!-- jackson end -->

    <!-- log start -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.25</version>
    </dependency>

    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.2.3</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>
    <!-- log end -->

  </dependencies>

注意:

引用的jar包是2.2.1,目前maven上最高版本为2.2.1,2.2.2需要去官网下载,而2.2.2以下版本不支持:docx,pptx,xlsx等格式

    <dependency>
      <groupId>com.artofsolving</groupId>
      <artifactId>jodconverter</artifactId>
      <version>2.2.1</version>
    </dependency

单元测试代码如下:

编写OpenOfficeTransferTest单元测试类

package org.example;

import java.io.File;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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;

public class OpenOfficeTransferTest {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    private String connectIp = "192.168.222.131";
    private int connectPort = 8100;

    // word转pdf,使用openoffice进行转换
    @Test
    public void wordToPdfTest() {

        OpenOfficeConnection connection = null;
        logger.info("connecting start...");
        try {

            connection = new SocketOpenOfficeConnection(connectIp, connectPort);
            connection.connect();

            logger.info("connected...> " +connection);
            DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);

            logger.info("convert starting.....");
            long startMs = System.currentTimeMillis();
            converter.convert(new File("D:\\temp\\444.doc"), new File("D:\\temp\\444.pdf"));
            long endMs = System.currentTimeMillis();
            logger.info("convert success, spend time is : {} ms.",(endMs-startMs) );

        } catch (Exception e) {
            logger.error("", e);
        } finally {

            if(connection != null) {
                connection.disconnect();
                logger.info("connection disconnected. ");
            }
        }
    }

}

注意:word转pdf的速度取决于word文件的大小,如果word文件很大,那么转换速度很慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不死鸟.亚历山大.狼崽子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值