LibreOffice Online API

2020-09-06 22:15:59

<;表单操作=";https://localhost:9980/lool/convert-to";enctype=";多部分/表单数据";方法=";POST";>;文件:<;输入类型=";文件";名称=";数据";>;<;格式:<;输入类型=";文本";名称=";格式";>;<;br/>;<;输入type=";提交";值=";转换";>;<;/表单>;

LibreOffice online使用类似WOPI的协议与想要将LibreOffice online集成到其中的主机进行交互。

禁用LibreOffice Online后端中的打印功能。如果为rue,则假定HidePrintOption为true。

主页发送/接收PostMessages的域的字符串,我们只侦听来自此域的消息。

文件的ID(如wopi/files/ID)可以是不存在的文件。在这种情况下,当模板(例如,OTT文件)在CheckFileInfo响应中指定为";TemplateSource";。

TemplateSource应该是一个类似于https://somewhere/accessible/file.ott的网址,可以在线访问。

布尔标志,指示用户是否具有编辑和/或覆盖文件的权限。如果不设置,PutFile将失败。

一个布尔标志,指示用户无法在此服务器上另存为,因此PutFileRelative将失败。

如果设置为true,则在UI的文件菜单栏中隐藏打印选项。

如果设置为true,则在UI的工具栏和文件菜单栏中隐藏保存按钮。

禁用后端的导出功能。如果设置为true,则假定HideExportOption为true。

禁用从LibreOffice Online后端中的文档复制。粘贴到文档中仍然是可能的。但是,仍可以在内部执行剪切/复制/粘贴。

当文档变为非活动或取消时,禁止在覆盖上显示说明文本。因此,JS集成必须在获得SESSION_CLOSED或USER_Idle postMessage时为用户提供适当的消息。

表示集成要处理用于打印的pdf或用于幻灯片或专业文档的svg的下载,因为它不能依赖浏览器的下载支持。

当它设置为true时,用户的。打印操作将触发名为download_as的postMessage,值中包含以下JSON:

如果设置为true,则允许文档所有者(具有OwnerId=userid的文档所有者)发送关闭文档消息(请参阅protocol)

注意:有严格的内容安全策略限制图片资源(img-src),因此头像URL不能违反CSP,否则会显示为破碎图片。

如果设置为非空字符串,则用于在文档的每个平铺上呈现类似水印的文本。

注意:可以只隐藏打印、保存、导出选项,同时仍然可以使用PostMessage API从其他主机访问它们(请参阅loleaflet/reference ence.html)。

成功加载文档时,使用';DOCUMENT_LOADED';值扩展了字段';Status';,在其他情况下';失败';。

可以在初始IFRAME设置中使用';ACCESS_TOKEN';的位置传递';ACCESS_HEADER';,而不是';ACCESS_TOKEN';。

然后在所有协议调用(如PutFile、GetFile或CheckFileInfo)中使用此头,从而允许进行基本身份验证。

PutFile还指示用户在保存之前是否修改了文档,或者他们是否只按了保存按钮而没有进行任何修改。以下标题:

当自动保存触发PutFile时,将具有值';true';;当通过显式用户操作(保存按钮或菜单项)触发时,将具有值';false';。

当文档从内存中清除时(例如,当所有用户断开连接时),将触发自动保存。在这种情况下,以下标头将设置为";true";:

我们的类WOPI协议省略了锁定,因为它违背了常见的EFSS解决方案的使用。相反,LibreOffice online使用时间戳来检测文档更改。

如果在LibreOffice Online中编辑文档的同时更新了存储中的文档,并且存在未保存的更改,我们会尽快检测到它,并询问用户是否要覆盖更改或从存储中重新加载新文档。

如果没有未保存的更改,我们将在不询问用户的情况下重新加载新文档。

要支持此功能,主机实现必须在CheckFileInfo和PutFile调用中指定LastModifiedTime字段。

此标头包含LibreOffice online所知的文件在存储中的最后修改时间的ISO8601往返格式化时间。如果存在此头并且其值与存储中文件的修改时间不匹配,则表示正在编辑的文档不是存储中存在的文档。

在这种情况下,主机不应将文件保存到存储,并使用HTTP 409以及LibreOffice Online特定状态代码进行响应:

当用户在询问如何解决冲突时选择覆盖时,LibreOffice将再尝试一次保存操作,但这一次它将缺少X-lool-WOPI-TIMESTAMP标头,这意味着无论文件";处于何种状态,都会进行保存。

使用新功能时,重要的是要让集成人员知道他们正在使用的在线服务是否支持他们。出于这个原因,我们引入了一个/host/capability端点,它返回一个JSON,其中包含有关各种功能可用性的信息。

当转换为功能存在并且可以从WOPI主机正确访问时,可用属性为true。

当线上有很好的移动设备支持和响应性设计时才是真的。