首页 > 其他分享 >前端实现文档预览(支持word、ppt、pdf)-【@zuiyouliao/vue-file-viewer】

前端实现文档预览(支持word、ppt、pdf)-【@zuiyouliao/vue-file-viewer】

时间:2024-08-07 23:27:37浏览次数:14  
标签:zuiyouliao vue word viewer file pdf public

背景

有的时候我们需要在前端页面上预览某些文档,文档的格式比如:word、ppt、pdf、图片等等

实现方案

可以使用@zuiyouliao/vue-file-viewer第三方库,官方地址

方式1:通过组件方式引入

优点:word/图片可以识别,方便快捷。
缺点:pdf/pptx文件无法识别。

安装依赖

npm install --save @zuiyouliao/vue-file-viewer

vue中使用

<template>
  <div class="app">
    <vue-file-viewer :fileUrl="file" style="height: 500px" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      // file: 'https://home.me7.cn/fileTest/word.docx',
      // file: 'https://home.me7.cn/fileTest/pdf.pdf',
      // file: 'http://localhost:3000/public/ddd.pptx',
      file: 'http://localhost:3000/public/test.jpg',
    }
  },
}
</script>

<style lang="less" scoped></style>

方式2:通过iframe嵌入此库构建后的产物,通过链接的方式

下载源码编译构建后的产物

https://github.com/zyl-ui/vue-file-viewer/tree/master/public/file-viewer

将构建后的产物放在 public文件夹下。

vue文件代码

<template>
  <div class="app">
    <iframe
      src="./file-viewer/index.html?fileUrl=https://home.me7.cn/fileTest/pdf.pdf"
      scrolling="auto"
      style="border: 0; height: 500px; width: 100%"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {}
  },
}
</script>

<style lang="less" scoped></style>

效果

总结

推荐采用方式2,此方式通过iframe中嵌入构建后的html然后实现对文档的预览。

注意:在vue或者webpack项目中我们需要对这块构建后的html,使用复制插件将此内容复制到打包后的文件中。vue项目中`public`目录的内容会在打包的时候会原封不动的复制,但是在webpack项目的话你需要使用`copy-webpack-plugin`进行复制

标签:zuiyouliao,vue,word,viewer,file,pdf,public
From: https://www.cnblogs.com/it774274680/p/18348067

相关文章

  • Vue中@click.stop与@click.prevent
    Vue中@click.stop与@click.prevent一、@click.stop问题:父元素中添加了一个click事件,其下面的子元素中也添加了click事件,此时,我想点击子元素获取子元素的点击事件,但却触发的是父元素的事件:<viewclass="footer-box"@click="clickCard"> <view@click="footerClick('喜......
  • vue store pinia mock data mockdata
    D:\Code\asp-vue-new\long.client\src\views\order\index.vue<scriptsetuplang="ts">import{useOrder}from"@/stores/order"conststoreOrder=useOrder();onMounted(async()=>{//awaitstoreOrder.setOrders();......
  • 写一个Word Jumble的小程序
    一·程序所需要的头文件#include<iostream>#include<string>#include<cstdlib>#include<ctime>usingnamespacestd;注:本程序使用c++语言编写如有错误请各位大佬指出、首先我将对这几个头文件做简短的介绍以便大家知道我用他们干了啥。1.iostream库C++语言并未定义定......
  • 基于java+ssm+vue的自驾游拼团微信小程序
    ......
  • WordPress网站克隆:用户指南
    在这个数字化时代,拥有自己的网站已经非常普遍了。不管是个人博客还是企业官网,WordPress都提供了便捷的建站方式。但是,有时候我们需要复制一个现有的网站,无论是为了测试新功能还是迁移到新服务器。那么,如何克隆一个WordPress网站呢?本文将为大家详细介绍三种方法:使用Softaculous......
  • org.apache.shiro.authc.UsernamePasswordToken
    异常2020-02-2014:31:44.490WARN12388---[nio-8091-exec-5]o.a.shiro.authc.AbstractAuthenticator:Authenticationfailedfortokensubmission[org.apache.shiro.authc.UsernamePasswordToken-null,rememberMe=false(0:0:0:0:0:0:0:1)].Possibleunexpe......
  • 如何利用 LNMP 搭建 WordPress 站点
    在这个信息爆炸的时代,拥有一个能够迅速传达信息、展示个性、并能够与世界互动的在线平台,已成为企业和个人的基本需求。WordPress,以其无与伦比的易用性和强大的扩展性,成为了构建此类平台的首选工具。而LNMP,这个由Linux、Nginx、MySQL和PHP组成的强大组合,为WordPress提供了一个稳定......
  • vue中实现文字向上滚动效果
    <template><divclass="djs-box"><divclass="topBox"><h3>vue实现文字向上滚动效果</h3><div>大剑师兰特,还是大剑师兰特,gis-dajianshi</div></div><divcla......
  • jeecg-vue3, BasicTable与抽屉useDrawer()的简单使用
    需求:分屏情况下,根据传入参数不同查看申请材料1.实现效果点击申请材料弹出,点击取消或点击空白处,抽屉消失2.代码实现2.1files.vue实现<template><divclass="container"><a-button@click="click('sqcl')"style="margin-left:5px;">申请材料</a-b......
  • 基于springboot+vue开发的垃圾分类识别系统
    背景随着社会的快速发展,计算机的影响是全面且深入的。日常生活中,“垃圾”无处不在,家庭公寓里的垃圾桶、街头巷尾的垃圾箱、城市郊区的垃圾场、校园的垃圾站点等等,你也常常会发现,垃圾处理时通常有着多种分类,随着垃圾分类的普及,用户的数量和管理员的工作量在不断增加,工作也更......