java 利用openOffice实现word ppt 等资源转化为pdf文件
网上有很多教程,但是很多坑,比如jobconvert2.2.1无法转pptx等格式的文件 而jobconvert2.2.2可以 但是maven仓库又没有 对于公司开发 这是个问题 毕竟公司的仓库不能让你随意操作。
由于公司使用的springboot 上网搜索了一下有相关的jar包 这就比较好办了 但是也有一些坑 下面是我的工作实践总结:
1
首先下载openoffice(外网下载很慢):http://www.openoffice.org/download/index.html
对于window版本 可以直接百度然后在国内网站下载 比较快 对于linux版本的可以在服务器用wget指令下载 这样比较快
我的版本是:Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz
安装可参考:https://blog.csdn.net/github_38924695/article/details/89470960
2 下载相应jar包
<!--ppt转换为pdf word转换为pdf--><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-spring-boot-starter</artifactId><version>4.2.2</version></dependency><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-core</artifactId><version>4.2.2</version></dependency><!--jodconverter 本地支持包 --><!-- https://mvnrepository.com/artifact/org.jodconverter/jodconverter-local --><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-local</artifactId><version>4.2.2</version></dependency><!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>
3 相信对于springboot有了解的应该知道 **--start 这种jar包一般都有自动配置 这个jar包也是有自动配置的 当我们配置了 相应的openOffice 相关配置
jodconverter:local:port-numbers: 8100enabled: true
4 启动openOffice
启动OpenOffice服务 windows下OpenOffice 4的program目录下cmd./soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard linux下:cd /opt/openoffice4/program soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
注:window 安装完program目录一般在:C:\Program Files (x86)\OpenOffice 4\program
5 注入工具类 转换
@Autowiredprivate Converter converter;//转换converter.rconvert(sourceFile).to(tartgetFile).execute()
由于自动配置就注入了一个工具类 我们可以直接在自己代码中注入这个类实现转码工作
但是这个前提是 我们在本地安装了openOffice 并且已经启用了 启用的端口为配置的端口 不然就会注入失败
由于笔者是公司合作开发 当其他同事拉取我的代码后 由于本地没有这个程序 所以注入会失败 然后导致项目启动不了 所以笔者没有采用这种方式 而且这种方式很死 无法控制openOffice的开关
方式二
我们不用它自动注入的converter 我们自己配置相应的属性 然后自己new一个转换器实现转换功能
1
首先在配置文件配置相应的配置 名字随意 自己能找到就行
officeconverter:local:#office-home: /opt/openoffice4/office-home: C:\Program Files (x86)\OpenOffice 4ports: 8100
2 在执行需要转码的处理器时才new一个转换器 (这个转换器应该时单例的 不应该new多个) 所以我写了一个工具类
public class OpenOfficeConvert {private static OfficeManager officeManager;private OpenOfficeConvert(){}public static synchronized void initOfficeMnnager(int [] ports,String officeHome){if(officeManager!=null){return;}if(ports==null||ports.length==0||officeHome==null||officeHome.equals("")){throw new BusinessException("参数未配置");}officeManager= LocalOfficeManager.builder().portNumbers(ports).officeHome(officeHome).build();}public static void convert(File sourceFile,File tartgetFile) throws OfficeException {if(officeManager==null){throw new BusinessException("未初始化转换器,请先初始化");}if(!officeManager.isRunning()){officeManager.start();}LocalConverter make = LocalConverter.make(officeManager);make.convert(sourceFile).to(tartgetFile).execute();//officeManager.stop();}public static void stopProcess() throws OfficeException {if(officeManager!=null){officeManager.stop();}}}
3 使用工具类 转换文件 在需要转换文件的处理器哪里 我们首先初始化转化器 然后就可以转化了
int [] ports=environment.getProperty("officeconverter.local.ports",int[].class);String officeHome=environment.getProperty("officeconverter.local.office-home");try {OpenOfficeConvert.initOfficeMnnager(ports,officeHome);OpenOfficeConvert.convert(toFile,pdfFile);} catch (OfficeException e) {e.printStackTrace();throw new BusinessException("转换文件出错");}
上面的 ports 和officeHome为我们在配置文件中填写的 这样相当于告诉程序 我们的程序openOffice 安装在哪里 我们希望它运行的端口 初始化的时候 先检测这个端口的openOffice 服务是否已经启动 若没有启动 那么程序会自动启动 (这样不需要我们手动启动openOffice服务了)
方式二比较灵活
一般linux服务器上 转化文件出现中文乱码
解决办法:可参考
https://blog.csdn.net/fanjin287659245/article/details/80360767
java 利用openOffice实现word ppt 等资源转化为pdf文件相关推荐
- java利用jacob实现word,ppt,excel,jpg转pdf
项目中遇到了需要把用户上传的word,execl,ppt每页截图保存.需要先用到jacob把资源转换为pdf,在通过pdf-renderer把每页截图下来. 下载相关的jar包:http://down ...
- Java通过openOffice实现word,excel,ppt转成pdf实现在线预览
Java通过openOffice实现word,excel,ppt转成pdf实现在线预览 一.OpenOffice 1.1 下载地址 1.2 JodConverter 1.3 新建实体类PDFDemo ...
- 利用OpenOffice实现word文档在线预览
项目中遇到的word文档在线预览需求,查阅很多资料决定利用openoffice转换word文档为pdf/html进行预览实现. 1.下载openoffice4安装 www.openoffice.org ...
- PHP windoews调用OpenOffice实现word/ppt转PDF-附带demo
包有用 最近做一个项目,需要将用户上传的word,ppt文档转成PDF文档保存并打印,在网上找了很多资料,并不全面,爬过的坑记录下来. excel输出pdf还没成功 已经找到excel预览的方法的方法 ...
- java利用POI替换word文档中的标签
java利用POI替换word文档中的标签 <dependency><groupId>org.apache.poi</groupId><artifactId& ...
- Java利用poi生成word(包含插入图片,动态表格,行合并)
Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: 图表 1 Word生成结果: 图表 2 需要的jar包:(具体jar可自行去maven下载) Test测试类: imp ...
- java docx转pdf_java word/doc/docx文档转PDF 加水印
本文实例讲述了java实现word文档转pdf并添加水印的方法.分享给大家供大家参考,具体如下: 前段时间,项目需要将上传的Word文档在浏览器浏览,思来想去,把word文档转成pdf就好了,于是乎研 ...
- 使用永中文档实现java在线预览Word,Excel,Pptx,Pdf
使用永中文档实现java在线预览Word,Excel,Pptx,Pdf 永中文档提供了在线预览的功能 永中开发者文档 如果需要直接运行,请直接修改代码中的两个参数 转换类型在下方,根据传入以及输出类型 ...
- 使用poi根据模版生成word文档并转换成PDF文件(可处理doc文件与docx文件版)
该篇文章是<使用poi根据模版生成word文档并转换成PDF文件>后续解决传入文件为doc文档或docx的处理方法 /*** 根据模板生成word** @param path 模板的路径* ...
最新文章
- mysql多租户schema复制,Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作...
- VC菜菜鸟:基于CFree的HelloWorld程序
- QButtonGroup
- nl.basjes.parse.useragent.UserAgentAnalyzer内存泄漏问题解决
- 03 | 基础篇:经常说的 CPU 上下文切换是什么意思?(上)
- 浅析若干Java序列化工具
- html文件上传限制类型,html input file accept 上传文件类型限制格式 MIME 类型列表
- vue mxgraph渲染xml页面_Vue的两个版本
- mysql 基本概念学习(时间,事务)
- 性能测试和自动化测试选哪个?
- ADO.NET编程(4)根据条件查询DataTable的值
- 影响大数据和分析的5大趋势
- html5中关于input使用方法的改变
- 浅谈Android选项卡(二)
- 支付宝小程序唤起支付
- php什么是耦合关系,什么是耦合
- 多元异方差检验 怀特检验 white检验python实现
- 网络游戏广告植入案例
- C#彩色艺术化二维码样式设计(仅说思路)
- HMI-51-【多媒体】搞地图 1
热门文章
- (BAT批处理)批量文件夹重命名,要求是在原文件夹名前加上英文字母前缀aa
- C#List子类转List父类或者Obj对象转List
- python-selenium自动化测试网页
- cdr怎么把矩形去掉一个边_cdr画矩形怎么把中间弄掉
- 阿里云服务器CentOS8安装Kafka
- 基本粒子结构以及宇宙现象的徦说
- python,根据tkinter计数器案例,写了个倒计时器
- AI写剧本炸场戏剧节!DeepMind出品,马斯克看了直夸,网友看到接口悟了
- poi获取excel打印标题行与表头,itext生成pdf设置打印标题行与表头
- 七夕节给男朋友买什么礼物比较好呢?2022年七夕礼物推荐