springboot中使用LibreOffice实现word转pdf(还原程度很高,可以配置线程并发!)

springboot中使用LibreOffice实现word转pdf(还原程度很高,可以配置线程并发!)

一、需要先安装LibreOffice

Windows:

访问官网:https://www.libreoffice.org/download/,下载Windows版本安装包,双击运行安装,按提示完成安装,默认安装路径:C:\\Program

Files\LibreOffice

Mac:

js 复制代码
# 方式1:Homebrew安装
brew install --cask libreoffice

# 方式2:官网下载DMG安装

Linux服务器安装:

1.Ubuntu/Debian

cmd 复制代码
# 更新包列表
sudo apt update

# 安装LibreOffice
sudo apt install libreoffice

# 安装中文字体(可选)
sudo apt install fonts-wqy-zenhei fonts-wqy-microhei

# 验证安装
libreoffice --version

2.CentOS/RHEL:

cmd 复制代码
# 添加EPEL仓库
sudo yum install epel-release

# 安装LibreOffice
sudo yum install libreoffice

# 安装中文字体
sudo yum install wqy-zenhei-fonts

查看安装路径

cmd 复制代码
which libreoffice
# 通常路径:/usr/lib/libreoffice

Docker中安装:

cmd 复制代码
# Dockerfile
FROM openjdk:11-jre-slim

# 安装LibreOffice
RUN apt update && \
    apt install -y libreoffice && \
    apt clean && \
    rm -rf /var/lib/apt/lists/*

# 设置环境变量
ENV OFFICE_HOME=/usr/lib/libreoffice

验证安装是否成功

cmd 复制代码
# 查看版本
libreoffice --version

# 启动服务测试
soffice --headless --accept="socket,host=0.0.0.0,port=2002;urp;" --nofirststartwizard

# 查看进程
ps aux | grep soffice

常见问题解决

字体缺失:

js 复制代码
# Linux安装常用字体
sudo apt install fonts-liberation fonts-noto-cjk

端口占用:

js 复制代码
# 查看端口占用
netstat -tlnp | grep 2002

# 修改SpringBoot配置中的端口号

内存优化(服务器环境):

js 复制代码
# application.yml
jodconverter:
  local:
    max-tasks-per-process: 20  # 根据服务器性能调整
    task-execution-timeout: 120000  # 超时时间(ms)

二、使用示例

添加依赖

xml 复制代码
<dependency>
    <groupId>org.jodconverter</groupId>
    <artifactId>jodconverter-spring-boot-starter</artifactId>
    <version>4.4.6</version>
</dependency>
<dependency>
    <groupId>org.jodconverter</groupId>
    <artifactId>jodconverter-local</artifactId>
    <version>4.4.6</version>
</dependency>

配置application.yml

js 复制代码
jodconverter:
  local:
    enabled: true
    office-home: /usr/lib/libreoffice  # Linux
    # office-home: C:\Program Files\LibreOffice  # Windows
    port-numbers: 2002
    max-tasks-per-process: 100

代码示例:

java 复制代码
package com.geofly.geocloud.queryapp.intranet.service;

import org.jodconverter.core.DocumentConverter;
import org.jodconverter.core.office.OfficeException;
import org.springframework.stereotype.Service;

import java.io.File;

/**
 * word转pdf
 */
@Service
public class WordToPdfService {

    private final DocumentConverter documentConverter;

    public WordToPdfService(DocumentConverter documentConverter) {
        this.documentConverter = documentConverter;
    }

    /**
     * word转pdf
     * @param wordFile
     * @param pdfFile
     * @throws OfficeException
     */
    public void wordToPdf(File wordFile, File pdfFile) throws OfficeException {
        documentConverter.convert(wordFile)
                .to(pdfFile)
                .execute();
    }
}

简单使用示例

java 复制代码
// 将DOCX转换为PDF
try {
       wordToPdfService.wordToPdf(docxFile, new File(upLoadPath, pdfFilePath));
    } catch (Exception e) {
       OpLogUtil.info("转pdf操作出错了:" + e.getMessage());
       return "转pdf操作出错了:" + e.getMessage() + ",pdfFilePath:" + pdfFilePath;
   }

非常的好用!

注意:

确保系统已安装LibreOffice

默认端口2002,确保端口未被占用

生产环境建议配置连接池参数

相关推荐
AI导出鸭4 分钟前
Claude的LaTeX生成PDF文件复制后数学公式乱码,怎样修改?专业用户首选“AI导出鸭”
人工智能·pdf·ai导出鸭
【赫兹威客】浩哥40 分钟前
基于SpringBoot+Vue3的舆情文本分析系统|Elasticsearch检索+情感分析+话题热度追踪 毕设项目
spring boot·elasticsearch·课程设计
AI导出鸭2 小时前
怎么让文心做表格?AI导出鸭苹果版将文心输出的管道表格智能解析为二维结构,一键导出为Excel或Word标准表格
人工智能·chatgpt·word·excel·ai导出鸭
Lyyaoo.10 小时前
Spring Boot Validation 声明式参数校验
spring boot·后端·mysql
南城以南溫暖如初14712 小时前
外卖CPS实战指南:从技术选型到运营落地全流程解析
java·spring boot·mysql·架构·vue
wujian831117 小时前
AI手机版怎么直接生成word?用“AI 导出鸭”把碎片时间变成专业文档
人工智能·ai·chatgpt·智能手机·word·ai导出鸭
鲲穹AI种草18 小时前
多文档批量整理如何选?多款 Word 处理工具能力客观记录
word·文档处理
paopaokaka_luck20 小时前
基于springboot3+vue3的文山民族文化资源展示与推广平台(协同过滤算法、Echarts 图形化分析)
java·前端·spring boot·学习·echarts
wno70420 小时前
使用Spring Boot发送邮件
数据库·spring boot·后端
AI英德西牛仔20 小时前
Claude导出word指令的PC端最优解:AI导出鸭电脑版底层逻辑全拆解
人工智能·word·excel·deepseek·ai导出鸭