当前位置: 首页 > news >正文

如何使用 ONLYOFFICE API 转换办公文档格式

作者:天哥

上一期我们介绍了 ONLYOFFICE 的文档生成器API接口函数库。这一期我们继续介绍ONLYOFFICE 的文件转换API接口函数库。

为什么要使用 ONLYOFFICE 转换API

ONLYOFFICE 转换 API 有助于转换大部分类型的Office文档:文本、表格、幻灯片、表单、PDF、电子书等。

支持大部分流行的格式:将文档、表格或幻灯片转化为PDF,将课本转化为电子书,将演示文稿转换为图像文件,等等。ONLYOFFICE支持超过50种文档格式。

高级设置:添加转换设置,以便转换CSV文件时定义分隔符,转换电子表格时定义默认货币显示模式,或以便设置输出PDF文件的页面大小和页边距,等等。并提供完备的API文档,可以参考所有可用的选项。

高质量的转换:ONLYOFFICE不断改进服务,为所有转换类型提供高质量的结果。

安全性:ONLYOFFICE的开放源代码可在GitHub上找到,这确保ONLYOFFICE的透明度和可靠性。JSON网络令牌保护文件免受未经授权的访问。

工作原理

ONLYOFFICE文档服务器对文档的处理是非常简单的,但是需要理解其工作原理,当你点击一个文档在浏览器页面里打开的时候、保存文档的时候、或者从计算机上传到服务器的时候,它是如何工作的。

使用者和文档之间的交互由客户端和服务器端共同实现。下面介绍一下一些基本概念。

客户端包括:

  • 文档管理器:文档的列表显示在使用者的浏览器里面,使用者可以选择文档对其操作,根据对使用者赋予的权限,他可以打开文档阅览或者编辑,或者分享给其他使用者。
  • 文档编辑器:文档阅览和编辑界面,包含几乎所有一直的文档编辑功能特征,作为一个中介媒介,连接起来了使用者和文档编辑服务器

服务器端包括:

  • 文档存储服务:存储所有文档的服务器端,将文档以设定的权限提供给使用者。他提供了文档的ID号和文档的链接的信息发送给文档管理器,使用者就可以在浏览器里看到文档列表。
  • 文档编辑服务:提供对文档进行阅览和编辑功能的服务器端,前提是使用者被赋予相应的权限,文档编辑器界面被用来访问所有的文档编辑服务的功能特征。
  • 文档命令服务:提供执行特别命令操作的文档编辑服务
  • 文档转换服务:提供文档转换功能的服务器端,转换为开放文档格式Open XML,例如文本文档的docx、表格文档的xlsx、以及演示幻灯片的pptx,编辑或者下载。
  • 文档生成器服务:不需要实际打开运行一个文档编辑器而通过API生成文档的服务。

注意,ONLYOFFICE文档服务器包含这个文档编辑器、文档编辑服务、文档命令服务、文档转换服务、以及文档生成器服务。而文档管理器和文档存储服务由ONLYOFFICE社区服务器Community Server提供,或者由其它开发集成商开发实现,在自己的服务器上安装部署ONLYOFFICE的文档服务器。

文档转换服务是ONLYOFFICE文档服务器的一部分,它使得使用者可以转换文件格式以便在文档编辑器中打开或者导出文件。有两种情况会使用到文档转换服务。

文档编辑需要临时转换

文档编辑器想要正确的处理文档,就需要将其转换为开放文档格式OpenXML: * docx文档文件 * xlsx表格文件 * pptx幻灯片演示文件 如下图所示,文档编辑临时转换格式:

  1. 使用者在本地计算机硬盘上选择一个文件,将其上传到文档管理器
  2. 文档管理器上传所选择的文件到文档存储服务
  3. 文档存储服务发送该上传的文件到ONLYOFFICE文档服务器的文档转换服务,调用转换API将其转换为开放文档格式。
  4. 文档转换服务将选择的文件转换为开放文档格式。
  5. 文档存储服务下载转换好的文件。

文档输出

当使用者需要下载为某种格式的时候,ONLYOFFICE文档服务器将存储在文档存储服务的相应文件转换为使用者所需的格式。 如下图所示,文档转换格式输出过程:

  1. 使用者在文档管理器上选择文件并选择以某种格式下载。
  2. 文档管理器将使用者的这个操作翻译为一个内部的网络request请求发送给文档存储服务
  3. 文档存储服务发送这个上传的文件给ONLYOFFICE文档服务器的文档转换服务,使用转换API来来转换格式。
  4. 文档转换服务将选择的文件转换到指定的格式。
  5. 转换完成,文档存储服务下载最终文件。
  6. 文档存储服务通知文档管理器转换已完成。
  7. 文档管理器下载最终文件。

