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 文档在线预览和编辑功能。

相关推荐
螺蛳粉 螺蛳粉20 小时前
mysql的备份与恢复
linux·运维·数据库·mysql
ao-weilai20 小时前
Linux网络编程:Socket UDP
linux·服务器·网络·c++
可乐鸡翅yeah_20 小时前
混合内容 Mixed‑Content 安全策略,HLS HTTPS 页面加载 HTTP 资源排错实战
运维·ffmpeg·音视频·媒体·m3u8
mldong20 小时前
弃用 ZCode,转 DeepSeek Harness:我用 GitHub Actions 自建 Windows 打包的全实录
java·架构
曦夜日长20 小时前
Linux系统篇,进程概念(四):内核链表的深度理解、进程优先级的底层理解
linux·运维·服务器·php
Wang's Blog21 小时前
Java 接入Redis: Redis下载与源码编译安装
java·服务器·redis
农民工老王21 小时前
故障排查:反向代理转发 GET 请求时 JDK 自动追加 Content-Length:0 致后端 500
java·httpclient·content-length
泡海椒21 小时前
jquick-pdf 防止 PDF 内容分页断裂:keepTogether 属性妙用
java·开发语言·pdf
vx_BS8133021 小时前
【项目编号:project51381】Spring Boot 婚纱摄影管理系统:套餐预约、在线咨询、支付与客片展示的一站式业务实现
java·spring boot·eclipse·tomcat·mybatis
IT毕设实战小研21 小时前
基于大数据的商场商铺数据分析与可视化的设计与实现
android·java·大数据·django·课程设计