最近在开发项目遇到一个office文档和PDF文档预览的需求,并且需要控制用户是否可以下载文件和拷贝文档中的文字。
H5office
h5office 官网文档地址,需要进去申请自己的appid。免费的
很简单的用法。
<!-- 创建一个标签就可以了 -->
<div id="office"></div>
<button id="open">打开文档</button>
<!-- 引用 h5office 库 -->
<script src="https://h5plugin.mumudev.top/public/h5office/h5office_min.js"></script>
<script>
const office = document.getElementById("office")
// e80bac62d500a7b4765cc484b686efeefa7cdab6appId 是我申请的appid,你们使用的话需要在 h5office 官网中,看文档申请自己的 appid
const h5office = new H5office(office, "e80bac62d500a7b4765cc484b686efeefa7cdab6appId")
// 修改权限 copy 是拷贝权限、download 下载权限、print 打印权限
// 如果不想用户可以下载的话就不传递 download 就可以了
h5office.setPrivilege(['copy', 'download', 'print'])
// 监听关闭,监听后必须返回 true 否则无法关闭
h5office.onClose((e) => {
alert("确认是否同意当前文档所说")
// 这里返回 false 可以取消关闭的操作
return true
})
// 监听下载按钮。如果传递了 download 权限,就需要监听下载按钮,当用户点击下载按钮我们就在这个事件中下载文件
h5office.onDownload((e) => {
// e 是当前预览的文件名
alert('下载按钮' + e)
})
// 初始化开始,如果预览文件比较大,读取比较慢的话我们可以在这个事件中打开logind的效果
h5office.onInit((e) => {
// 返回文件名和主题色
console.log("初始化开始", e)
})
// 设置需要预览的文件地址,也可以直接传递一个本地的文件对象预览本地文件
h5office.setFiel('https://h5plugin.mumudev.top/public/previewOffce/444_big.xlsx')
// 打开预览文档
document.getElementById("open").addEventListener("click", function () {
// 调用 h5office 的 show 方法
h5office.show()
})
</script>
电脑端打开样式很漂亮基本和使用微软的office软件打开一直。手机端也有单独的ui界面,并且支持双指放大缩小等操作。功能很强大,在官方文档中还说支持uniapp打包成安卓app和苹果app。
缺点:
- 有次数限制,免费的是300次,可以在h5office官方网站小程序中进行刷新,刷新的次数是没限制的,因此只要勤快一点是可以一直免费使用的。
解决办法:
小程序中是设置使用次数快没有的时候进行邮件提示,不用一直关注使用次数,当有邮件提示的时候,进入小程序中刷新一下就可以了
或者支持十元成为赞助者,赞助者每次刷新会有1000的使用次数。
- 对预览文件有大小限制,免费版本是10M,赞助版本是20M。如果文件很大的话只有进行私有化部署了