• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
技术杨的博客园
希望每一次的努力都能得到自己想要的
博客园    首页    新随笔    联系   管理    订阅  订阅

vue3 使用 docx-preview 预览 Word文档

引入第三方库

npm i docx-preview

vue3创建组件

<template>
    <div>
        <!-- 用于渲染文档的容器 -->
        <div ref="previewContainer" class="preview-wrapper"></div>
    </div>
</template>

<script setup>
    import {defineProps,onMounted} from "vue"
    import { renderAsync } from 'docx-preview';
    const props = defineProps({
        url:{
            type:String,
        }
    })
    const previewContainer = ref()
    const previewDoc = async () => {
        try {
            // 假设这里是从后端获取.docx文件的Blob数据
            // 你的实际获取文件数据的逻辑可能是一个API调用,如使用 axios
            const response = await fetch(props.url);
            const blob = await response.blob();

            // 获取DOM容器
            const container = previewContainer.value;

            // 调用 renderAsync 方法渲染文档
            await renderAsync(blob, container, null, {
                className: 'docx', // 默认和文档样式类的类名/前缀
                inWrapper: true,   // 启用围绕文档内容渲染包装器
                ignoreWidth: false,
                ignoreHeight: false,
                ignoreFonts: false, // 禁用字体渲染
                breakPages: true,   // 在分页符上启用分页
            });
            console.log('文档渲染完成!');
        } catch (error) {
            console.error('预览失败:', error);
        }
    }
    onMounted(()=>{
        previewDoc()
    })
</script>

<style lang="scss" scoped>
.preview-wrapper{
    width: 100%;
    height: 100%;
}
</style>

 

posted @ 2025-09-16 11:57  技术杨  阅读(115)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3