js前端如何实现图片文本文件预览功能

    实现方案

    找了网上的实现方案,效果看起来不错,放在下面的表格里,里面有一些是可以直接通过npm在vue中引入使用。

    文档格式 老的开源组件 替代开源组件
    word(docx) mammoth docx-preview(npm)
    powerpoint(pptx) pptxjs pptxjs改造开发
    excel(xlsx) sheetjs、handsontable exceljs(npm)、handsontable(npm)(npm)
    pdf(pdf) pdfjs pdfjs(npm)
    图片 jquery.verySimpleImageViewer v-viewer(npm)

    docx文件实现前端预览

    代码实现

    • 首先npm i docx-preview

    • 引入renderAsync方法

    • 将blob数据流传入方法中,渲染word文档

    import { defaultOptions, renderAsync } from "docx-preview";renderAsync(buffer, document.getElementById("container"), null,options: {       className: string = "docx", // 默认和文档样式类的类名/前缀       inWrapper: boolean = true, // 启用围绕文档内容渲染包装器       ignoreWidth: boolean = false, // 禁止页面渲染宽度       ignoreHeight: boolean = false, // 禁止页面渲染高度       ignoreFonts: boolean = false, // 禁止字体渲染       breakPages: boolean = true, // 在分页符上启用分页       ignoreLastRenderedPageBreak: boolean = true,//禁用lastRenderedPageBreak元素的分页       experimental: boolean = false, //启用实验性功能(制表符停止计算)       trimXmlDeclaration: boolean = true, //如果为真,xml声明将在解析之前从xml文档中删除       debug: boolean = false, // 启用额外的日志记录   });

    实现效果

    js前端如何实现图片文本文件预览功能

    pdf实现前端预览

    代码实现

    • 首先npm i pdfjs-dist

    • 设置PDFJS.GlobalWorkerOptions.workerSrc的地址

    • 通过PDFJS.getDocument处理pdf数据,返回一个对象pdfDoc

    • 通过pdfDoc.getPage单独获取第1页的数据

    • 创建一个dom元素,设置元素的画布属性

    • 通过page.render方法,将数据渲染到画布上

    import * as PDFJS from "pdfjs-dist/legacy/build/pdf";// 设置pdf.worker.js文件的引入地址PDFJS.GlobalWorkerOptions.workerSrc = require("pdfjs-dist/legacy/build/pdf.worker.entry.js");// data是一个ArrayBuffer格式,也是一个buffer流的数据PDFJS.getDocument(data).promise.then(pdfDoc=>{    const numPages = pdfDoc.numPages; // pdf的总页数    // 获取第1页的数据    pdfDoc.getPage(1).then(page =>{     // 设置canvas相关的属性     const canvas = document.getElementById("the_canvas");     const ctx = canvas.getContext("2d");     const dpr = window.devicePixelRatio || 1;     const bsr =       ctx.webkitBackingStorePixelRatio ||       ctx.mozBackingStorePixelRatio ||       ctx.msBackingStorePixelRatio ||       ctx.oBackingStorePixelRatio ||       ctx.backingStorePixelRatio ||       1;     const ratio = dpr / bsr;     const viewport = page.getViewport({ scale: 1 });     canvas.width = viewport.width * ratio;     canvas.height = viewport.height * ratio;     canvas.style.width = viewport.width + "px";     canvas.style.height = viewport.height + "px";     ctx.setTransform(ratio, 0, 0, ratio, 0, 0);     const renderContext = {       canvasContext: ctx,       viewport: viewport,     };     // 数据渲染到canvas画布上     page.render(renderContext);    })})

    实现效果

    js前端如何实现图片文本文件预览功能

    excel实现前端预览

    代码实现

    • 下载exceljs、handsontable的库

    • 通过exceljs读取到文件的数据

    • 通过workbook.getWorksheet方法获取到每一个工作表的数据,将数据处理成一个二维数组的数据

    • 引入@handsontable/vue的组件HotTable

    • 通过settings属性,将一些配置参数和二维数组数据传入组件,渲染成excel样式,实现预览

    // 加载excel的数据(new ExcelJS.Workbook().xlsx.load(buffer)).then(workbook=>{   // 获取excel的名列前茅页的数据   const ws = workbook.getWorksheet(1);   // 获取每一行的数据   const data = ws.getRows(1, ws.actualRowCount); })// 渲染页面import { HotTable } from "@handsontable/vue";<hot-table  :settings="hotSettings"></hot-table>hotSettings = {   language: "zh-CN",   readOnly: true,   data: this.data,   cell: this.cell,   mergeCells: this.merge,   colHeaders: true,   rowHeaders: true,   height: "calc(100vh - 107px)",   // contextMenu: true,   // manualRowMove: true,   // 关闭外部点击取消选中时间的行为   outsideClickDeselects: false,   // fillHandle: {   //   direction: 'vertical',   //   autoInsertRow: true   // },   // afterSelectionEnd: this.afterSelectionEnd,   // bindRowsWithHeaders: 'strict',   licenseKey: "non-commercial-and-evaluation"}

    实现效果

    js前端如何实现图片文本文件预览功能

    pptx的前端预览

    主要是通过jszip库,加载二进制文件,再经过一些列处理处理转换实现预览效果,实现起来比较麻烦,就不贴代码了。

    实现效果

    js前端如何实现图片文本文件预览功能

    以上就是关于“js前端如何实现图片文本文件预览功能”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

    文章标题:js前端如何实现图片文本文件预览功能,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/22976

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    亿速云的头像亿速云认证作者
    上一篇 2022年9月2日 下午10:21
    下一篇 2022年9月5日 下午11:57

    相关推荐

    • jquery中可不可以添加静态方法

      jquery中可以添加静态方法。添加静态方法的方法:1、利用“function AClass(){…}”定义一个类;2、利用“AClass.staticMethod = function(){…}”给类添加一个静态方法;3、利用“AClass.staticMethod();”…

      2022年9月15日
      41600
    • 如何进行基于知识图谱的APT组织追踪治理

      高级持续性威胁(APT)正日益成为针对政府和企业重要资产的不可忽视的网络空间重大威胁。由于APT攻击往往具有明确的攻击意图,并且其攻击手段具备极高的隐蔽性和潜伏性,传统的网络检测手段通常无法有效对其进行检测。近年来,APT攻击的检测和防御技术逐渐引起各国政府和网络安全研究者的关注。 一、发达国家AP…

      2022年9月18日
      86200
    • windows的任务管理器如何打开

      打开任务管理器的多种方式 方法一:使用Ctrl+Shift+Esc组合键调出任务管理器。 方法二:用鼠标右键点击任务栏选择“任务管理器”, 方法三:使用组合键“Win+R”键打开运行对话框,输入taskmgr,回车,即打开 方法四:按顺序连续按住Ctrl、Alt和Delete键 方法五:直接找到Ta…

      2022年9月6日
      49100
    • mysql和myisam有哪些区别

      mysql和myisam的区别是:mysql是一个关系型数据库管理系统,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据,而myisam是mysql的默认数据库引擎(5.5版之前),并且不支持事务处理。 本教程操作环境:windows10系统、mysql8.0.22…

      2022年8月27日
      41400
    • 知识管理对企业发展重要吗

      企业的每一项业务工作都与知识管理有关系,或者在创造知识,或者在使用知识。因此,建立完整的知识管理体系成为企业获得持续竞争优势是企业发展的重要目标。知识管理成为企业在新形式下战略管理的重要内容,知识经济催生了知识管理,而唯有以知识管理来迎接知识经济,才能应对知识经济所带来的挑战。 1、知识管理是网路新…

      2022年3月18日
      38500
    • python找不到文件如何解决

      解决方法: 1、点击进入“此电脑”。 2、右击“此电脑”点击“属性”。 3、点击左侧“高级系统设置”。 4、选择“高级”点击“环境变量”。 5、双击“path”。 6、点击“新建”。 7、将python的路径安装进去即可。 读到这里,这篇“python找不到文件如何解决”文章已经介绍完毕,想要掌握这…

      2022年9月8日
      1.6K00
    • win7如何清理微信和qq缓存

      win7清理微信和qq缓存的方法 微信清理: 1、打开微信,点击左侧下方三条横杠,打开后点击“设置” 2、 点击“通用设置” 3、点击右侧的“存储空间管理” 4、找到缓存这里,点击对应的管理和清理就可以了。 QQ缓存清理: 1、打开QQ主面板,点击左下方三条杠,点击“设置” 2、点击左边的“文件管理…

      2022年9月24日
      55700
    • 怎么利用idea快速搭建一个springcloud

      package com.example.consumer; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;im…

      2022年9月18日
      37600
    • jquery版本2.x和3.x的区别有哪些

      区别:1、2.x不再更新,官方只做BUG维护,功能不再新增;3.x是官方主要更新维护的版本,功能持续新增。2、3.x支持“for…of ”循环语句,2.x不支持“。3、2.x利用setInterval来实现动画,3.x支采用requestAnimationFrame()来实现动画。4、3…

      2022年9月8日
      1.2K00
    • 前端node Session和JWT鉴权登录怎么实现

      服务端渲染及session鉴权 服务端渲染 服务端渲染简单来说就是前端页面是由服务器通过字符串拼接动态生成的,客户端不需要额外通过Ajax请求参数,只需要做好渲染工作即可。 优点 前端耗时少,前端只需要请求一次接口就能将数据渲染出来,首屏加载速度变快。 利于SEO,因为服务器端相应的是完整的html…

      2022年9月21日
      77200
    注册PingCode 在线客服
    站长微信
    站长微信
    电话联系

    400-800-1024

    工作日9:30-21:00在线

    分享本页
    返回顶部