vue2/3 中使用 @vue-office/docx 在网页中预览(docx、excel、pdf)文件

1. 安装依赖:

#docx文档预览组件
npm install @vue-office/docx vue-demi@0.14.6
#excel文档预览组件
npm install @vue-office/excel vue-demi@0.14.6
#pdf文档预览组件
npm install @vue-office/pdf vue-demi@0.14.6

vue2.6版本或以下还需要额外安装 @vue/composition-api
npm install @vue/composition-api

2. 使用示例:

<template>
<div class="flex flex-col h-full">
<div class="flex flex-col justify-center items-center bg-[#fff]">
<div class="flex items-center w-1200px tab-box">
<el-tabs v-model="activeName" class="custom-tabs">
<el-tab-pane label="用户协议" name="1"> </el-tab-pane>
<el-tab-pane label="隐私政策及授权使用协议" name="2"> </el-tab-pane>
</el-tabs>
</div>
<div class="content w-full" v-show="activeName === '1'">
<vue-office-docx :src="src" />
</div>
<div class="content w-full" v-show="activeName === '2'">
<vue-office-docx :src="src" />
</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted } from "vue";
import VueOfficeDocx from "@vue-office/docx";
import "@vue-office/docx/lib/index.css";
const activeName = ref("1");
const src = ref("");
onMounted(() => {
getUrl();
});
const getUrl = async () => {
try {
const response = await fetch("/agreement.docx");
if (!response.ok) throw new Error("Network response was not ok");
const arrayBuffer = await response.arrayBuffer();
src1.value = arrayBuffer;
} catch (error) {
console.error("Failed to fetch the document:", error);
}
};
</script>
<style scoped>
.tab-box:deep(.el-tabs__header) {
margin: 0;
}
.tab-box:deep(.el-tabs__item) {
height: 58px;
}
.content:deep(.docx-wrapper) {
background: #f9fafb;
}
.content:deep(.docx-wrapper > section.docx) {
box-shadow: none;
background: #f9fafb;
padding: 0 !important;
width: 1200px !important;
}
.content:deep(.docx-wrapper > section.docx p) {
background: #f9fafb !important;
}
</style>

文档地址可以使用网络地址,比如 https://***.docx;
也可以文件上传时预览,此时可以获取文件的ArrayBuffer或Blob

3. 相关链接:

GitHub地址
npm地址
效果预览

posted @   Li_pk  阅读(2711)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示