使用 ONLYOFFICE API 构建 Java 转换器,在 Word 和 PDF 之间进行转换
文章作者:ajun
随着文档处理需求的增加,格式转换成为了一个重要的需求点。由于PDF格式具有跨平台、不易被篡改的特性,将Word格式(.docx)转换为PDF格式(.pdf)的需求尤为强烈。ONLYOFFICE作为一个强大的办公套件,提供了这样的转换功能,使得用户可以轻松地在Word和PDF之间进行转换。
除此之外,ONLYOFFICE 还提供.xlsx、.pptx等等多种文件格式的转换,更多参考 Conversion API 文档。

ONLYOFFICE 文档是什么
ONLYOFFICE 文档是一个功能强大的文档编辑器,支持处理文本文档、电子表格、演示文稿、可填写表单、PDF 和电子书,可多人在线协作,支持 AI 集成。它具有丰富的插件库,并且支持自行开发上传插件。

ONLYOFFICE 文档开发者版可以无缝地适应您的网络应用,支持多种流行的编程语言和开发框架,包括JavaScript、Python、Java、C# 等。为前端框架也提供现成的组件样本 (Angular, React, Vue 等)。
如何转换
使用功能转换
- 打开.docx格式文档: 在ONLYOFFICE中,打开您想要转换的.docx格式文档。
- 导出为PDF: 在ONLYOFFICE的顶部菜单中,选择“文件”->“导出为”->“PDF”。
- 选择保存位置: 您将被提示选择一个保存位置来保存转换后的PDF文件。
- 完成转换: 点击“保存”后,ONLYOFFICE将开始将您的.docx格式文档转换为PDF格式。转换完成后,您可以在之前选择的位置找到转换后的PDF文件。

