超详细过程vue3中做文件预览功能

以vue3为基础,针对常见文件类型做项目内的预览功能

涉及到的文件类型有docx,xlsx,pdf,txt,png,jpg,jpeg,mp4,mp3,

这里你可能会疑惑为什么docx,xlsx都支持,为啥不顺带支持下doc和docx呢???
这里我也表示很难啊,针对老版本格式的文档,没有合适的解决方案,如果说一定要有,那就只能是通过下载的方式本地预览了 ┭┮﹏┭┮

开整开整~

1. docx文档预览解决方案

安装下依赖
这里呢我用的是1.6.2版本

npm i @vue-office/docx
或者
yarn add @vue-office/docx

模版代码块里面
这里呢支持的属性分别介绍下

  1. src:资源路径http://116.228.88.26:52800/nymanagerFile/group1/M00/00/B8/rBwWM2aGQyCAGisxAAqcqJw-Cq468.docx
  2. style:自定义样式
  3. rendered:渲染完成后调用
  4. error:渲染失败后调用
<vue-office-docx
 :src="previewSrc"
 :style="comStyle"
 @rendered="renderedHandler"
 @error="errorHandler"
/>

script 标签内

<script setup>
//	获取父组件传递的资源url
const props = defineProps({
  previewSrc: {
    type: String,
    required: false,
    default: () => ''
  }
});
//引入VueOfficeDocx组件相关
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/docx/lib/index.css'
</script>

运行成功之后展示
在这里插入图片描述

2. xlsx文档预览解决方案

安装下依赖
这里呢我用的是1.7.8版本

npm i @vue-office/excel
或者
yarn add @vue-office/excel

模版代码块里面
这里呢支持的属性分别介绍下

  1. src:资源路径http://116.228.88.26:52800/nymanagerFile/group1/M00/00/B8/rBwWM2aGQyCAGisxAAqcqJw-Cq468.xlsx
  2. style:自定义样式
  3. rendered:渲染完成后调用
  4. error:渲染失败后调用
<vue-office-excel
 :src="previewSrc"
 :style="comStyle"
 @rendered="renderedHandler"
 @error="errorHandler"
/>

script 标签内

<script setup>
//	获取父组件传递的资源url
const props = defineProps({
  previewSrc: {
    type: String,
    required: false,
    default: () => ''
  }
});
//引入VueOfficeExcel组件相关
import VueOfficeExcel from '@vue-office/excel'
import '@vue-office/excel/lib/index.css'
</script>

运行成功之后展示
在这里插入图片描述

3. pdf&txt文档预览解决方案

无需安装依赖
这里呢采用的是iframe方式来展示,因为呢iframe是自带支持pdf和txt的

模版代码块里面
这里呢支持的属性分别介绍下

  1. src:资源路径http://116.228.88.26:52800/nymanagerFile/group1/M00/00/B8/rBwWM2aGQyCAGisxAAqcqJw-Cq468.pdf
   <iframe
      :src="previewSrc"
    ></iframe>

script 标签内

<script setup>
//	获取父组件传递的资源url
const props = defineProps({
  previewSrc: {
    type: String,
    required: false,
    default: () => ''
  }
});
</script>

运行成功之后展示
在这里插入图片描述

4. video文档预览解决方案

安装下依赖
这里呢我用的是1.3.2版本

npm i vue3-video-play
或者
yarn add vue3-video-play

可以选择在入口文件里面导入一下

// 视频播放器组件
import App from './App'
const app = createApp(App)
import vue3videoPlay from 'vue3-video-play' // 引入组件
import 'vue3-video-play/dist/style.css' // 引入css
app.use(vue3videoPlay)

这里导入的时候回存在一个问题,就是依赖包引入的路径回有问题,会导致项目在运行的时候报错。这里给出解决方案======》需要将依赖包中package.json文件中的’module’改为"./dist/index.mjs"
在这里插入图片描述

模版代码块里面

<vue3VideoPlay
  width="100%"
  title="钢铁侠"
  :src="previewSrc"
  :poster="options.poster"
  @play="onPlay"
  @pause="onPause"
  @timeupdate="onTimeupdate"
  @canplay="onCanplay"
/>

script 标签内

<script setup>
  <script setup>
import { reactive } from 'vue';

const props = defineProps({
  previewSrc: {
    type: String,
    required: false,
    default: () => ''
  },
});
console.log('资源地址:',props.previewSrc);
const options = reactive({
//   src: "https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/IronMan.mp4", //视频源
  poster: '', //封面
})
const onPlay = (ev) => {
//   console.log('播放')
}
const onPause = (ev) => {
//   console.log(ev, '暂停')
}
const onTimeupdate = (ev) => {
//   console.log(ev, '时间更新')
}
const onCanplay = (ev) => {
//   console.log(ev, '可以播放')
}
</script>

运行成功之后展示
在这里插入图片描述

5. audio(MP3等)文档预览解决方案

这里呢无需要装第三方依赖,使用audio标签

**模版代码块里面**
```javascript
<audio
   controls
   controlsList="nodownload"
   style="width: 100%;"
 >
   <source
     :src="previewSrc"
     type="audio/mp3"
   >
   您的浏览器不支持audio标签。
 </audio>

script 标签内

<script setup>
//	获取父组件传递的资源url
const props = defineProps({
  previewSrc: {
    type: String,
    required: false,
    default: () => ''
  }
});
</script>

运行成功之后展示
在这里插入图片描述

Vue3是一种流行的JavaScript框架,用于构建用户界面。要实现预览PDF文件功能,可以使用Vue3结合一些其他库来实现。以下是一种可能的实现方式: 1. 首先,你需要引入一个用于处理PDF文件JavaScript库,比如pdf.js。你可以使用npm或者yarn来安装该库。 2. 在Vue3,你可以创建一个组件来处理PDF文件预览。在该组件,你可以使用pdf.js库来加载和渲染PDF文件。 3. 在组件,你可以使用Vue3的生命周期钩子函数来在组件加载时加载PDF文件。你可以在`mounted`钩子函数调用pdf.js库的API来加载PDF文件。 4. 一旦PDF文件加载完成,你可以使用pdf.js库提供的API来渲染PDF文件。你可以创建一个canvas元素,并将其作为PDF文件的容器。 5. 接下来,你可以使用pdf.js库提供的API来渲染PDF页面。你可以通过调用`pdf.getPage(pageNumber)`方法来获取指定页码的页面对象,并将其渲染到canvas元素上。 6. 为了实现预览功能,你可以在组件添加一些控制按钮,比如上一页和下一页按钮。当用户点击这些按钮时,你可以调用pdf.js库提供的API来切换页面,并重新渲染到canvas元素上。 7. 最后,你可以在Vue3组件使用`<canvas>`标签来显示渲染后的PDF文件。你可以使用Vue3的数据绑定来控制canvas元素的显示和隐藏。 这是一个简单的实现预览PDF文件功能的方法。当然,具体的实现方式可能会因为你的需求和使用的库而有所不同。希望对你有所帮助!
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值