SpringBoot使用LibreOffice实现高保真Word转PDF的方法
一、需要先安装LibreOffice
Windows:
访问官网:https://www.libreoffice.org/download/,下载Windows版本安装包,双击运行安装,按提示完成安装,默认安装路径:C:\Program
Files\LibreOffice
Mac:
# 方式1:Homebrew安装 brew install --cask libreoffice # 方式2:官网下载DMG安装
Linux服务器安装:
1.Ubuntu/Debian
# 更新包列表 sudo apt update # 安装LibreOffice sudo apt install libreoffice # 安装中文字体(可选) sudo apt install fonts-wqy-zenhei fonts-wqy-microhei # 验证安装 libreoffice --version
2.CentOS/RHEL:
# 添加EPEL仓库 sudo yum install epel-release # 安装LibreOffice sudo yum install libreoffice # 安装中文字体 sudo yum install wqy-zenhei-fonts
查看安装路径
which libreoffice # 通常路径:/usr/lib/libreoffice
Docker中安装:
# 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
验证安装是否成功
# 查看版本 libreoffice --version # 启动服务测试 soffice --headless --accept="socket,host=0.0.0.0,port=2002;urp;" --nofirststartwizard # 查看进程 ps aux | grep soffice
常见问题解决
字体缺失:
# Linux安装常用字体 sudo apt install fonts-liberation fonts-noto-cjk
端口占用:
# 查看端口占用 netstat -tlnp | grep 2002 # 修改SpringBoot配置中的端口号
内存优化(服务器环境):
# application.yml
jodconverter:
local:
max-tasks-per-process: 20 # 根据服务器性能调整
task-execution-timeout: 120000 # 超时时间(ms)
二、使用示例
添加依赖
<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
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
代码示例:
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();
}
}
简单使用示例
// 将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,确保端口未被占用
生产环境建议配置连接池参数
以上就是SpringBoot使用LibreOffice实现高保真Word转PDF的方法的详细内容,更多关于SpringBoot LibreOffice高保真Word转PDF的资料请关注脚本之家其它相关文章!
相关文章
Java并发编程ReentrantReadWriteLock加读锁流程
这篇文章主要介绍了Java并发编程ReentrantReadWriteLock加读锁流程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-05-05
Java SpringBoot将Word文档转为PDF的全流程解析
在 Java 里,能把 Word 转 PDF 的工具还真不少,本文主要来和大家聊聊Java如何整合SpringBoot实现将Word文档转为PDF的全流程,有需要的可以了解下2025-05-05
MyBatis中#{} 和 ${} 的区别和动态 SQL详解
这篇文章主要介绍了MyBatis中#{}和${}的区别,包括参数传递、安全性、性能等方面,然后详细介绍了如何使用#{}和${}进行排序、模糊查询、动态SQL、数据库连接池等操作,最后,总结了注解方式的动态SQL,感兴趣的朋友跟随小编一起看看吧2024-11-11


最新评论