第一种方式通过 iframe 在线预览 pdf,word,excel,ppt,txt,图片,视频

  1. <template>
  2. <el-button @click="openHandler">预览</el-button>
  3. <el-dialog @close="closeHandler" v-model="maskObj.flag" title="预览">
  4. <iframe sandbox="allow-scripts allow-top-navigation allow-same-origin allow-popups"
  5. :src="maskObj.url"
  6. frameborder="0"
  7. style=" z-index: 1000;height:560px;width:100%">
  8. </iframe>
  9. </el-dialog>
  10. </template>
  11. <script lang="ts" setup>
  12. import {shallowReactive } from 'vue'
  13. let maskObj = shallowReactive({
  14. flag: false,
  15. url:''
  16. })
  17. const openHandler = () => {
  18. maskObj.url = '', //你的地址
  19. maskObj.flag = true;
  20. // 在预览的时候,可以判断一个文件的类型,不符合要求的类型不支持预览。
  21. // 在预览视频的时候,关闭弹窗的时候也应该把视频的值清空。否者视频会一直播放的
  22. }
  23. const closeHandler = () => {
  24. maskObj.url =''//清空值
  25. maskObj.flag = false;
  26. }
  27. </script>

预览word

预览视频

通过插件预览

  1. 如果通过插件预览就需要安装对应的插件。
  2. vue-pdf 可以实现对pdf的预览。

vue-pdf预览pdf

  1. <template>
  2. <el-dialog title="预览" :visible.sync="viewVisible" width="100%" height="100%" :before-close='closeDialog'>
  3. <div class="pdf" v-show="fileType === 'pdf'">
  4. <pdf :src="pdfsrc"></pdf>
  5. </div>
  6. </el-dialog>
  7. </template>
  8. <script>
  9. // 引入刚才下载的 pdf
  10. import pdf from 'vue-pdf'
  11. export default {
  12. components: {
  13. pdf
  14. },
  15. data() {
  16. yuming: "你的url", //
  17. viewVisible: false, // 弹框隐藏
  18. fileType: 'pdf', // 文件类型
  19. pdfsrc: '', // 文件地址
  20. },
  21. created() {
  22. // 有时PDF文件地址会出现跨域的情况,最好先处理一下
  23. this.pdfsrc = pdf.createLoadingTask(this.pdfsrc)
  24. },
  25. methods: {
  26. handleEdit(index, row) {
  27. //console.log(row.wjYsmc)
  28. if (!/\.(pdf|PDF)$/.test(row.wjYsmc)) {
  29. window.open(
  30. "https://view.officeapps.live.com/op/view.aspx?src=" + this.yuming + "/anli?id=" + row.id,
  31. "_blank"
  32. );
  33. return false;
  34. } else {
  35. let url = this.yuming + "/anli?id=" + row.id
  36. this.viewVisible = true
  37. this.pdfsrc = url
  38. }
  39. },
  40. closeDialog(done) {
  41. done();
  42. },
  43. }
  44. }
  45. </script>

个人认为

  1. 目前来说,通过iframe来预览的形式会更加好一些。
  2. iframe预览视频的时候,关闭弹窗的时候也应该把视频的值清空。否者视频会一直播放的
  3. 插件预览的缺点
  4. 插件预览只能够预览一种类型。而不能够预览多种类型的资源。
  5. 在预览的时候,最好是需要判断一下。符合条件的类型才能够进行预览。

