jodconverter+openOffice word文档pdf转换

刚好遇到了,花了几个小时时间研究了下。

第一种:POI+iText  PDFBox,试了下,效果不太行,比较差,而且有些中文以及格式不好处理

第二种:jacob 不支持linux,不考虑

第三种:aspose 收费,不考虑

第四种: jodconverter+openOffice/LibreOffice 就是我使用的这种,效果较好,兼容也可以

如下

maven依赖

<dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-local</artifactId><version>4.4.0</version></dependency>

java伪代码

// 获取openoffice管理器(服务器需要安装OpenOffice的安装目录)LocalOfficeManager localOfficeManager = LocalOfficeManager.builder().officeHome(ApplicationPropertiesUtils.getOfficeHome()).install().build();// 判断openoffice服务是否打开if(!localOfficeManager.isRunning()){localOfficeManager.start();}//文件转化(文件/流都可以)JodConverter.convert(inputStream).to(outFile).execute();// 关闭localOfficeManager服务OfficeUtils.stopQuietly(localOfficeManager);
ApplicationPropertiesUtils.getOfficeHome()换成自己的openoffice路径,比如:/opt/openoffice4
inputStream是word文档。
outFile是转换后的pdf文件

会自动匹配

也可以指定转换文件后缀

// 获取openoffice管理器(服务器需要安装OpenOffice的安装目录)LocalOfficeManager localOfficeManager = LocalOfficeManager.builder().officeHome(ApplicationPropertiesUtils.getOfficeHome()).install().build();// 判断openoffice服务是否打开if(!localOfficeManager.isRunning()){localOfficeManager.start();}ByteArrayOutputStream baos = new ByteArrayOutputStream();LocalConverter converter = LocalConverter.builder().officeManager(localOfficeManager).build();// 进行格式转换DocumentFormat extension = DefaultDocumentFormatRegistry.getFormatByExtension(suffix);converter.convert(file.getInputStream()).as(extension).to(baos).as(DefaultDocumentFormatRegistry.PDF).execute();// 关闭localOfficeManager服务OfficeUtils.stopQuietly(localOfficeManager);InputStream inputStream=new ByteArrayInputStream(baos.toByteArray());

convert(file.getInputStream()).as(extension).to(baos).as(DefaultDocumentFormatRegistry.PDF) 文件File/流都可以,后缀也可以根据自己业务处理

支持种类比较多,一般都能满足大多数需求了,源码DefaultDocumentFormatRegistry里面有各种格式的,看是否满足自己的需求

windows和服务器linux都需要安装OpenOffice,官方下载可能有点慢,需要的看下面的链接

windows:https://pan.baidu.com/s/1_dur2uG9_hzci57CMMZvEg   提取码:hi6a

Ubuntu:百度网盘 请输入提取码  提取码:m7hy

centos:百度网盘 请输入提取码   提取码:p6u9

Ubuntu安装步骤:

必须先卸载默认安装的LibreOffice,然后用deb方式的压缩包  

sudo apt-get remove --purge libreoffice*

将压缩包上传到服务器

tar -xvzf Apache_OpenOffice_4.1.15_Linux_x86-64_install-deb_zh-CN.tar.gz

cd zh-CN/DEBS/

sudo dpkg -i *.deb

cd desktop-integration/

sudo dpkg -i openoffice4.1-debian-menus_4.1.15-9813_all.deb

安装完成后在/opt/openoffice4/program/

一般不用启动,如果要启动

cd /opt/openoffice4/program/

启动可能会弹出 需要Xmanager软件来处理X11转发请求

soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard &

centos还没安装,测试服务器是Ubuntu

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java高频面试之JVM篇

说一下 Jvm 的主要组成部分&#xff1f;及其作用&#xff1f; 类加载器执行器运行时数据区域本地接口 谈谈对运行时数据区的理解&#xff1f; 堆和栈的区别是什么&#xff1f; 堆中存什么&#xff1f;栈中存什么&#xff1f; 堆总存对象,栈中存局部变量,引用 为什么要把堆…

什么牌子的运动耳机比较好?五款舒适又实用的运动耳机推荐

跑步、健身、游泳……无论你的运动喜好是什么&#xff0c;一款好的运动蓝牙耳机都能为你的运动体验加分。然而&#xff0c;市面上的运动蓝牙耳机品牌众多&#xff0c;如何选择一款既舒适又实用的产品呢&#xff1f;本文将为你提供一些选购运动蓝牙耳机建议&#xff0c;并为你推…

数字时代的新风向标:海外网红营销与年轻一代的话题热潮

随着互联网的不断普及和社交媒体的迅猛发展&#xff0c;海外网红营销已成为引领年轻一代话题热潮的重要力量。这一趋势不仅改变了传统营销模式&#xff0c;更深刻地影响了年轻人的消费观念、审美趣味以及生活方式。本文Nox聚星将和大家探讨海外网红营销如何成功地吸引了年轻人的…

第9章 视图view

第9章 视图view 9.1 视图对象的创建、删除 mysql> create table dept2 as select * from dept; Query OK, 4 rows affected (0.02 sec) Records: 4 Duplicates: 0 Warnings: 0mysql> select * from dept2; ------------------------------ | DEPTNO | DNAME …

智能合约平台开发指南

随着区块链技术的普及&#xff0c;智能合约平台已经成为了这个领域的一个重要趋势。智能合约可以自动化执行合同条款&#xff0c;大大减少了执行和监督合同条款所需的成本和时间。那么&#xff0c;如何开发一个智能合约平台呢&#xff1f;以下是一些关键步骤。 一、选择合适的区…

mysql重启失败

