网上有很多教程,但是很多坑,比如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文件相关推荐

  1. java利用jacob实现word,ppt,excel,jpg转pdf

    项目中遇到了需要把用户上传的word,execl,ppt每页截图保存.需要先用到jacob把资源转换为pdf,在通过pdf-renderer把每页截图下来. 下载相关的jar包:http://down ...

  2. Java通过openOffice实现word,excel,ppt转成pdf实现在线预览

    Java通过openOffice实现word,excel,ppt转成pdf实现在线预览 一.OpenOffice 1.1 下载地址 1.2 JodConverter 1.3 新建实体类PDFDemo ...

  3. 利用OpenOffice实现word文档在线预览

    项目中遇到的word文档在线预览需求,查阅很多资料决定利用openoffice转换word文档为pdf/html进行预览实现. 1.下载openoffice4安装 www.openoffice.org ...

  4. PHP windoews调用OpenOffice实现word/ppt转PDF-附带demo

    包有用 最近做一个项目,需要将用户上传的word,ppt文档转成PDF文档保存并打印,在网上找了很多资料,并不全面,爬过的坑记录下来. excel输出pdf还没成功 已经找到excel预览的方法的方法 ...

  5. java利用POI替换word文档中的标签

    java利用POI替换word文档中的标签 <dependency><groupId>org.apache.poi</groupId><artifactId& ...

  6. Java利用poi生成word(包含插入图片,动态表格,行合并)

    Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: 图表 1 Word生成结果: 图表 2 需要的jar包:(具体jar可自行去maven下载) Test测试类: imp ...

  7. java docx转pdf_java word/doc/docx文档转PDF 加水印

    本文实例讲述了java实现word文档转pdf并添加水印的方法.分享给大家供大家参考,具体如下: 前段时间,项目需要将上传的Word文档在浏览器浏览,思来想去,把word文档转成pdf就好了,于是乎研 ...

  8. 使用永中文档实现java在线预览Word,Excel,Pptx,Pdf

    使用永中文档实现java在线预览Word,Excel,Pptx,Pdf 永中文档提供了在线预览的功能 永中开发者文档 如果需要直接运行,请直接修改代码中的两个参数 转换类型在下方,根据传入以及输出类型 ...

  9. 使用poi根据模版生成word文档并转换成PDF文件(可处理doc文件与docx文件版)

    该篇文章是<使用poi根据模版生成word文档并转换成PDF文件>后续解决传入文件为doc文档或docx的处理方法 /*** 根据模板生成word** @param path 模板的路径* ...

最新文章

  1. mysql多租户schema复制,Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作...
  2. VC菜菜鸟:基于CFree的HelloWorld程序
  3. QButtonGroup
  4. nl.basjes.parse.useragent.UserAgentAnalyzer内存泄漏问题解决
  5. 03 | 基础篇:经常说的 CPU 上下文切换是什么意思?(上)
  6. 浅析若干Java序列化工具
  7. html文件上传限制类型,html input file accept 上传文件类型限制格式 MIME 类型列表
  8. vue mxgraph渲染xml页面_Vue的两个版本
  9. mysql 基本概念学习(时间,事务)
  10. 性能测试和自动化测试选哪个?
  11. ADO.NET编程(4)根据条件查询DataTable的值
  12. 影响大数据和分析的5大趋势
  13. html5中关于input使用方法的改变
  14. 浅谈Android选项卡(二)
  15. 支付宝小程序唤起支付
  16. php什么是耦合关系,什么是耦合
  17. 多元异方差检验 怀特检验 white检验python实现
  18. 网络游戏广告植入案例
  19. C#彩色艺术化二维码样式设计(仅说思路)
  20. HMI-51-【多媒体】搞地图 1

热门文章

  1. (BAT批处理)批量文件夹重命名,要求是在原文件夹名前加上英文字母前缀aa
  2. C#List子类转List父类或者Obj对象转List
  3. python-selenium自动化测试网页
  4. cdr怎么把矩形去掉一个边_cdr画矩形怎么把中间弄掉
  5. 阿里云服务器CentOS8安装Kafka
  6. 基本粒子结构以及宇宙现象的徦说
  7. python,根据tkinter计数器案例,写了个倒计时器
  8. AI写剧本炸场戏剧节!DeepMind出品,马斯克看了直夸,网友看到接口悟了
  9. poi获取excel打印标题行与表头,itext生成pdf设置打印标题行与表头
  10. 七夕节给男朋友买什么礼物比较好呢?2022年七夕礼物推荐