前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx)

这篇具有很好参考价值的文章主要介绍了前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、仅需实现在线预览,且文件地址公网可访问

(一)微软office免费预览(推荐)

支持doc/docx/xls/xlsx/ppt/pptx等多种office文件格式的免费预览

//示例代码

//​在https://view.officeapps.live.com/op/view.aspx?src=后面拼接需要预览的地址,如下:\

let url="http://xxx.com/files/demo.doc"
window.open("​https://view.officeapps.live.com/op/view.aspx?src="+encodeURIComponent(​url))

(二)XDOC文档预览云服务

 移动端和PC端无插件预览PDF、OFD、Word、WPS等多种格式文档

前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx),vue,vue3,前端,vue.js

//示例

let url="http://xxx.com/files/demo.doc"

window.open("https://view.xdocin.com/view?src=" + encodeURIComponent(url))

二、本地及非公网文件在线预览

本地或内网预览需要借助插件实现,pdf、mp3、mp4等主要靠原生标签或浏览器自带功能,尽量减少了插件的安装

(一)pdf、txt

直接使用ifrem嵌入页面,用浏览器自带预览功能满足基本需求,其他也可以试试vue-office的pdf插件

pdf预览效果

前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx),vue,vue3,前端,vue.js

txt预览效果

前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx),vue,vue3,前端,vue.js

(二)mp3、mp4

使用原生audio和video标签能满足基本需求,如有其他功能的需要可以使用video.js等插件

mp3预览效果

前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx),vue,vue3,前端,vue.js

mp4预览效果

前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx),vue,vue3,前端,vue.js

(三)docx、xlsx

vue-office/docx和vue-office/excel对docx和xlsx文件预览,个人感觉实现上更方便,更多实现方式也可自行查询,案例很多此处就不再列出示例代码

docx预览效果

前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx),vue,vue3,前端,vue.js

xlsx预览效果

前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx),vue,vue3,前端,vue.js

pdf/txt/mp3/mp4/docx/xlsx及图片示例代码:
<template>
  <div>
    <el-button @click="getSrc">点击获取后台文件并预览</el-button>
    <input type="file" @change="uploadFile($event)" />
    <!-- pdf/text -->
    <iframe v-if="['pdf', 'text'].includes(type)" :src="src"></iframe>
    <!-- mp3、ogg、wav -->
    <audio
      v-if="['mp3', 'ogg', 'wav'].includes(type)"
      controls
      :src="src"
    ></audio>
    <!-- mp4、webm、ogv -->
    <video
      v-if="['mp4', 'webm', 'ogv'].includes(type)"
      controls
      :src="src"
    ></video>
    <!-- docx -->
    <vue-office-docx
      v-if="type == 'docx'"
      :src="src"
      @rendered="fileRendered"
      @error="fileError"
    />
    <!-- xlsx -->
    <vue-office-excel
      v-if="type == 'xlsx'"
      :src="src"
      @rendered="fileRendered"
      @error="fileError"
    />
    <!-- 图片 -->
    <img v-if="['jpg', 'png'].includes(type)" :src="src" />

    <!-- doc -->
    <!-- doc等格式文件的预览需要后台处理成html后使用vue自带v-html进行展示 -->
    <!-- <div class="docHtml" v-html="html"></div> -->
  </div>
</template>

<script lang="ts" setup>
import { ref } from "vue";
import { getImgPath } from "@/api/testApi";
import VueOfficeDocx from "@vue-office/docx"; //引入docx预览插件
import "@vue-office/docx/lib/index.css"; //docx预览插件样式
import VueOfficeExcel from "@vue-office/excel"; //引入excel预览插件
import "@vue-office/excel/lib/index.css"; //引入excel预览插件样式

