spring boot2.X word在线预览 pdf.js

最近公司项目需求需要在线预览word文档,并且不能在在线下载和编辑。在此记录我是如何做的。

针对word的在线预览晚上大多给的解决方案就是先把word文件转成pdf,然后通过pdf.js在线预览pdf。

下面是详情详细的操作步骤;

1.springboot继承jodconverter把非pdf文件转成pdf

详细请查看我另一篇文章:https://blog.csdn.net/zenghu_10/article/details/93222721

2.下载pdf.js所需文件并集成到spring boot

pdf.js下载地址:http://mozilla.github.io/pdf.js/getting_started/#download

spring boot2.X word在线预览 pdf.js

下载之后是这么个目录,把当前目录的文件以及文件夹copy到spring boot的statifc中,确保能通过域名加地址直接访问.

我是在static中创建了一个pdfjs文件夹,把所有文件都放到此文件夹中。

spring boot2.X word在线预览 pdf.js

这是copy之后的情况。

3.使用pdf.js进行文件预览

pdf.js文件预览的关键是web中的viewer.html文件,只需要访问该文件,并把你要预览的pdf文件路径当做参数传递过去就可以实现预览啦。

例如:我的pdf文件路径为项目的static下面的/upload/works/course/1561101210883411_doc_to_pdf.pdf并且该文件可以直接通过http://localhost/upload/works/course/1561101210883411_doc_to_pdf.pdf路径进行访问。

预览是访问的地址就是http://localhost/pdfjs/web/viewer.html?file=/upload/works/course/1561101210883411_doc_to_pdf.pdf

效果图:

spring boot2.X word在线预览 pdf.js

注意:如在预览中遇到“file origin does not match viewer”错误请把web文件夹下面的viewer.js文件中的此行注释掉

spring boot2.X word在线预览 pdf.js

4.禁止下载和打印文件

由于pdf.js自带下载和打印功能,需要禁止下载和打印。

在处理该问题时我在网上也找了解决办法,好多都说把web文件夹下面的viewer.html中的Print和Download 2个button按钮隐藏掉就可以了,这种方式我试了,不好使,不知道是因为我版本比较新的问题还是怎么回事,目前我的pdf.js的版本为"pdfjs-2.0.943-dist"。

最终我的解决方案:在web文件夹中的viewer.js中把打印和下载的点击触发的click事件行为进行修改,触发click水事件时来提示禁止打印和下载,以此来完成禁止打印,下载。spring boot2.X word在线预览 pdf.js

至此结束!