下载地址

// 历史版本地址
downloadarchive.documentfoundation.org/libreoffice/old/
// 最新版本地址
zh-cn.libreoffice.org/download/libreoffice/
// 国内镜像地址
mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/
// 建议使用最新版

安装方式

  1. windows下安装

    一路默认安装即可,自定义安装时切忌不要安装在中文目录下
    安装成功后,可以配置环境变量,方便java程序调用
    
  2. linux下安装

    # 验证之前有没有安装过
    libreoffice --version
    # 有安装进行卸载,没有直接下一步
    yum remove libreoffice-*
    # 解压安装
    tar -zxvf LibreOffice_7.3.3_Linux_x86-64_rpm.tar.gz
    cd /opt/LibreOffice_7.3.3_Linux_x86-64_rpm/RPMS
    # 安装*.rpm
    yum -y localinstall *.rpm
    # 安装libreoffice-headless
    yum install -y libreoffice-headless
    # 检验是否安装完成
    libreoffice7.3 --version
    # 测试Word转PDF并安装libreoffice-writer
    [root@bogon Public]# libreoffice --headless --convert-to pdf 123.docx
    Error: source file could not be loaded
    # 报这个错,表示缺少writer,需要安装
    yum install libreoffice-writer
    # 转换格式说明
    libreoffice --headless --convert-to pdf {文档路径} --outdir {导出目录路径}
    

使用方式

  1. 通过jodconverter调用,特点是屏蔽了具体的命令细节,直接调用convert方法即可,并且是同步返回结果或者异常;
  2. 通过命令调用,特点是需要自己拼接命令以及是异步返回结果;

Jodconverter

