在web端预览word文档,可以使用iframe来实现。但由于兼容性问题,并不能使用iframe在安卓和ios上预览文件
经测试发现,mammoth插件可以实现该功能
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title id="title"></title>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/mammoth/1.4.16/mammoth.browser.min.js"></script>
</head>
<body>
<div id="example">
</div>
<script>
//data 是word文档的地址
function preview(data){
// var url = data
// var xhr=new XMLHttpRequest();
// xhr.open('GET', url);
// xhr.responseType='arraybuffer';
// xhr.onreadystatechange=function (){
// if(this.readyState==4){
// if(this.status==200){
// var arrayBuffer=this.response;
// mammoth.convertToHtml({arrayBuffer: arrayBuffer})
// .then((res)=>{
// document.getElementById('message').innerHTML = res.value
// let obj = document.getElementById('message').children
// for(let i = 0;i<obj.length;i++){
// obj[i].style.color="#333"
// obj[i].style.fontSize="0.7rem"
// }
// }).done();
// } else {
// console.log(this.status);
// }
// }
// }
// xhr.send();
axios({method:'get',url:data,responseType:'arraybuffer'}).then(res=> {
if(res.status==200){
//将文件转成arrayBuffer格式
var arrayBuffer=res.data
mammoth.convertToHtml({arrayBuffer: arrayBuffer})
.then((res)=>{
document.getElementById('message').innerHTML = res.value
let obj = document.getElementById('message').children
//动态修改样式
for(let i = 0;i<obj.length;i++){
obj[i].style.color="#333"
obj[i].style.fontSize="0.7rem"
}
}).done();
}
}).catch(e => {console.log(e)})
}
</script>
</body>
</html>