如何使用 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将极大的方便前端开发者,将各种类型的办公文件进行格式的互相转换,为最终使用者提供无障碍的使用体验。

要在 Vue 中使用 OnlyOffice API,您需要先安装 OnlyOffice 的 JavaScript API 库。您可以通过以下命令使用 npm 进行安装: ``` npm install onlyoffice-api ``` 一旦您安装了 OnlyOffice API,您可以在 Vue 组件中使用它。以下是一个基本的 Vue 组件,它创建了 OnlyOffice 文档编辑器实例并在页面上显示: ``` <template> <div> <div id="placeholder"></div> </div> </template> <script> import * as OO from 'onlyoffice-api'; export default { name: 'OnlyOfficeDemo', data() { return { editor: null }; }, mounted() { this.initializeEditor(); }, methods: { initializeEditor() { this.editor = new OO.DocumentEditor('placeholder', { document: { fileType: 'docx', key: 'your-document-key' }, documentType: 'text', callbackUrl: '', height: '100%', width: '100%', events: { onReady: function() { console.log('Editor is ready'); } } }); } } }; </script> ``` 在这个例子中,我们引入了 OnlyOffice API 并在组件的 `mounted` 钩子函数中初始化了文档编辑器实例。我们将编辑器实例存储在组件的 `editor` 数据属性中,以便在其他方法中使用。 请注意,在这个例子中,我们将 OnlyOffice 文档编辑器的根元素设置为 `placeholder`,它是在组件模板中定义的一个空的 div 元素。您可以将此元素替换为您的页面上的任何元素,以便在该元素中显示 OnlyOffice 文档编辑器。 一旦您创建了文档编辑器实例,您就可以使用 OnlyOffice API 提供的其他方法来实现您的功能。例如,您可以使用 `getDocumentData()` 方法获取文档的数据对象,或者使用 `insertContent()` 方法在文档中插入内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值