// pom 依赖
<dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-core</artifactId><version>4.2.0</version>
</dependency>// 伪代码
public static boolean convertOffice2PDFSyncIsSuccess(File sourceFile, File targetFile) {try {LocalOfficeManager.Builder builder = LocalOfficeManager.builder();builder.officeHome("C:\\Program Files\\LibreOffice");builder.portNumbers(8100);builder.taskExecutionTimeout(5 * 1000 * 60); // minutebuilder.taskQueueTimeout(1 * 1000 * 60 * 60); // hourOfficeManager build = builder.build();build.start();LocalConverter make = LocalConverter.make(build);make.convert(sourceFile).to(targetFile).execute();build.stop();} catch (Exception e) {e.printStackTrace();return false;}return true;
}     

Command

/*** 利用 LibreOffice 将 Office 文档转换成 PDF,该转换是异步的,返回时,转换可能还在进行中,转换是否有异常也未可知* @param filePath       目标文件地址* @param targetFilePath 输出文件夹* @return 子线程执行完毕的返回值*/public static int convertOffice2PDFAsync(String filePath, String fileName, String targetFilePath) throws Exception {String command;int exitStatus;String osName = System.getProperty("os.name");String outDir = targetFilePath.length() > 0 ? " --outdir " + targetFilePath : "";if (osName.contains("Windows")) {command = "cmd /c cd /d " + filePath + " && start soffice --headless --invisible --convert-to pdf ./" + fileName + outDir;} else {command = "libreoffice6.3 --headless --invisible --convert-to pdf:writer_pdf_Export " + filePath + fileName + outDir;}exitStatus = executeOSCommand(command);return exitStatus;}/*** 调用操作系统的控制台,执行 command 指令* 执行该方法时,并没有等到指令执行完毕才返回,而是执行之后立即返回,返回结果为 0,只能说明正确的调用了操作系统的控制台指令,但执行结果如何,是否有异常,在这里是不能体现的,所以,更好的姿势是用同步转换功能。*/private static int executeOSCommand(String command) throws Exception {Process process;process = Runtime.getRuntime().exec(command); // 转换需要时间,比如一个 3M 左右的文档大概需要 8 秒左右,但实际测试时,并不会等转换结束才执行下一行代码,而是把执行指令发送出去后就立即执行下一行代码了。int exitStatus = process.waitFor();if (exitStatus == 0) {exitStatus = process.exitValue();}// 销毁子进程process.destroy();return exitStatus;}

LibreOffice Java使用相关推荐

  1. java调用libreoffice_使用Open / LibreOffice开始使用UNO和Java

    我刚刚开始使用LibreOffice的4.0.1 UNO SDK开发一个 Java项目,aaaand -我在开始时几乎陷入困境.如果我使用OpenOffice.org而不是LibreOffice,我认 ...

  2. java使用libreoffice_关于java使用libreoffice以及openoffice转换问题。

    由于需要,就是用了libreoffice和openoffice这两款软件. 在使用openoffice过程中发现文件过大时会转换失败,经查询得知,版本过低时,转换的文件的大小瓶颈是较小的.此时可以选择 ...

  3. Java word转pdf Linux/windows跨平台 格式完美(利用命令行调用libreoffice)

    参考了里面的libreoffice的用法:https://blog.csdn.net/qwert678000/article/details/72770109 需求描述 最近在做word报表的自动生成 ...

  4. java调用libreoffice_关于java使用libreoffice以及openoffice转换问题。

    由于需要,就是用了libreoffice和openoffice这两款软件. 在使用openoffice过程中发现文件过大时会转换失败,经查询得知,版本过低时,转换的文件的大小瓶颈是较小的.此时可以选择 ...

  5. java调用libreoffice_JAVA实现LibreOffice转换PDF文档

    首先,安装LibreOffice服务 使用.LibreOfficeAndJodconverter.java package com.jalor.LibreOffice; import java.io. ...

  6. java命令行利用libreoffice将office文档转换为pdf文件失败的解决方案

    原因:libreoffice同时只支持两个文档转换的命令行,多于两个的命令行不会进行文档转换. 解决方案:在线程池的线程中,利用java阻塞队列BlockingQueue,设置容量为2,同时只允许两个 ...

  7. LibreOffice 下载、Linux安装、启动、Java集成pdf转换

    下载 官网中文主页:https://zh-cn.libreoffice.org/ 点击下载,可选Linux.macOS.Windows三大类及其不同处理器对应的定制包 本次在Linux安装使用 Lib ...

  8. java docx4j动态生成表格,保存为word,并通过Libreoffice转PDF

    缘起 最近客户要求把业务字段生成一个pdf,包含大量的表格,于是探究了两天版,终于找出一个比较完美的解决方案.本次采用的是docx4j,Libreoffice两个套件,docx4j本身有转PDF的功能 ...

  9. ppt转图片LibreOffice解决方案--java

    由于使用poi组件无法解决附件乱码问题.公司又不愿意使用商业版本.最终选定了LibreOffice来做这个功能.先将ppt转pdf 在将pdf转图片 本文使用的版本为LibreOffice-7.0.0 ...

最新文章

  1. 使用xshell5 从CentOS主机download资料
  2. 放肆地使用UIBezierPath和CAShapeLayer画各种图形
  3. Spring Boot Cache使用与整合
  4. hibernate示例_通过示例Hibernate–第1部分(删除孤儿)
  5. 一个(伪)MaterialDesign风格的博客园皮肤
  6. foundation-datepicker只能选年份_你喝的年份酒和原浆酒都怎么来的?
  7. python的sort()和sorted()的区别_Python 3中sort()和sorted()的区别和用法,Python3
  8. 背景透明,文字不透明效果
  9. (转)如何在windows 2008 安装IIS
  10. iOS开发常用技能点(持续更新中。。。)
  11. {ubuntu}乱七八糟重命名为1 2 3.....png
  12. 测试用例的评审和变更
  13. 关于x86、x86-64、x64、i386、i486、i586和i686等名词的解释
  14. javascript_实现
  15. 教你实现windowsxp自动登录大法(转)
  16. Cortex-M4和M3处理器,究竟哪个市场更大?
  17. 数据结构之树和二叉树算法实现(C语言)
  18. 如何为iPhone和iPad配置邮件设置
  19. 前端第七次培训(JS对象和事件)
  20. Matlab/simulink仿真,直驱永磁风机并网chopper低电压穿越,版本matlab2018a

热门文章

  1. 包含Easylink的微控制器解决方案(www.mxchip.com)
  2. java swing 路径选择_java swing 文件选择,设置默认文件选择路径,桌面路径
  3. 人生百味-3:看似矛盾,实则符合逻辑的错位策略
  4. Android增量更新框架
  5. 从零学音乐----教你认识简谱
  6. EasyUI-draggable
  7. 一套次世代建模的流程是怎样的?资深游戏建模师分享月薪3W技术
  8. 【转型JAVA CSS 基础day01】
  9. NVisual网络可视化工具——智能推荐链路
  10. 打印店A4纸彩印多少钱一张?