文档转换API

为了与文档转换服务交互,需要使用POST请求。请求参数以JSON格式输入到请求体中,请求需要发送至地址https://documentserver/ConvertService.ashx,这里的documentserver是ONLYOFFICE文档服务器的服务器名称

请求参数

参数

说明

类型

必要性

filetype

来源文档类型

字符串

必须项

key

文档辨识符id号,用来区分文档

字符串

必须项

outputtype

设定要转换为的文档类型,除了可以用后缀名区分之外,也可以用类型设定ooxml 开放文档格式,即docx、docm、xlsx、xlsm、pptx、pptmodf 开源格式即odt、ods、odp

字符串

必须项

token

以令牌形式添加到文档服务器配置的加密签名。

字符串

依据配置而必须项

url

文档的绝对路径,使用本地链接时请务必添加令牌,否则会报错

字符串

必须项

此表只列举了必须项目,请求参数里可选的参数的细节,详见开发手册:ONLYOFFICE 转换 API

文本文档格式表

输入格式

输出格式

bmp

docm

docx

docxf

dotm

dotx

epub

fb2

gif

html

jpg

odt

ott

pdf

pdfa

png

rtf

txt

djvu

doc

docm

docx

docxf

dot

dotm

dotx

epub

fb2

fodt

htm

html

mht

mhtml

odt

ott

oxps

pdf

rtf

stw

sxw

txt

wps

wpt

xml

xps

表格文档格式表

输入格式

输出格式

bmp

csv

gif

jpg

ods

ots

pdf

pdfa

png

xlsm

xlsx

xltm

xltx

csv

et

ett

fods

ods

ots

sxc

xls

xlsb

xlsm

xlsx

xlt

xltm

xltx

xml

演示文档格式表

输入格式

输出格式

bmp

gif

jpg

odp

otp

pdf

pdfa

png

potm

potx

ppsm

ppsx

pptm

pptx

dps

dpt

fodp

odp

otp

pot

potm

potx

pps

ppsm

ppsx

ppt

pptm

pptx

sxi

请求示例

发送给文档转换服务的JSON对象的示例,请求将docx文件转换为pdf文件:

{"async": false,"filetype": "docx","key": "Khirz6zTPdfd7","outputtype": "pdf","title": "Example Document Title.docx","url": "https://example.com/url-to-example-document.docx"}

其中example.com是文档管理器和文档存储服务所安装部署的服务器的地址。

将带有密码保护的docx文件转换为pdf文件:

{"async": false,"filetype": "docx","key": "Khirz6zTPdfd7","outputtype": "pdf","password": "123456","title": "Example Document Title.docx","url": "https://example.com/url-to-example-document.docx"}

从docx文件生成png缩略图:

{"filetype": "docx","key": "Khirz6zTPdfd7","outputtype": "png","thumbnail": {"aspect": 0,"first": true,"height": 150,"width": 100},"title": "Example Document Title.docx","url": "https://example.com/url-to-example-document.docx"}

表格文件转为pdf格式:

{"filetype": "xlsx","key": "Khirz6zTPdfd7","outputtype": "pdf","region": "en-US","spreadsheetLayout": {"ignorePrintArea": true,"orientation": "portrait","fitToWidth": 0,"fitToHeight": 0,"scale": 100,"headings": false,"gridLines": false,"pageSize": {"width": "210mm","height": "297mm"},"margins": {"left": "17.8mm","right": "17.8mm","top": "19.1mm","bottom": "19.1mm"}},"title": "Example Document Title.docx","url": "https://example.com/url-to-example-spreadsheet.xlsx"}

响应回传参数

请求的结果返回来为XML格式,如果要得到JSON格式的响应,需要指定HTTP请求的ACCEPT头的application/json参数值。当生成结果文件的链接时,会使用请求包所用的同一个服务器名。

参数

说明

类型

示例

endConvert

转换是否完成

boolean

true

error

错误信息代码

integer

-3

fileType

输出文件的扩展名

string

docm

fileUrl