iframe 在线预览pdf、word、excel、ppt、txt、图片、视频的更多相关文章

  1. 前端实现在线预览pdf、word、xls、ppt等文件

    最近在做一个公司的资源管理系统,一些知识小记一下. 1.前端实现pdf文件在线预览功能 方式一.pdf文件理论上可以在浏览器直接打开预览但是需要打开新页面.在仅仅是预览pdf文件且UI要求不高的情况下 ...

  2. 前端实现在线预览pdf、docx、xls、ppt等文件

    思路:前台将各种格式的附件上传到服务器----后台通过方法将这些格式的文件转化成图片,前台通过放映ppt的方式将其展示在页面上. 关键点:reveal.js 参考文章:https://www.awes ...

  3. .net mvc使用FlexPaper插件实现在线预览PDF,EXCEL,WORD的方法

    FlexPaper插件可以实现在浏览器中在线预览pdf,word,excel等. 在网上看到很多关于这个插件实现预览的技术,但是很难做到word和excel在线预览. pdf很好实现. 首先下载相关的 ...

  4. pc或者微信上用pdf.js在线预览pdf和word

    最近项目要求pdf和word可以在线预览功能,pc端还好解决,但是微信端就有点坑了,pc端原来的思路是将文件转成base64,然后用html格式显示 ,但是微信端不支持, 这种方式就pass掉了,谷歌 ...

  5. 网页中动态嵌入PDF文件/在线预览PDF内容https://www.cnblogs.com/xgyy/p/6119459.html

    #网页中动态嵌入PDF文件/在线预览PDF内容# 摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如 ...

  6. #网页中动态嵌入PDF文件/在线预览PDF内容#

    摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如下: 代码片段1: 1 <object ty ...

  7. 网页嵌入pdf、在线预览pdf工具及插件(转)

    摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如下: 代码片段1: 1 <object ty ...

  8. 使用pdfjs插件在线预览PDF文件

    前言 本文介绍在html中使用 pdfjs插件在线预览PDF文件的方法. 实现步骤 下载 pdfjs 并引入项目中 到PDFJS官网 http://mozilla.github.io/pdf.js/g ...

  9. FlexPaper+SWFTool+操作类=在线预览PDF

    引言 由于客户有在线预览PDF格式的需求,在网上找了一下解决方案,觉得FlexPaper用起来还是挺方便的,flexpaper是将pdf转换为swf格式的文件预览的,所以flexpaper一般和swf ...

  10. 在线预览PDF

    FlexPaper+SWFTool+操作类=在线预览PDF   引言 由于客户有在线预览PDF格式的需求,在网上找了一下解决方案,觉得FlexPaper用起来还是挺方便的,flexpaper是将pdf ...

随机推荐

  1. 一文详述DMS资源池队列阻塞告警及原理

    摘要: 本文主要对DMS资源池队列阻塞告警进行介绍,以及对其背后涉及的内核原理进行介绍. 本文分享自华为云社区<DMS资源池队列阻塞告警及原理介绍>,作者: codefulture. 一. ...

  2. 带你了解 HBase 数据模型和 HBase 架构

    摘要:HBase 是一个面向列的 NoSQL 数据库. 本文分享自华为云社区<HBase 架构:HBase 数据模型 & HBase 读/写机制>,作者: Donglian Lin ...

  3. ByteHouse:基于ClickHouse的实时数仓能力升级解读

     更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   ByteHouse是火山引擎上的一款云原生数据仓库,为用户带来极速分析体验,能够支撑实时数据分析和海量数据离 ...

  4. MySQL 错误记录:Data too long for column 'xxx' at row 1

    Content 字段是 text 类型(Text是6万多)改成了 longtext 就OK了 ALTER TABLE `Article` CHANGE `Content` `Content` LONG ...

  5. Treap(平衡树)

    Treap 前置芝士 二叉搜索树(BST),见 BST. 平衡二叉树(AVL). 先来介绍一下平衡二叉树. 背景 BST 出现以后,人们很快发现一个问题,当其维护一个有序序列时,很可能会退化成链.如图 ...

  6. Python | BitMap算法及其实现

    BitMap概述 本文介绍 BitMap 算法的应用背景,算法思想和相关实现细节. 概括而言,BitMap 主要用来解决海量数据中元素查询,去重.以及排序等问题.这里对海量数据场景的强调,似乎暗示了这 ...

  7. Codeforces Round #700 (Div. 2) A ~ D1个人题解

    Codeforces Round #700 (Div. 2) 比赛链接: Click Here 1480A. Yet Another String Game 因为Alice是要追求小,Bob追求大值, ...

  8. 【体验有奖】玩转 AIGC,函数计算 x 通义千问预体验,一键部署AI应用赢Airpods

    玩转 AIGC,基于函数计算 FC 部署通义千问预体验 从文字生成到图片生成,AIGC 的创造力让人惊叹,更多的人开始探索如何使用 AI 提高生产效率,激发更多创作潜能,然而在实际应用中,AI 技术的 ...

  9. [tslint] Identifier 'loggedIn' is never reassigned; use 'const' instead of 'let'. (prefer-const)

  10. python常见面试题讲解(四)字符串分隔

    题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组:•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于10 ...