前端根据url在线预览功能

news/2024/12/5 4:46:41/

文章目录

    • 加载脚本
    • WORD
    • excel
    • pdf
    • img
    • video

加载脚本

// wordawait this.utils.loadScript('https://unpkg.com/promise-polyfill/dist/polyfill.min.js')await this.utils.loadScript('https://unpkg.com/jszip/dist/jszip.min.js')await this.utils.loadScript('https://unpkg.com/docx-preview@0.1.9/dist/docx-preview.min.js')// excelawait this.utils.loadScript('https://unpkg.com/xlsx/dist/xlsx.full.min.js')// pdfawait this.utils.loadScript('https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.9.179/pdf.min.js')

WORD

// 元素
<div id="viewModalContainer"></div>// 方法const data = await fetch(url).then((response) => response.blob()).then((res) => {this.$('dialog_lkw0jna2').show()docx.renderAsync(res, document.getElementById('viewModalContainer'), null, {// ignoreWidth: true,// ignoreHeight: true,}).then(result => {console.log('result', result)})})return data

excel

// 元素
<div id="excelContainer"></div>// 方法const data = await fetch(url).then((response) => response.arrayBuffer()).then((res) => {this.$('dialog_lkwbvqrc').show()const wb = XLSX.read(res);console.log('wb', wb)// const ws = wb.Sheets[wb.SheetNames[0]];// console.log('ws', ws)// const html = XLSX.utils.sheet_to_html(ws)let html = '';wb.SheetNames.forEach(function (name, index) {let ws = wb.Sheets[name];let str = XLSX.utils.sheet_to_html(ws, { header: 1, defval: '' });// 只截取table的内容let startNo = str.indexOf(`<table>`);let endNo = str.indexOf(`</table>`);str = str.substring(startNo, endNo + `</table>`.length);str = str.replace(/(\b(?:id|t|v)=".*?")/g, '');str = str.replace('<table>', `<table border="1" style="border-collapse:collapse; width: 100%; border:1px solid #666666; margin-bottom:5px;font-size:14px;margin: 15px 0;">`);html += str;})const dom = document.getElementById('excelContainer')dom.innerHTML = html})

pdf

// 有个canvas元素
<canvas id="pdfContainer"></canvas>// 方法const loadingTask = pdfjsLib.getDocument(url)loadingTask.promise.then(res => {this.$('dialog_lkwbvqrg').show()// 获取 canvas 元素const canvas = document.getElementById('pdfContainer')res.getPage(1).then(function (page) {const viewport = page.getViewport({ scale: 1 });const context = canvas.getContext('2d');canvas.height = viewport.height;canvas.width = viewport.width;page.render({canvasContext: context,viewport: viewport});}).catch(error => {console.log('error:', error)})})

img

  • 根据使用的组件库直接预览
this.utils.previewImage({ current: rowData.path })

video

  • 新窗口打开
window.open(rowData.path)

http://www.ppmy.cn/news/1015634.html

相关文章

C++初阶——函数重载

前言&#xff1a;C中除了可以在不同的命名空间中使用同名函数&#xff0c;还有一种支持在同一个作用域中同名函数的方式——函数重载。 函数重载 一.什么是函数重载&#xff1f;二.函数重载的3种规则三.特殊情况 一.什么是函数重载&#xff1f; C允许同样同一作用域中声明几个功…

维深(Wellsenn):2023中国消费端VR内容开发商调研报告(附下载

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 国内互联网大厂商入局VR&#xff0c;字节跳动、网易表态明确。字节跳动2021年收购国内头部VR硬件厂商PICO后&#xff0c;加速构建VR内容生态&#xff0c;2021年 成立海南创见未来当前已推出VR视频应用…

DP与EDP接口协议学习

文章目录 一、概念介绍DP----DisplayPort&#xff0c;一种标准化数字式视频接口&协议EDP---Embedded DisplayPort&#xff0c;DP协议在嵌入式领域拓展DP和HDMI对比----HDMI当前应用更广&#xff0c;DP是PC领域推出协议 二、DP&EDP相关协议分析三条数据通路Manlink 、Au…

海思uvc_app源码学习笔记

文章目录 前言流程hicamerahistreamhiuvc 模块分析总结 前言 海思mpp例子里面的uvc_app源码学习笔记。 看了半天&#xff0c;以为是3516读取usb摄像头数据的&#xff0c;结果是实现一个usb摄像头的。可以搞个公对公的usb线测试下。 大概流程是从摄像头获取图像&#xff0c;进行…

ChatGPT发展到了什么程度?代码生成,程序员将被取代?

前言 ChatGPT 是一个基于人工智能的聊天机器人&#xff0c;由 OpenAI 开发。ChatGPT 的历史可以追溯到早期的语言模型&#xff0c;例如循环神经网络 (RNN) 和长短时记忆网络 (LSTM)。如今的 ChatGPT-3 则是最新的版本。 ChatGPT发展到了什么程度&#xff1f;代码生成&#xff0…

vs code remote ssh: Resolver error: Error: Got bad result from install script

今天像往常一样&#xff0c;打开 windows 11&#xff0c;使用 vs code 远程连接服务器 ubuntu 20&#xff0c;但是遇到了一个错误&#xff1a;Resolver error: Error: Got bad result from install script。 ok&#xff01;&#xff01;&#xff01;开始 Bing &#xff01;&…

每天一道leetcode:剑指 Offer 50. 第一个只出现一次的字符(适合初学者)

今日份题目&#xff1a; 在字符串 s 中找出第一个只出现一次的字符。如果没有&#xff0c;返回一个单空格。 s 只包含小写字母。 示例1 输入&#xff1a;s "abaccdeff" 输出&#xff1a;b 示例2 输入&#xff1a;s "" 输出&#xff1a; 提示 0 …

【JVM满分总结】

文章目录 1、什么是JVM&#xff1f;2、能说一下JVM的内存区域吗&#xff1f;3、.说一下JDK1.6、1.7、1.8内存区域的变化&#xff1f;4、为什么使用元空间替代永久代作为方法区的实现&#xff1f;5、对象创建的过程了解吗&#xff1f;6、什么是指针碰撞&#xff1f;什么是空闲列…