输出文件的链接,只有当endConvert参数为真时才会出现

string

https://documentserver/url-to-converted-document.pdf

percent

文件转换执行进度 如果endConvert为真则此为100

integer

100

返回为XML格式的示例:

<?xml version="1.0" encoding="utf-8"?><FileResult><EndConvert>True</EndConvert><FileType>docm</FileType><FileUrl>https://documentserver/url-to-converted-document.pdf</FileUrl><Percent>100</Percent></FileResult>

返回为JSON格式的示例:

{"endConvert": true,"fileType": "docm","fileUrl": "https://documentserver/url-to-converted-document.pdf","percent": 100}

异步模式的响应包的XML格式示例:

<?xml version="1.0" encoding="utf-8"?><FileResult><EndConvert>False</EndConvert><FileType></FileType><FileUrl></FileUrl><Percent>95</Percent></FileResult>

异步模式的响应包的JSON格式示例:

{"endConvert": false,"percent": 95}

返回一个错误码的响应包XML格式示例:

<?xml version="1.0" encoding="utf-8"?><FileResult><Error>-3</Error></FileResult>

返回一个错误码的响应包JSON格式示例:

{"error": -3}

错误码信息:

错误码

意义

-1

未知错误

-2

转换超时

-3

转换出错

-4

下载过程出错

-5

密码错误

-6

访问转换结果数据库出错

-7

输入错误

-8

无效令牌

例如-8将在浏览器中得到如下画面

使用文件转换API将极大的方便前端开发者,将各种类型的办公文件进行格式的互相转换,为最终使用者提供无障碍的使用体验。

相关文章:

如何使用 ONLYOFFICE API 转换办公文档格式

作者&#xff1a;天哥 上一期我们介绍了 ONLYOFFICE 的文档生成器API接口函数库。这一期我们继续介绍ONLYOFFICE 的文件转换API接口函数库。 为什么要使用 ONLYOFFICE 转换API ONLYOFFICE 转换 API 有助于转换大部分类型的Office文档&#xff1a;文本、表格、幻灯片、表单、P…...

最新抖音去水印PHP源码 非第三方接口

简介&#xff1a; 最新抖音去水印PHP源码 非第三方接口 源码全开源 视频解析接口来自官方抖音视频接口!非第三方接口!上传PHP环境中即可运行!支持上传二级目录访问! 访问你的域名地址/douyin.php douyin.php(此文件可以自行重新命名) 支持带有文本的链接和视频ID或者分享的…...

MYSQL 高级SQL语句(二)

表连接查询 MYSQL数据库中的三种连接&#xff1a; inner join(内连接)&#xff1a;只返回两个表中联结字段相等的行&#xff08;有交集的值&#xff09;left join(左连接)&#xff1a;返回包括左表中的所有记录和右表中联结字段相等的记录right join(右连接)&#xff1a;返回…...

本地计算机端口显示CLOSE_WAIT、TIME_WAIT、ESTABLISHED、三种情况的区别

本地计算机端口显示 “CLOSE_WAIT”、“TIME_WAIT” 和 “ESTABLISHED” 表示不同的TCP连接状态&#xff0c;它们之间的区别如下&#xff1a; CLOSE_WAIT&#xff08;关闭等待&#xff09;&#xff1a; 在此状态下&#xff0c;本地计算机已经接收到来自远程计算机的关闭请求&am…...

粘性文本整页滚动效果

效果展示 CSS 知识点 background 相关属性综合运用position 属性的 sticky 值运用scroll-behavior 属性运用scroll-snap-type 属性运用scroll-snap-align 属性运用 整体页面效果实现 <div class"container"><!-- 第一屏 --><div class"sec&qu…...

【Oracle】Oracle系列十九--Oracle的体系结构

文章目录 往期回顾前言1. 物理结构2. 内存结构2.1 SGA2.2 后台进程 3. 逻辑结构 往期回顾 【Oracle】Oracle系列之一–Oracle数据类型 【Oracle】Oracle系列之二–Oracle数据字典 【Oracle】Oracle系列之三–Oracle字符集 【Oracle】Oracle系列之四–用户管理 【Oracle】Or…...

Flink-SQL join 优化 -- MiniBatch + local-global

背景 问题1. 近期在开发flink-sql期间&#xff0c;发现数据在启动后&#xff0c;任务总是进行重试&#xff0c;运行一段时间后&#xff0c;container心跳超时&#xff0c;内存溢出&#xff0c;作业无法进行正常工作 023-10-07 14:53:30,408 | INFO | [flink-akka.actor.defa…...

