vue实现word文档实现预览
实现 Vue 中 Word 文档预览的方法
使用 mammoth.js 将 Word 转换为 HTML
安装依赖:
npm install mammoth
在 Vue 组件中引入并转换 .docx 文件:
import mammoth from "mammoth";
methods: {
async previewWord(file) {
const result = await mammoth.convertToHtml({ arrayBuffer: file });
this.previewContent = result.value; // 渲染到模板的 div 中
}
}
通过 v-html 绑定生成的 HTML 内容到模板:
<div v-html="previewContent"></div>
使用 docx-preview 库
安装依赖:

npm install docx-preview
在组件中引入并渲染 Word 文档:
import { renderAsync } from "docx-preview";
methods: {
async renderDocx(file) {
const blob = new Blob([file], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });
await renderAsync(blob, this.$refs.previewContainer);
}
}
模板中需指定渲染容器:
<div ref="previewContainer" class="docx-preview"></div>
通过后端服务转换(推荐大文件处理)
调用后端 API 将 Word 转为 PDF 或 HTML,前端直接显示返回的 URL 或数据。示例使用 axios:

axios.post("/api/convert", formData)
.then(response => {
this.previewUrl = response.data.url; // 后端返回的预览地址
});
前端通过 <iframe> 或 <embed> 显示:
<iframe :src="previewUrl" width="100%" height="500px"></iframe>
使用 Office Web Viewer(微软官方方案)
直接嵌入微软的在线预览服务(需联网):
<iframe
:src="`https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(fileUrl)}`"
width="100%"
height="500px"
></iframe>
注意:fileUrl 需为可公开访问的文档 URL。
注意事项
- 安全性:使用
v-html时需防范 XSS 攻击,避免直接渲染用户上传的原始 HTML。 - 格式兼容性:
mammoth.js和docx-preview仅支持.docx(Office 2007+ 格式),旧版.doc需后端转换。 - 性能优化:大文件建议采用后端转换,避免前端处理卡顿。
以上方法可根据项目需求选择,纯前端方案适合小文件,后端方案更稳定且支持复杂格式。