const src = ref("");
const type = ref("");
// 获取后台文件,根据实际接口处理数据
const getSrc = async () => {
  await getImgPath().then((res: any) => {
    let imgBlob = new Blob([res]);
    src.value = URL.createObjectURL(imgBlob);
  });
};
// 本地上传的文件
const uploadFile = (ev: any) => {
  let file = ev.target.files[0];
  if (file.name) {
    src.value = URL.createObjectURL(file);
  }
};
// vueOffice渲染完成的回调
const fileRendered = (e: any) => {
  console.log("渲染完成了", e);
};

// vueOffice渲染出错的回调
const fileError = (e: any) => {
  console.log("渲染出错了", e);
};
</script>

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

(三)pptx

pptx预览使用的是pptx.js文件

1.在pptx.js官网下载压缩包

PPTXjshttps://pptx.js.org/index.html

(1)进入官网点击下载按钮

前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx),vue,vue3,前端,vue.js

(2)选择版本下载

前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx),vue,vue3,前端,vue.js

2.在public文件夹中添加pptxjs依赖文件
3.在index.html中引入
    <link rel="stylesheet" href="/PPTXjs/css/pptxjs.css" />

    <link rel="stylesheet" href="/PPTXjs/css/nv.d3.min.css" />
    <!-- for charts graphs -->

    <script
      type="text/javascript"
      src="/PPTXjs/js/jquery-1.11.3.min.js"
    ></script>

    <script type="text/javascript" src="/PPTXjs/js/jszip.min.js"></script>
    <!-- v2.. , NOT v.3.. -->

    <script type="text/javascript" src="/PPTXjs/js/filereader.js"></script>
    <!--https://github.com/meshesha/filereader.js -->

    <script type="text/javascript" src="/PPTXjs/js/d3.min.js"></script>
    <!-- for charts graphs -->

    <script type="text/javascript" src="/PPTXjs/js/nv.d3.min.js"></script>
    <!-- for charts graphs -->

    <script type="text/javascript" src="/PPTXjs/js/pptxjs.js"></script>

    <script type="text/javascript" src="/PPTXjs/js/divs2slides.js"></script>
    <!-- for slide show -->
4.在页面中使用 
<template>
  <div id="pptx"></div>
</template>

<script lang="ts" setup>
const pptxShow = (src: any) => {
  nextTick(() => {
    $("#pptx").pptxToHtml({
      pptxFileUrl: src, //pptx文件地址
      slidesScale: "100%",
    });
  });
</script>

<style lang="scss" scoped>
</style>
pptx预览效果

前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx),vue,vue3,前端,vue.js

pptx预览时注意:页面报Uncaught (in promise) TypeError: $(...).pptxToHtml is not a function的错误,检查在index.html中引入的jequry版本是否与项目中其他地方使用的版本冲突导致,选择保留一个版本即可。

如果以上内容对你有帮助,就点个赞加入收藏吧~~文章来源地址https://www.toymoban.com/news/detail-753239.html