在c#中使用NPOI结合Magicodes.IE.excel将xlsx文件内存中转换为xls文件

项目中使用Magicodes.IE作为导出excel的组件&#xff0c;但只支持新格式xlsx&#xff0c;有需求要导出旧格式xls文件&#xff0c;因此只能考虑转换的方案&#xff0c;经多种方案尝试和查找相关解决方案&#xff0c;在一份使用NPOI转换的xlsx到xls的文章到找到相关代码&#xff…...

面试经典 150 题 14 —(数组 / 字符串)— 134. 加油站

134. 加油站 方法一 class Solution { public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int minSpare std::numeric_limits<int>::max(); // 初始化最小剩余汽油量为整型的最大值int spare 0; // 当前剩余汽油量int len g…...

如何设计一个安全的对外接口?

转载 https://blog.csdn.net/weixin_46742102/article/details/108831868?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-108831868-blog-125359890.235%5Ev38%5Epc_relevant_anti_t3_base&depth_1-utm_…...

模拟pdf运行js脚本触发xss攻击及防攻击

一、引入pdfbox依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>3.0.0</version> </dependency> 二、生成一个带js脚本的pdf文件 //Creating PDF document object PDDocum…...

【数据结构】树和二叉树概念及其结构

目录 一 树概念及结构 1 树的概念 2 树的相关概念 3 树的表示 二 二叉树概念及结构 1 概念 2 特殊二叉树 3 二叉树的性质 一 树概念及结构 1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集…...

刘京城:我的《软件方法》学习经历(有彩蛋)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 写在前面&#xff08;潘加宇&#xff09; 下面是刘京城写的关于他学习《软件方法》的经历。我在前面啰嗦几句。 我做软件建模方面的研究和普及工作已经24年了&#xff0c;和各行各业…...

浏览器详解(四) 渲染

大家好&#xff0c;我是半虹&#xff0c;这篇文章来讲浏览器渲染 1、基本介绍 浏览器是多进程多线程的架构&#xff0c;包括有浏览器进程、渲染器进程、GPU 进程、插件进程等 在上篇文章中我们介绍过浏览器进程&#xff0c;作为浏览器主进程&#xff0c;负责浏览器基本界面的…...

idea新建一个module时,文件夹显示灰色/pom.xml文件显示灰色且中间有条横线

1.问题 2.解决方法 File->Settings->Ignored Files->找到勾选的pom.xml文件&#xff0c;取消勾选&#xff0c;点击ok即可。 3.已解决...

NoSQL数据库(林子雨慕课课程)

文章目录 5.1 NoSQL数据库5.2 NoSQL和关系数据库的比较5.3 四大类型NoSQL数据库5.3.1 键值数据库和列族数据库5.3.2 文档数据库、图数据库、以及不同数据库比较分析 5.4 NoSQL数据库的理论基石CAP理论&#xff1a;BASE理论&#xff1a;Eventual consistency&#xff08;最终一致…...

模拟器运行在AndroidStudio内部,设置其独立窗口显示

在窗口内部运行 设置成独立窗口 Android Studio->Settings或Preferences->Tools->Emulator->取消勾选Launch in the Running Devices tool window --->点击右下角的OK按钮 ---> 重启Android Studio 再次启动模拟器...

计算机网络 | 体系结构

计算机网络 | 体系结构 计算机网络 | 体系结构概念及功能计算机网络简介计算机网络的功能因特网发展阶段小结 组成与分类计算机网络的组成计算机网络的分类小结 标准化工作及相关组织速率相关性能指标速率带宽吞吐量小结 时延相关性能指标时延时延带宽积往返时延RTT利用率小结 …...

ELK 处理 SpringCloud 日志

在排查线上异常的过程中&#xff0c;查询日志总是必不可缺的一部分。现今大多采用的微服务架构&#xff0c;日志被分散在不同的机器上&#xff0c;使得日志的查询变得异常困难。工欲善其事&#xff0c;必先利其器。如果此时有一个统一的实时日志分析平台&#xff0c;那可谓是雪…...

mac使用python递归删除文件夹下所有的.DS_Store文件

import osfolder_path "yourself file path"for root, dirs, files in os.walk(folder_path):for filename in files:if filename .DS_Store:file_path os.path.join(root, filename)os.remove(file_path)print("delete ok")...

App无辜躺枪?手把手教你搞定腾讯手机管家误报导致的应用商店下架

当合规应用遭遇误报下架&#xff1a;开发者系统性应对指南运动健康类应用被标记为金融诈骗软件&#xff1f;社交工具因"病毒风险"被各大商店紧急下架&#xff1f;这类看似荒谬的误报事件&#xff0c;正在成为中小开发团队的"无妄之灾"。某知名运动App开发团…...

艾尔登法环帧率解锁终极指南:告别卡顿,畅享丝滑游戏体验

艾尔登法环帧率解锁终极指南&#xff1a;告别卡顿&#xff0c;畅享丝滑游戏体验 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_m…...

用Python+OpenCV手把手实现Prewitt边缘检测(附完整代码与效果对比图)

用PythonOpenCV手把手实现Prewitt边缘检测&#xff08;附完整代码与效果对比图&#xff09; 边缘检测是计算机视觉中最基础也最关键的预处理步骤之一。想象一下&#xff0c;当你需要让计算机"看清"一张照片中的物体轮廓时&#xff0c;边缘检测算法就是它的"视觉…...

从STM32迁移到普冉PY32F003:UART代码移植保姆级教程(附HAL库对比)

从STM32到普冉PY32F003的UART代码迁移实战指南 1. 国产MCU替代浪潮下的技术选择 近年来&#xff0c;半导体行业的供应链波动促使更多工程师将目光投向国产MCU解决方案。普冉PY32F003系列作为Cortex-M0内核的代表产品&#xff0c;以48MHz主频、64KB Flash和8KB RAM的配置&#x…...

51单片机驱动ST7735S彩屏避坑指南:从5秒刷屏到流畅贪吃蛇的优化实战

51单片机驱动ST7735S彩屏性能优化实战&#xff1a;从卡顿到流畅游戏的蜕变之路当一块128x160分辨率的ST7735S彩屏遇上传统的51单片机&#xff0c;这种组合看似矛盾却又充满挑战。许多开发者初次尝试时会发现&#xff0c;原本在STM32等平台上运行流畅的显示驱动&#xff0c;移植…...

App Inventor蓝牙调试避坑指南:从连接失败到数据乱码,一次讲清所有常见问题

App Inventor蓝牙调试避坑指南&#xff1a;从连接失败到数据乱码的实战解决方案在移动应用开发领域&#xff0c;蓝牙通信一直是实现设备间短距离数据交换的核心技术之一。对于使用App Inventor的开发者而言&#xff0c;蓝牙模块提供了无需复杂编码即可实现无线通信的便捷途径。…...

ARMv8 HFGITR_EL2寄存器解析与虚拟化指令陷阱控制

1. AArch64 HFGITR_EL2寄存器架构解析HFGITR_EL2&#xff08;Hypervisor Fine-Grained Instruction Trap Register&#xff09;是ARMv8架构中专门用于指令级陷阱控制的系统寄存器&#xff0c;属于虚拟化扩展的重要组成部分。这个64位寄存器通过位映射机制实现对特定AArch64指令…...

政企数据安全:危机与出路

随着数字化转型的浪潮席卷全球&#xff0c;公共部门积累的数据量呈爆炸式增长。从公民个人信息到公共服务记录&#xff0c;从财政预算到基础设施管理数据——这些宝贵资源在提升政府治理效率的同时&#xff0c;也悄然成为网络犯罪分子的“新猎物”。当公共数据逐渐成为数字时代…...

Claude本地化部署终极方案(企业级容器化全栈手册):支持Anthropic API兼容、流式响应、模型热切换与RBAC权限隔离

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Claude本地化部署的架构全景与企业级价值定位 Claude本地化部署并非简单地将模型权重下载后运行&#xff0c;而是一套融合推理引擎优化、安全沙箱隔离、API网关治理与可观测性集成的端到端架构体系。其核心目…...

为什么92%的DeepSeek二次开发团队在6个月内遭遇交付延迟?——基于17个真实项目的技术债务归因分析

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么92%的DeepSeek二次开发团队在6个月内遭遇交付延迟&#xff1f;——基于17个真实项目的技术债务归因分析 在对17个采用DeepSeek-R1/VL模型开展定制化开发的工业级项目进行回溯审计后&#xff0c;我…...