使用API转换
- 提前安装 ONLYOFFICE 文档服务
- 调用 ONLYOFFICE 转换 API 接口 将.docx格式文档转换为.pdf。转换之后会返回一个pdf文档地址。
- 请求示例
请求地址:https://ONLYOFFICE文档服务地址/ConvertService.ashx
请求方式:POST请求
请求参数:
{"async": false, //是否异步转换"filetype": "docx", //需要转换的文档格式 docx"key": "con_0121", //转换的可以"outputtype": "pdf", //转换成的结果文档格式 pdf"title": "Example Document Title.docx", //文档的标题"url": " " // 需要转换的文档url地址}
返回结果:
<?xml version="1.0" encoding="utf-8"?>
<FileResult><FileUrl>http://xx/cache/files/conv_con_0121_pdf/output.pdf/Example%20Document%20Title.pdf?md5=yaTSuivWKzKK6Zi6Nn7UwA&expires=1705987451&filename=Example%20Document%20Title.pdf</FileUrl><Percent>100</Percent><EndConvert>True</EndConvert>
</FileResult>
Java语言实现:
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"async\": false,\n \"filetype\": \"docx\",\n \"key\": \"Khirz6zTPdfd7\",\n \"outputtype\": \"pdf\",\n \"password\": \"123456\",\n \"title\": \"Example Document Title.docx\",\n \"url\": \"https://example.com/url-to-example-document.docx\"\n}");
Request request = new Request.Builder().url("https://ONLYOFFICE文档服务地址/ConvertService.ashx").method("POST", body).addHeader("Content-Type", "application/json").build();
Response response = client.newCall(request).execute();
若 .docx格式文档文件受密码保护,可以添加password字段定义该文件的密码。
{"async": false, //是否异步转换"filetype": "docx", //需要转换的文档格式 docx"key": "con_0121", //转换的可以"outputtype": "pdf", //转换成的结果文档格式 pdf"password": "abcabc", //需要转换的文档密码"title": "Example Document Title.docx", //文档的标题"url": " " // 需要转换的文档url地址}
若 ONLYOFFICE 文档服务开启了安全验证,可以添加token字段进行处理。
{"async": false, //是否异步转换"filetype": "docx", //需要转换的文档格式 docx"key": "con_0121", //转换的可以"outputtype": "pdf", //转换成的结果文档格式 pdf"password": "abcabc", //需要转换的文档密码"title": "Example Document Title.docx", //文档的标题"url": " " // 需要转换的文档url地址,"token": " " // 安全验证}
相关链接
转换 API 文档
ONLYOFFICE 文档 8.0 新功能介绍:文章 / 视频
相关文章:
使用 ONLYOFFICE API 构建 Java 转换器,在 Word 和 PDF 之间进行转换
文章作者:ajun 随着文档处理需求的增加,格式转换成为了一个重要的需求点。由于PDF格式具有跨平台、不易被篡改的特性,将Word格式(.docx)转换为PDF格式(.pdf)的需求尤为强烈。ONLYOFFICE作为一个强大的办公套件,提供了这样的转换功…...
SpringCloudAlibaba Nacos配置及应用
Nacos搭建及配置 nacos本机服务搭建 windows上搭建单机nacos: Releases alibaba/nacos GitHub 下载安装包 下载本地,解压,直接运行(保证安装包的绝度路径只有英文字符,有中文会导致运行失败)ÿ…...
#Linux(权限管理)
(一)发行版:Ubuntu16.04.7 (二)记录: (1) (2)-开头代表普通文件 划分为三组: rw- rw- r-- rw-: 文件拥有…...
easyExcel复杂表头导出
代码 import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;import java.util.ArrayList; import java.util.Arrays; imp…...
【大数据】五、yarn基础
Yarn Yarn 是用来做分布式系统中的资源协调技术 MapReduce 1.x 对于 MapReduce 1.x 的版本上: 由 Client 发起计算请求,Job Tracker 接收请求之后分发给各个TaskTrack进行执行 在这个阶段,资源的管理与请求的计算是集成在 mapreduce 上的…...
语义分割实战项目(从原理到代码环境配置)
语义分割(Semantic Segmentation) 先看结果: 是计算机视觉和深度学习领域的一项核心任务,它主要致力于对图像中的每一个像素进行分类,赋予每个像素一个类别标签,以达到理解图像内容的目的。换句话说&#…...
基于python+vue 的一加剧场管理系统的设计与实现flask-django-nodejs-php
二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针对这一需求设…...
【Entity Framework】 EF中DbContext类详解
【Entity Framework】 EF中DbContext类详解 一、概述 DbContext类是实体框架的重要组成部分。它是应用域或实例类与数据库交互的桥梁。 从上图可以看出DbContext是负责与数据交互作为对象的主要类。DbContext负责以下活动: EntitySet:DbContext包含…...
智能风扇的新篇章:唯创知音WTK6900G语音识别芯片引领行业革新
随着科技浪潮的推进,智能化技术逐渐渗透到生活的每一个角落,家电领域尤为明显。风扇,这一夏日清凉神器,也通过智能化改造,焕发出前所未有的光彩。其中,智能语音控制功能的加入,为风扇的使用带来…...
[json.exception.type_error.316] invalid UTF-8 byte报错
[json.exception.type_error.316] invalid UTF-8 byte at index 1: 解决方法重新编译程序即可。...
深度强化学习(九)(改进策略梯度)
深度强化学习(九)(改进策略梯度) 一.带基线的策略梯度方法 Theorem: 设 b b b 是任意的函数, b b b与 A A A无关。把 b b b 作为动作价值函数 Q π ( S , A ) Q_\pi(S, A) Qπ(S,A) 的基线, 对策略梯度没有影响: ∇ θ J …...
Oracle修改Number类型精度报错:ORA-01440
修改Number类型的字段的精度SQL ALTER TABLE XXXX MODIFY RATE NUMBER(30,6); 如果表已经存在数据,报错信息如下: ORA-01440: column to be modified must be empty to decrease precision or scale 废话不多说,解决方案如下:…...
美团到店-后端开发一面
1. 介绍一下spring的两大核心思想 2. 介绍一下java的代理,以及动态代理和静态代理的区别 3. spring动态代理是如何生成的,jdk动态代理和cglib的区别 4. 介绍一下synchronized关键字、以及synchronized锁和lock的区别 5. 讲一下java中synchronized的锁升级…...
面试算法-77-括号生成
题目 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 解 class Solution {publ…...
webpack5零基础入门-12搭建开发服务器
1.目的 每次写完代码都需要手动输入指令才能编译代码,太麻烦了,我们希望一切自动化 2.安装相关包 npm install --save-dev webpack-dev-server 3.添加配置 在webpack.config.js中添加devServer相关配置 /**开发服务器 */devServer: {host: localhos…...
opengl日记10-opengl使用多个纹理示例
文章目录 环境代码CMakeLists.txt文件内容不变。fragmentShaderSource.fsvertexShaderSource.vsmain.cpp 总结 环境 系统:ubuntu20.04opengl版本:4.6glfw版本:3.3glad版本:4.6cmake版本:3.16.3gcc版本:10.…...
锂电池寿命预测 | Matlab基于ALO-SVR蚁狮优化支持向量回归的锂离子电池剩余寿命预测
目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于ALO-SVR蚁狮优化支持向量回归的锂离子电池剩余寿命预测 基于蚁狮优化和支持向量回归的锂离子电池剩余寿命预测: 1、提取NASA数据集的电池容量,以历史容量作为输入,…...
动态规划15 | ● 392.判断子序列 ● *115.不同的子序列
392.判断子序列 https://programmercarl.com/0392.%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.html 考点 子序列问题 我的思路 dp[i][j]的含义是,两个序列分别取到下标为i和j的时候,他们是否满足前者是后者的子序列,满足为True&#x…...
APP UI自动化测试思路总结
首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去。 接下来,…...
Codeforces Round 936 (Div. 2)
C. Tree Cutting 题意:给定一棵树,需要删除 k 条边,使得 k1 个联通块中的最小结点数最大。求出这个最大值 思路:求最小值最大--想到二分答案--然后深搜满足条件的连通块是否大于k即可 #include<iostream> #include<al…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
