woapi-server为Office Online Server文档在线预览提供文档加载地址

‌一、配置Office Online Server支持文档在线预览

上一篇文章我们说了如何搭建Office文档在线预览服务 Office Online Server(以下简称OOS),搭建好之后,设置可以通过URL打开文档参考 "OpenFromUrlEnabled",具体Powershell命令如下:

bash 复制代码
New-OfficeWebAppsFarm -InternalURL "http://192.168.75.158" -AllowHttp -EditingEnabled -OpenFromUrlEnabled

其他命令可查阅官方文档:

https://learn.microsoft.com/zh-cn/powershell/module/officewebapps/?view=officewebapps-ps

https://github.com/MicrosoftDocs/office-docs-powershell/blob/main/officewebapps/officewebapps-ps/officewebapps/officewebapps.md

配置好之后,可以通过访问:http://[服务域名]/op/generate.aspx 访问文档在线预览的演示页面,如下图:

二、WOPI Server

WOPI Server是基于‌WOPI协议的‌文件预览服务,主要用于与‌Office Online Server(‌微软的在线文档预览工具)集成,实现文档的在线查看和编辑功能。以下是关键信息:

核心功能:

  • 协议支持:遵循WOPI协议,通过CheckFileInfo和GetFile接口与Office Online Server交互 。 ‌
  • 文件预览:支持Word、Excel、PPT、PDF等格式的在线预览,需搭配Office Online Server使用 。

技术实现:

  • 开发语言:常见实现包括Java(如zzq0324/wopi-server项目)和C# 。 ‌

  • WOPI协议定义了文档宿主系统(您的应用)与Office Online Server之间的通信标准。集成需要实现两个关键接口:

    • ‌**/wopi/files/{name}/contents**‌ - 用于获取和保存文档内容
    • ‌**/wopi/files/{name}**‌ - 用于获取文档元数据和操作权限
  • 部署要求:需配置WOPI Host(自定义服务器)和WOPI Client(Office Online Server) 。 ‌

使用示例 ‌‌

  • URL构造:用户访问自定义WOPI Server的页面(如https://your-wopi-server.com/wopi/files/123),页面内嵌iframe加载Office Online Server的预览地址(如https://oos.example.com/we/wordeditorframe.aspx?WOPISrc=...) 。 ‌‌
  • 配合OOS使用如下
bash 复制代码
word:http://192.168.2.109/wv/wordviewerframe.aspx?WOPISrc=http%3a%2f%2f192.168.2.102%3a8080%2fwopiserver%2ffiles%2f2%3faccess_token%3dOfficeOnlineServer
pdf:http://192.168.2.109/wv/wordviewerframe.aspx?PdfMode=1&WOPISrc=http%3a%2f%2f192.168.2.102%3a8080%2fwopiserver%2ffiles%2f4%3faccess_token%3dOfficeOnlineServer
ppt:http://192.168.2.109/p/PowerPointFrame.aspx?WOPISrc=http%3a%2f%2f192.168.2.102%3a8080%2fwopiserver%2ffiles%2f1%3faccess_token%3dOfficeOnlineServer
excel:http://192.168.2.109/x/_layouts/xlviewerinternal.aspx?WOPISrc=http%3a%2f%2f192.168.2.102%3a8080%2fwopiserver%2ffiles%2f3%3faccess_token%3dOfficeOnlineServer

Office Online Server目前支持word/pdf/excel/ppt的预览,效果分别如下:

  1. word

  2. pdf

  3. excel

  4. ppt

开源项目

  • GitHub项目:如cs3org/wopi-server提供本地存储测试支持 。 ‌‌
  • Gitee项目:如zzq0324/wopi-server(Java实现)需配合Office Online Server使用 。 ‌

三、安全加固

Office Online Server存在两个安全隐患,一是OOS暴露到公网的话会被别人利用,二是加载的文档地址容易被盗链。因此就需要以下两个配置进行加固:

bash 复制代码
# 安全配置脚本
# 限制OOS仅加载WOPI提供的文档URL
Set-OfficeWebAppsFarm -WOPIHosts "https://wopi.example.com" -AllowHttp:$false

其中https://wopi.example.com需替换成自己的wopi 服务地址

bash 复制代码
# 防止文档地址被盗
Set-OfficeWebAppsFarm -EditingEnabled:$true -ClipartEnabled:$false

WOPI如何可实现为Office Online Server提供预览的文档地址外,还可以提供在线编辑。通过对wopi接口协议的实现,可完善自己的office 文档在线预览和编辑功能。

相关推荐
Ray Liang13 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解13 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
YuMiao17 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
SimonKing17 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean17 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven9718 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林5511 天前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河1 天前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程1 天前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读