Office Online Server 2016 支持打开加密文件

Office Online Server 2016 和 Office 365 网页版都不支持有打开密码的文件预览。

如何实现加密文件的预览?一些预览服务,如 WPS 在线预览,是支持密码的,但切换的成本比较大。在 Office Online Server 的服务里,我通过 nginx 注入一个 js 文件,对用户行为(打开文档、翻页、停留时间)、预览出错情况做了一些记录,如果更换成其它预览服务,这些功能逻辑都重新开发。

于是我采取了一个简单可行的方法,使用 Apache POI 对加密文件进行解密,生成一个没有密码的副本,再使用 Office Online Server 进行预览。

我使用 Boostrap + Vue 做了一个简单的密码提交表单。由于已经对预览错误进行了监控,当发现文件是加密时,跳转到输入密码的页面: