LibreOffice Java使用
下载地址
// 历史版本地址
downloadarchive.documentfoundation.org/libreoffice/old/
// 最新版本地址
zh-cn.libreoffice.org/download/libreoffice/
// 国内镜像地址
mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/
// 建议使用最新版
安装方式
windows下安装
一路默认安装即可,自定义安装时切忌不要安装在中文目录下 安装成功后,可以配置环境变量,方便java程序调用
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 {导出目录路径}
使用方式
- 通过jodconverter调用,特点是屏蔽了具体的命令细节,直接调用convert方法即可,并且是同步返回结果或者异常;
- 通过命令调用,特点是需要自己拼接命令以及是异步返回结果;
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使用相关推荐
- java调用libreoffice_使用Open / LibreOffice开始使用UNO和Java
我刚刚开始使用LibreOffice的4.0.1 UNO SDK开发一个 Java项目,aaaand -我在开始时几乎陷入困境.如果我使用OpenOffice.org而不是LibreOffice,我认 ...
- java使用libreoffice_关于java使用libreoffice以及openoffice转换问题。
由于需要,就是用了libreoffice和openoffice这两款软件. 在使用openoffice过程中发现文件过大时会转换失败,经查询得知,版本过低时,转换的文件的大小瓶颈是较小的.此时可以选择 ...
- Java word转pdf Linux/windows跨平台 格式完美(利用命令行调用libreoffice)
参考了里面的libreoffice的用法:https://blog.csdn.net/qwert678000/article/details/72770109 需求描述 最近在做word报表的自动生成 ...
- java调用libreoffice_关于java使用libreoffice以及openoffice转换问题。
由于需要,就是用了libreoffice和openoffice这两款软件. 在使用openoffice过程中发现文件过大时会转换失败,经查询得知,版本过低时,转换的文件的大小瓶颈是较小的.此时可以选择 ...
- java调用libreoffice_JAVA实现LibreOffice转换PDF文档
首先,安装LibreOffice服务 使用.LibreOfficeAndJodconverter.java package com.jalor.LibreOffice; import java.io. ...
- java命令行利用libreoffice将office文档转换为pdf文件失败的解决方案
原因:libreoffice同时只支持两个文档转换的命令行,多于两个的命令行不会进行文档转换. 解决方案:在线程池的线程中,利用java阻塞队列BlockingQueue,设置容量为2,同时只允许两个 ...
- LibreOffice 下载、Linux安装、启动、Java集成pdf转换
下载 官网中文主页:https://zh-cn.libreoffice.org/ 点击下载,可选Linux.macOS.Windows三大类及其不同处理器对应的定制包 本次在Linux安装使用 Lib ...
- java docx4j动态生成表格,保存为word,并通过Libreoffice转PDF
缘起 最近客户要求把业务字段生成一个pdf,包含大量的表格,于是探究了两天版,终于找出一个比较完美的解决方案.本次采用的是docx4j,Libreoffice两个套件,docx4j本身有转PDF的功能 ...
- ppt转图片LibreOffice解决方案--java
由于使用poi组件无法解决附件乱码问题.公司又不愿意使用商业版本.最终选定了LibreOffice来做这个功能.先将ppt转pdf 在将pdf转图片 本文使用的版本为LibreOffice-7.0.0 ...
最新文章
- 使用xshell5 从CentOS主机download资料
- 放肆地使用UIBezierPath和CAShapeLayer画各种图形
- Spring Boot Cache使用与整合
- hibernate示例_通过示例Hibernate–第1部分(删除孤儿)
- 一个(伪)MaterialDesign风格的博客园皮肤
- foundation-datepicker只能选年份_你喝的年份酒和原浆酒都怎么来的?
- python的sort()和sorted()的区别_Python 3中sort()和sorted()的区别和用法,Python3
- 背景透明,文字不透明效果
- (转)如何在windows 2008 安装IIS
- iOS开发常用技能点(持续更新中。。。)
- {ubuntu}乱七八糟重命名为1 2 3.....png
- 测试用例的评审和变更
- 关于x86、x86-64、x64、i386、i486、i586和i686等名词的解释
- javascript_实现
- 教你实现windowsxp自动登录大法(转)
- Cortex-M4和M3处理器,究竟哪个市场更大?
- 数据结构之树和二叉树算法实现(C语言)
- 如何为iPhone和iPad配置邮件设置
- 前端第七次培训(JS对象和事件)
- Matlab/simulink仿真,直驱永磁风机并网chopper低电压穿越,版本matlab2018a