当前位置: 首页 > news >正文

Windows环境安装LibreOffice实现word转pdf

前言:最近在工作中遇到了一个需求要实现word转pdf,本来我在上一个公司使用aspose.words工具使用的得心应手,都已经把功能点实现了,两句代码轻轻松松,但是被告知不能用商业版的东西,公司要求只能用开源的,那么只有另想办法,想过通过word转图片再转pdf但是实现出来的效果没有想象中那么好,果断放弃,最终斟酌了一下用了libreoffice,那么下面为大家分享一下;

一丶安装Libreoffice

  • 确保在服务器或运行环境中已安装 LibreOffice。
  • 可以从 LibreOffice 官方网站 下载并安装。

使用国内镜像下载更快; 主页 | LibreOffice 简体中文官方网站 - 自由免费的办公套件

二丶​​配置 LibreOffice 为服务模式

  • LibreOffice 可以以无头模式运行,处理转换任务。
  • 通常,您可以通过命令行启动 LibreOffice 服务:
#这个将在后台运行Libreoffice,并监听端口2022
soffice --headless --accept="socket,host=127.0.0.1,port=2002;urp;" --nofirststartwizard &

三丶​​添加maven配置

#添加这两个就行
<dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-local</artifactId><version>4.4.2</version>
</dependency>
<dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-spring-boot-starter</artifactId><version>4.4.2</version>
</dependency>

五丶​​实现代码

package cn.it.resource.util;import org.jodconverter.core.office.OfficeException;
import org.jodconverter.local.LocalConverter;
import org.jodconverter.local.office.LocalOfficeManager;import java.io.File;public class JODConverterExample {public static void main(String[] args) {// 启动 LibreOffice 管理器LocalOfficeManager officeManager = null;try {officeManager = LocalOfficeManager.builder().portNumbers(2002) // 与启动 LibreOffice 时的端口一致.install().build();officeManager.start();File inputFile = new File("D:/home/server/886bdac8cf.docx"); // 替换为实际路径File outputFile = new File("D:/home/server/wordTopdf2.pdf"); // 替换为实际路径LocalConverter.builder().officeManager(officeManager).build().convert(inputFile).to(outputFile).execute();System.out.println("文件转换成功!");} catch (OfficeException e) {e.printStackTrace();} finally {if (officeManager != null) {try {officeManager.stop();} catch (OfficeException e) {e.printStackTrace();}}}}
}

六丶​​出现报错异常,并解决

Exception in thread "main" java.lang.NullPointerException: officeHome must not be nullat org.jodconverter.core.util.AssertUtils.notNull(AssertUtils.java:131)at org.jodconverter.local.office.LocalOfficeUtils.validateOfficeHome(LocalOfficeUtils.java:352)at org.jodconverter.local.office.LocalOfficeManager$Builder.build(LocalOfficeManager.java:189)at cn.it.resource.util.JODConverterExample.main(JODConverterExample.java:19)

启动第五步代码的时候出现了上述错误,通过检查后发现没有配置libreoffice的安装路径,我尝试了在环境变量中直接配置路径,没有用,只有自己定义实现路径; 

        // 必须指定安装路径 否则会报:officeHome must not be nullString officeHome = "D:/libreoffice";// 启动 LibreOffice 管理器LocalOfficeManager officeManager = null;try {officeManager = LocalOfficeManager.builder().portNumbers(2002) // 与启动 LibreOffice 时的端口一致.officeHome(officeHome).install().build();

好了我的分享就在这里了,如果需要上linux服务器操作,在网上找下命令安装一下就行了,然后将代码中的安装路径修改,然后就可以使用了;

相关文章:

  • 设备数据看板助力自动化工厂实现生产智能精细化管理
  • 通用简洁工作汇报项目评估营销策划工作总结年终汇报PPT模版8套一组分享
  • VAPO:视觉-语言对齐预训练(对象级语义)详解
  • Visual Studio构建三剑客:生成/重新生成/清理解决方案的正确打开方式
  • 项目记录:「五秒反应挑战」小游戏的开发全过程
  • 在嵌入式系统中, 一般链路层断开多久,断开TCP为好
  • 数据库-oracle-包-视图传参
  • Git本地使用小Tips
  • Axure疑难杂症:垂直菜单展开与收回(4大核心问题与专家级解决方案)
  • ModbusTCP转 Profinet网关:热收缩包装机智能化改造核心方案
  • 基于 Keil 的 STM32 全模块开发
  • day30-模块和库的导入
  • 基于Qt的app开发第九天
  • ubuntu 20.04 ping baidu.coom可以通,ping www.baidu.com不通 【DNS出现问题】解决方案
  • 阿里云国际站与国内站:局势推进中的多维差异
  • C++ :STL
  • 蓝桥杯框架-LED蜂鸣器继电器
  • 【C++】哈希的概念与实现
  • PCL点云库点云数据处理入门系列教材目录(2025年5月更新....)
  • 从 Word2Vec 到 BERT:AI 不止是词向量,更是语言理解
  • 去年中企海外新增风电装机量5.4GW,亚太区域占比过半
  • 中国预警机雷达有多强?可数百公里外看清足球轨迹
  • 集齐中国泳坛“老中青”!200自潘展乐力压汪顺、孙杨夺冠
  • 上海位居全球40城科技传播能力第六名
  • 天问二号探测器顺利转入发射区
  • 浙江理工大学传播系原系主任刘曦逝世,年仅44岁