广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue使用docx-preview实现docx文件在线预览功能全过程
  • 898
分享到

vue使用docx-preview实现docx文件在线预览功能全过程

vue在线预览doc文档vue实现文件预览功能vue 在线预览word 2023-05-15 17:05:09 898人浏览 八月长安
摘要

目录1.下载插件2.导入3.使用组件总结之前一般做项目进行文件浏览的时候基本都是用的window.open+url的形式打开文件,进行浏览操作的,但是这种打开方式只能够在线浏览如jp

之前一般做项目进行文件浏览的时候基本都是用的window.open+url的形式打开文件,进行浏览操作的,但是这种打开方式只能够在线浏览如jpg、png、pdf这类文件,对于文档类型docx这种则是用下载的方式打开的。这次甲方爸爸不想要下载了,于是就来使docx-preview这个在线预览组件了。(这个插件只能够实现docx后缀的文件,doc文件打不开滴)

1.下载插件

npm i docx-preview --save
or
yarn add docx-preview

2.导入

import { renderAsync } from 'docx-preview';
 
//一般用这种形式就行了
let docx = requie('docx-preview');
 
//我是vue3项目 报错require不行 就用的下边这种了
let docx = import.meta.glob('docx-preview');

3.使用组件

如图有两个文件,设计点击时传送文件file 得到如下数据

因为之前上传时已经限定了上传文件格式,所以通过fileType判断,是图片文件还是docx文档文件,图片文件则直接传url浏览,文档文件则需处理,选择的是将文件通过url地址换成以下这种形式进行操作

要渲染的组件:

<div ref="childRef" class="childRef"></div>

渲染语法: 

function previewfile(item) {
 
  if (item.fileType == '.docx') {
    nextTick(() => {
      fetch(item.filePath)
        .then((response) => {
          let docData = response.blob(); //将文件转换成bolb形式
 
           //选择要渲染的元素
          let childRef = document.getElementsByClassName('childRef');
 
           //用docx-preview渲染
          renderAsync(docData, childRef[0]).then((res) => {
            console.log('res---->', res);
          });
        })
        .catch((error) => {
          console.log(error);
        });
    });
  } else {
    ImageUrl.value = toRaw(item).filePath;
  }
}

实现结果

这个组件渲染出来有自带的样式,自己修改修改样式就行了

更新一下关于样式方面的问题:

文档以弹窗形式出现组件代码如下

<el-dialog v-model="dialogVisible" class="dialogLarge" append-to-body :destroy-on-close="true">
    //此处是弹窗名称
      <template #header>
        <div class="dialogHeader">
          <div>预览</div>
        </div>
      </template>
    //此处是预览图片的Img组件
      <img
        w-full
        :src="dialogImageUrl"
        alt="Preview Image"
        style="height: auto; width: 100%"
        v-show="dialogImageUrl"
      />
    //此处是用于渲染docx文档的div
      <div ref="childRef" class="childRef"></div>
</el-dialog>

生成效果如图:

 这个组件会自动生成docx-wrapper的div盒子,有自带的样式

1.修改.docx-wrapper{background:white}去除灰边

2..docx-wrapper>section.docx{box-shadow:none}去除阴影效果

屏蔽或者用!important设置section.docx自带的高度宽度等属性,得到符合UI要求的样子

//Vue3使用:deep(){}的形式进行样式穿透
//vue2是::v-deep或者/deep/的形式进行样式穿透
 
:deep(.docx-wrapper) {
  background-color: #fff;
  padding: 0;
}
:deep(.docx-wrapper > section.docx) {
  width: 100% !important;
  padding: 0rem !important;
  min-height: auto !important;
  box-shadow: none;
  margin-bottom: 0;
}

总结

到此这篇关于vue使用docx-preview实现docx文件在线预览功能的文章就介绍到这了,更多相关vue实现docx文件在线预览内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: vue使用docx-preview实现docx文件在线预览功能全过程

本文链接: https://www.lsjlt.com/news/209338.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作