到了这里,关于前端vue3实现本地及在线文件预览(含pdf/txt/mp3/mp4/docx/xlsx/pptx)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue中使用pdf.js实现在线预览pdf文件流

    以下是在Vue中使用pdf.js实现在线预览pdf文件流的步骤: 在需要使用的组件中,使用以下代码引入pdf.js: 使用pdf.js的 getDocument() 方法加载pdf文件流。可以将文件流作为Blob对象传递给该方法。例如,可以使用axios从服务器获取pdf文件流: 在 loadPdf() 方法中,使用 getDocument() 方法

    2024年02月09日
    浏览(71)
  • 文档在线预览(四)将word、txt、ppt、excel、图片转成pdf来实现在线预览

    @ 目录 事前准备 1、需要的maven依赖 添加spire依赖(商用,有免费版,但是存在页数和字数限制,不采用spire方式可不添加) 2、后面用到的工具类代码: 一、word文件转pdf文件(支持doc、docx) 1、使用aspose方式 2、使用poi方式 3、使用spire方式 二、txt文件转pdf文件 三、PPT文件转

    2024年02月08日
    浏览(102)
  • 【Vue实用功能】Vue实现文档在线预览功能,在线预览PDF、Word、Excel、ppt等office文件

    Luckysheet 是一个类似于 excel 的在线电子表格,功能强大、配置简单且完全开源。 安装 Luckysheet 1、通过CDN引入依赖 由于 Luckysheet 现在还没有发布出模块化的开发,不能使用 npm,所以我们需要在 VUE 项目中手动引入相关文件。编辑 public/index.html 文件,在里面添加如下代码 2、指

    2023年04月22日
    浏览(103)
  • vue实战--vue+elementUI实现多文件上传+预览(word/PDF/图片/docx/doc/xlxs/txt)

        最近在做vue2.0+element UI的项目中遇到了一个需求:需求是多个文件上传的同时实现文件的在线预览功能。需求图如下:     看到这个需求的时候,小栗脑袋一炸。并不知道该如何下手,之前的实践项目中也并没有遇到相似的功能。因此也废了一番功夫想要实现这样一个

    2024年01月23日
    浏览(81)
  • vue3管理系统中后台返回pdf格式的文件流,前端如何预览?以及uniapp微信小程序中后台返回的base64位的pdf文件如何预览?

    后台返回的是base64格式的pdf文件,首先需要解析base64文件的插件 image-tools 1 安装并引入插件 2 封装预览pdf的函数 3 调用接口获取数据

    2024年01月18日
    浏览(93)
  • Vue3实现PDF文件预览 (低版本浏览器兼容)

    前言:         最近和小伙伴们一起合作完成一个企业级知识库项目,其中一个功能就是后端把所有格式的文件转换为PDF,前端实现渲染PDF文件从而实现预览,干了整整一周(考虑到低版本浏览器的兼容),试用了几种方案(iframe预览已被废弃,不适用本项目,想了解的同学

    2024年01月20日
    浏览(43)
  • Vue3 实现文件预览 Word Excel pdf 图片 视频等格式 大全!!!!

    先上效果图    插件安装 先说 word 文件是docx-preview插件           excel文件是用 xlsx 插件     介绍后端返回的数据 因为在拦截器处 做了对数据的处理 最后你调接口拿到的数据是 一个对象 里面包含: url :  blob对象转换的用于访问 Blob 数据的临时链接。这个链接可以被用于

    2024年02月07日
    浏览(89)
  • vue 纯前端预览pdf,纯前端实现pdf加水印下载文件也带水印,防止pdf下载

      原理:主要是利用pdfh5这个插件来完成的   使用方法:   1.页面需要有一个容器例子:div id=\\\"demo\\\"/div   2.下载pdfh5插件 npm install pdfh5   (注意:webpack5之后不会下载polyfill 需要手动下载 所以引入pdfh5的时候会报错)   解决方案:下载 node-polyfill-webpack-plugin npm install node-polyfill-

    2024年04月15日
    浏览(68)
  • 【Vue】vue2使用pdfjs预览pdf文件,在线预览方式一,pdfjs文件包打开新窗口预览pdf文件

    【Vue】vue2预览显示quill富文本内容,vue-quill-editor回显页面,v-html回显富文本内容 【Vue】vue2项目使用swiper轮播图2023年8月21日实战保姆级教程 【Vue】vue2使用pdfjs预览pdf文件,在线预览方式一,pdfjs文件包打开新窗口预览pdf文件 提示:这里可以添加本文要记录的大概内容: vue

    2024年02月07日
    浏览(50)
  • vue3项目打开本地pdf文件实现方法

    效果图 引入pdf插件 注意一定要这个版本,不然会报错 key.split(...).at is not a function pdf页面封装 pdf存放目录 具体实现就这么多,欢迎来吐槽! 结语 一个人久了连喜欢上一个人都好难,不要轻易地拒绝学习新知,因为你所拒绝的不是别人,而是你自己的成长之路。

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包