服务器重启了一下&#xff0c;然后启动后发现mysql自动启动没有生效&#xff0c;于是手动通过systemctl启动mysqld&#xff0c;然后就报错:Starting MySQL...........The server quit without updating P[FAILED](/data/mysql/iz2zebvmy1qv3fao9c5riuz.pid). 根据配置my.cnf文…

为什么选择成为程序员?

目录 兴趣和热爱高薪和就业机会持续学习和不断成长挑战和乐趣 兴趣和热爱 许多人选择成为程序员可能是热爱&#xff0c;对计算机&#xff0c;以及编程和科技产生了浓厚的兴趣&#xff0c;并且享受着解决每一个技术问题&#xff0c;构建应用程序和探索新技术所带来的乐趣。 谈到…

二进制ip地址如何进行掩码网络地址和cidr划分?

看到网上有人问下面的问题&#xff1a; 解答过程&#xff1a; 首先这是一个默认的abc类地址进行cidr变长掩码划分的问题。 首先我们知道&#xff0c;ip地址是32位二进制&#xff0c;为了记忆方便每8位分成四段&#xff0c;用0-255和符号.来表示如192.168.1.100 ip地址具有寻址…

海外媒体发稿:新加坡 Asia One VS新加坡sg雅虎

海外媒体发稿&#xff1a;新加坡 Asia One VS新加坡sg雅虎 新加坡&#xff1a;雅虎 官网&#xff1a;sy.yahoo.com 官网&#xff1a;asiaone.com/lite 亚洲第一站。是 新加坡的新闻和生活方式网站和新闻聚合器。它是 新加坡第一个纯数字 内容平台&#xff0c;主要为新加坡、…

E8-用户的主题颜色存在了表ColorStyleInfo里

起因 个人习惯是搭测试环境来进行测试。时不时的从生产环境数据库的备份文件还原数据库过来。每次还愿数据库之后&#xff0c;会用SQL语句把用户密码做统一的修改。但由于日常办公需要&#xff0c;往往生产环境和测试环境会同时打开&#xff0c;执行操作的时候只能通过网址来分…

如何优化 SVG 文件以提升加载速度和性能

1. SVG优化基础知识点 SVG优化技巧 压缩SVG文件大小&#xff0c;减少网络传输时间。使用合适的图形编辑工具&#xff0c;优化SVG代码结构和路径。 性能优化 避免过多复杂的SVG元素和嵌套结构&#xff0c;减少DOM操作。使用CSS和JavaScript优化SVG动画效果&#xff0c;减少性能…

解锁ChatGPT的论文写作技巧,让学术之路更顺畅

ChatGPT无限次数:点击直达 html 解锁ChatGPT的论文写作技巧&#xff0c;让学术之路更顺畅 引言 在当今数字化时代&#xff0c;人工智能技术的持续发展为学术界带来了前所未有的便利。其中&#xff0c;自然语言生成模型如ChatGPT在论文写作方面展现出巨大的潜力。本文将探讨…

【超分代码合集】SwinIR、StableSR、PASD、CCSR 常见超分模型的推理时间对比

从 Awesome-diffusion-model-for-image-processing 合集 [ 1 ] ^{[1]} [1] 以及 NTIRE 2023 Challenge on Efficient Super-Resolution (CVPR Workshop) [ 2 , 3 ] ^{[2,3]} [2,3] 的超分部分&#xff0c;选取了 4 个 star 数量较高的几个项目进行测试对比。 图像超分论文 …

功能测试_验证新浪邮箱登录的正确性

案例&#xff1a;验证验证新浪邮箱登录的正确性 功能测试_等价类设计用例&#xff1a; 步骤&#xff1a; 1:明确需求&#xff1a;邮箱能否登录 2:划分等价类&#xff1a;有效等价类、有效取值、无效等价类、无效取值 3&#xff1a;提取数据编写用例&#xff1a;用例编号、…

css Animation 动画-右进左出

transform: rotate&#xff08;旋转&#xff09; | scale&#xff08;缩放&#xff09; | skew&#xff08;倾斜&#xff09; | translate&#xff08;移动&#xff09; ;<style> .jinggao {width: 60vw;display: inline-block;text-align: center;overflow: hidden;box-…

【原创】springboot+mysql校园跑腿管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

记一次生产环境Java堆内存溢出问题排查思路

1. 用Visual VM 加载堆转储文件 先将转储文件从服务器下载下来&#xff0c;打开Visual VM&#xff0c;点击右上角的Load Snapshot&#xff0c;将这个转储文件加载到Visual VM中。 2. 用Visual VM 分析堆转储文件 1&#xff09;首先看到是醒目的红色&#xff0c;这里标记了堆…

doss攻击为什么是无解的?

这个让Google、亚马逊等实力巨头公司也无法避免的攻击。可以这么说&#xff0c;是目前最强大、最难防御的攻击之一&#xff0c;属于世界级难题&#xff0c;并且没有解决办法。 Doss攻击的原理不复杂&#xff0c;就是利用大量肉鸡仿照真实用户行为&#xff0c;使目标服务器资源…

Rust语言

文章目录 Rust语言一&#xff0c;Rust语言是什么二&#xff0c;Rust语言能做什么&#xff1f;Rust语言的设计使其适用于许多不同的领域&#xff0c;包括但不限于以下几个方面&#xff1a;1. 传统命令行程序&#xff1a;2. Web 应用&#xff1a;3. 网络服务器&#xff1a;4. 嵌入…

albef论文学习

首先要知道vit是啥东西。vit就是transformer模型在图像领域的运用。 transformer模型原本是用于自然语言的&#xff0c;encoder和decoder接受的都是文字。vit把图像分割成很多个小块&#xff0c;把各个小块拉长当成向量来用&#xff0c;接下来就是一样的。最后接一个全连接层做…