前端实现在线预览word(docx),pdf,excel类型的文件

article/2025/8/25 14:18:05

实现方案

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

文档格式老的开源组件替代开源组件
word(docx)mammothdocx-preview(npm)
powerpoint(pptx)pptxjspptxjs改造开发
excel(xlsx)sheetjs、handsontableexceljs(npm)、handsontable(npm)
pdf(pdf)pdfjspdfjs-dist(npm)

docx文件实现前端预览

代码实现

  • 首先npm i docx-preview (官网连接:https://www.npmjs.com/package/docx-preview)
    引入renderAsync方法
    将blob数据流传入方法中,渲染word文档
    只支持Blob | ArrayBuffer | Uint8Array这三种类型的数据
import { defaultOptions, renderAsync } from "docx-preview";
renderAsync( Blob | ArrayBuffer | Uint8Array, document.getElementById("container"), null,{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, // 启用额外的日志记录}
);

实现效果
在这里插入图片描述

pdf实现前端预览

使用步骤

  1. 首先npm i pdfjs-dist
  2. 设置PDFJS.GlobalWorkerOptions.workerSrc的地址
  3. 通过PDFJS.getDocument处理pdf数据,返回一个对象pdfDoc
  4. 通过pdfDoc.getPage单独获取第1页的数据
  5. 创建一个dom元素,设置元素的画布属性
  6. 通过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);})
})

实现效果
在这里插入图片描述
ps:当然服务器也可以穿pdf的在线预览链接,我们通过window.open(’pdf地址‘) 重新打开一个浏览器窗口就能浏览了。

excel实现前端预览

使用步骤

  1. npm install xlsx ,注意要安装0.16.0的版本
<template><div><input type="file" @change="upload" /></div>
</template><script setup>
//在线预览excel
import XLSX from "xlsx"; 
//我们一般从后台获取文件数据或者本地读取xlsx格式的文件基本都是获取的arraybuffer类型,我们将其转为unit8Array格式的数组,之后xlsx插件会帮我们将其解析。
//最终解析出来的数据格式是一个数组,数组每一项是一个对象,该对象代表之前xlsx每一行数据。对象中的每个属性代表每一列的表头
var upload = function (e) {const reader = new FileReader();var file = e.target.files[0];reader.readAsArrayBuffer(file);//将文件对象读取为arraybuffer类型的数据reader.onload = (event) => {var data = new Uint8Array(event.target.result);var workbook = XLSX.read(data, { type: "array" });var sheetNames = workbook.SheetNames; // 工作表名称集合var worksheet = workbook.Sheets[sheetNames[0]];var excelData = XLSX.utils.sheet_to_json(worksheet);console.log(excelData)//最终解析xlsx格式的文件得出来的数据};
};
</script><style>
</style>

实现效果
在这里插入图片描述

pptx的前端预览

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

实现效果
在这里插入图片描述
代码地址:https://github.com/zhuye1993/file-view
作者:竹业 https://juejin.cn/post/7071598747519549454


http://chatgpt.dhexx.cn/article/mCqF6PqH.shtml

相关文章

word文档创建及在线预览方法

工作中经常有时会遇到需要给用户创建word文档并实现word文档在线预览 的需求,我来讲一讲我所知道的解决方案。 一、word文档模板定义 因word文档中内容是根据不同用户显示不一样,所以需要使用较为灵活的模板了,本文使用的是freemarkerxml来定义模板: 1. maven依赖: <depe…

自学Java没学历可以找到工作吗?

除非技术真的diao 炸 天&#xff0c;否则大概率是找不到的 低学历能自学编程的人大有人在&#xff0c;你在搜索引擎上一查&#xff0c;低学历自学编程改变自身命运的不胜枚举。 但无一不例外的&#xff0c;每个求学者的叙述都透漏着心酸、艰难困苦&#xff0c;披荆斩棘。这些词…

自学Java真能找到好工作吗

最近跟学生沟通的时候总是能听到这样的对话 学生&#xff1a;老师&#xff0c;我觉得没必要报个班学习Java&#xff0c;我有好多师兄现在都在自学的&#xff0c;我觉得他们学的也挺不错的&#xff0c;没有想象的那么难&#xff0c;我也准备自学了&#xff01; 老师&#xff1…

自学编程到底多难?能不能找到工作?阿里技术专家这样回答……

最近逛知乎&#xff0c;看到一个问题&#xff0c;有感而发&#xff0c;原问题如下&#xff1a; 想自学编程恳请大神推荐app网站&#xff01;? 数学不好&#xff0c;再从小学数学开始重修 想学习编程&#xff0c;请问各位大神 1、编程要求哪方面数学知识&#xff1f; 2、有…

自学Java真的可以找到工作吗?

就java得市场而言&#xff0c;不管自学还是科班找到工作都不是很难。当然&#xff0c;自学的话&#xff0c;首先要解决的是自制力的问题&#xff0c;如果没有自制力&#xff0c;也就没有了恒心&#xff0c;学不了东西&#xff0c;自然也找不到工作。 其次&#xff0c;java发展…

java能自学吗_java能自学吗?

java能自学吗&#xff1f; Java是一门面向对象编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地实现了…

自学编程5个月找到了月薪12K的工作,我的方法值得大家借鉴

昨晚在刷知乎的时候&#xff0c;突然跳出了字节发来的录用邮件&#xff0c;期待了很久offer&#xff0c;最大的感受就是这5个月的编程自学没有白费。 高中对编程很感兴趣&#xff0c;但是一边搞主课一边自学编程导致高考没考好&#xff0c;编程也没学出什么苗头。于是选择了一个…

自学java到可以找工作要多久_自学编程需要多久才能找到工作?

自学编程需要多久才能找到工作&#xff1f; 很多编程初学者都会有这种疑问&#xff0c;自学学到什么程度或者学多久能够找到工作&#xff0c;这种问题没有统一答案&#xff0c;因为每个人的出发时候的基础以及在学习过程中掌握的程度不尽相同&#xff0c;也会导致结果不一样&am…

自学java能找到工作吗?公司会要吗?

java是一门面向对象编程语言&#xff0c;它不仅仅吸收了C语言的各种优点&#xff0c;还摒弃了C语言当中很难理解的多继承、指针等概念&#xff0c;所以&#xff0c;java语言具有着功能简单、简单易用这两个特征。 java学习起来还是非常的简单的&#xff0c;现在有很多的人都会自…

零基础自学编程的程序员如何找到工作

现在很多年轻人喜欢计算机,喜欢软件开发,想从事IT行业但又不是学这个专业的,很多人就想通过自学的途径走上这条道路,但大家肯定也和我当初一样有很多的困惑。本人学校学的是国际贸易专业,毕业之后的不顺利加上自身的兴趣爱好,走上编程的道路,下面就结合亲身经历说说自己…

自学单片机能找到工作吗?能有出路吗?

你现在的情况跟我十年前很像啊&#xff0c; 或许我当时的情况比你现在还糟一些。 我们是电气工程毕业的&#xff0c;第一年学了一些电气相关的知识&#xff0c;后面几年学校给我们安排的全是电梯的课程。 我和很多人的想法一样&#xff0c;电梯还需要开专业的课程&#xff1f…

配置Nginx端口

一、起因 昨天晚上闲来无事,上了下阿里云发现自己的域名和服务器都还没过期,所以就把自己的域名绑定到服务器地址上,做了一个DNS解析。但是我发现,每次需要访问8888端口时仍需要使用 域名:8888 这种方式访问,所以我想用Nginx做一个反向代理,将默认打开的80端口转发到808…

宝塔配置Nginx

如果出404 就是因为点击了 恢复默认配置 解决办法 &#xff1a; 重新 指向 目录位置即可

本地项目配置nginx代理请求接口

nginx安装 安装下载地址&#xff1a;http://nginx.org/en/download.htmlnginx配置 相关命令(针对小白&#xff0c;本人也是)&#xff1a; 1. start nginx // 启动ng服务器2. nginx -s reload // 服务杀死后进行重启&#xff08;每次修改配置需执行此操作&#xff09;3. nginx -…

5分钟教你快速配置nginx实现访问

文章目录 需求操作步骤一、开放端口二、在nginx配置文件中配置端口1&#xff09;server块2&#xff09;区分root和alias3&#xff09;区分server块的root和location块的root4&#xff09;proxy_pass处理跨域 三、根据配置文件往路径下丢包 总结 需求 工作中我们时常需要完成个…

Debian配置Nginx和PHP

要求&#xff1a; 安装nginx软件包&#xff1b; 配置文件名为ispweb.conf&#xff0c;放置在/etc/nginx/conf.d/目录下&#xff1b; 网站根目录为/mut/crypt&#xff08;目录不存在需创建&#xff09;&#xff1b; 启用FastCGI功能&#xff0c;让nginx能够解析php请求&#xff…

云服务器安装并配置nginx

初次购买完云服务器&#xff0c;通过 ssh 连接到远程云服务器时&#xff0c;如果在浏览器直接访问&#xff0c;会访问无效&#xff0c;情况如下&#xff1a; 所以我们需要 给云服务器安装 web 服务器。 安装nginx 用 SFTP 工具&#xff08; Final Shell / Filezilla / WinSCP …

win10安装配置nginx

准备工作 去nginx.org下载nginx&#xff0c;我下载的是 nginx/Windows-1.10.3版本 进入页面->点击download->点击 nginx/Windows-1.10.3 安装 解压&#xff0c;然后启动nginx.exe 当进程中有nginx&#xff0c;就算是启动成功了 访问测试 浏览器访问 127.0.0.1 或者…

安装配置Nginx全分布

目录 一安装准备 1.1安装c环境 1.2下载安装包 二安装配置 2.1上传安装包到相应位置 2.2解压 2.3进入解压的Nginx目录&#xff08;nginx-1.12.2&#xff09; 2.4启动/关闭Nginx&#xff08;要用执行root&#xff09; 2.5配置负载均衡 三验证 一安装准备 1.1安装c环境 s…

docker安装配置nginx

https://hub.docker.com/search?qnginx&typeimage 一、查看docker是否安装nginx docker images二、安装nginx docker pull nginx三、运行nginx镜像 docker run --name mynginx -p 80:80 -d nginx四、查看运行结果 docker ps网页访问&#xff0c;浏览器输入虚拟机IP:端…