当前位置: 首页 > news >正文

Vue支持预览 docx格式,xlsx格式,pdf格式的文件

文章目录

  • 1 预览docx格式文档
    • 1.1 引入相关配置文件
    • 1.2 预览docx格式文件
  • 2 xlsx格式文件预览
    • 2.1 引入相关配置文件 -- 如果未报错则跳过这一步
    • 1.2 预览xlsx格式文件
  • 3 pdf格式文件预览
    • 3.1 下载所需配置包
    • 3.2 预览pdf格式文件

  • 如需要,请访问以下地址
  • docx-preview, luckyexcel 配置文件与node服务仓库地址

1 预览docx格式文档

配置文件存放位置

1.1 引入相关配置文件

  • docx预览会使用 docx-preview

  • 如果直接使用npm包,当解析时出现如下错误的话,就使用下面的方法,如果没报错,就正常引入使用即可,不需要把打包后的代码引入到入口文件里。
    效果图

  • 直接把 docx-preview打包后的代码直接引入到入口文件里 – 如果未报错则跳过这一步

<!DOCTYPE html>
<html lang=""><head><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width,initial-scale=1.0" /><link rel="icon" href="<%= BASE_URL %>favicon.ico" /><title><%= htmlWebpackPlugin.options.title %></title><script src="<%= BASE_URL %>static/config.js"></script><!--------docx-preview配置文件---------><script src="./docxPreview/polyfill.min.js"></script><script src="./docxPreview/jszip.min.js"></script><script src="./docxPreview/docx-preview.min.js"></script><script src="./docxPreview/docx-preview.min.js.map"></script></head><body><noscript><strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't workproperly without JavaScript enabled. Please enable it tocontinue.</strong></noscript><div id="app"></div><!-- built files will be auto injected --></body>
</html>
  • docx-previewgithub地址: https://github.com/VolodymyrBaydalka/docxjs

1.2 预览docx格式文件

<template><div class="center"><div class="center-file" id="center-file"></div>
</template><script>
import { defaultOptions, renderAsync } from "docx-preview";
import axios from "axios";
export default {name: "",props: {},components: {},data() {return {};},computed: {},watch: {},created() {this.init();},methods: {init() {axios({method: "GET",url: "http://127.0.0.1:8899/file",params: {},responseType: "blob",}).then(function (data) {// docxrenderAsync(data.data, document.getElementById("center-file"), null, {className: "docx", // 默认和文档样式类的类名/前缀inWrapper: false, // 启用围绕文档内容渲染包装器ignoreWidth: false, // 禁止页面渲染宽度ignoreHeight: false, // 禁止页面渲染高度ignoreFonts: false, // 禁止字体渲染breakPages: false, // 在分页符上启用分页ignoreLastRenderedPageBreak: false, //禁用lastRenderedPageBreak元素的分页experimental: false, //启用实验性功能(制表符停止计算)trimXmlDeclaration: false, //如果为真,xml声明将在解析之前从xml文档中删除debug: false, // 启用额外的日志记录});});},},mounted() {},
};
</script> <style scoped lang="scss">
.center {width: 100%;height: 100%;background-color: #efefef;padding: 24px;box-sizing: border-box;.center-file {width: 100%;height: 100%;overflow: auto;background: #fff;}
}
</style>
  • 特别注意:返回值是用的 blob格式接收的,但只需要红框里的数据,如发现报错(描述具体为不是文件等等)麻烦打印下返回值跟此图对照,如还未解决麻烦评论区留言!
    注意点,下面的同理
    docx效果图

2 xlsx格式文件预览

  • xlsx预览会使用 luckyexcel

  • 如果直接使用npm包,当出现如下错误时,使用以下解决方案,如果没报错,就正常引入使用即可,不需要把打包后的代码引入到入口文件里。
    效果图

  • 直接把 luckyexcel打包后的代码直接引入到入口文件里

2.1 引入相关配置文件 – 如果未报错则跳过这一步

<!DOCTYPE html>
<html lang=""><head><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width,initial-scale=1.0" /><link rel="icon" href="<%= BASE_URL %>favicon.ico" /><title><%= htmlWebpackPlugin.options.title %></title><script src="<%= BASE_URL %>static/config.js"></script><!---------luckyexcel 配置文件--------><link rel="stylesheet" href="./luckyexcelConfig/pluginsCss.css" /><link rel="stylesheet" href="./luckyexcelConfig/plugins.css" /><link rel="stylesheet" href="./luckyexcelConfig/luckysheet.css" /><link rel="stylesheet" href="./luckyexcelConfig/iconfont.css" /><script src="./luckyexcelConfig/plugin.js"></script><script src="./luckyexcelConfig/luckysheet.umd.js"></script><script src="./luckyexcelConfig/luckysheet.umd.js.map"></script></head><body><noscript><strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't workproperly without JavaScript enabled. Please enable it tocontinue.</strong></noscript><div id="app"></div><!-- built files will be auto injected --></body>
</html>
  • luckyexcelgithub地址: https://github.com/dream-num/Luckyexcel

1.2 预览xlsx格式文件

<template><div class="center"><div class="center-file" id="center-file"></div>
</template><script>
import LuckyExcel from "luckyexcel";
import axios from "axios";
export default {name: "",props: {},components: {},data() {return {};},computed: {},watch: {},created() {this.init();},methods: {init() {axios({method: "GET",url: "http://127.0.0.1:8899/file",params: {},responseType: "blob",}).then(function (data) {// xlsxLuckyExcel.transformExcelToLucky(data.data,(exportJson, luckysheetfile) => {// luckysheet.destroy(); // 卸载表格// 重新创建新表格luckysheet.create({container: "center-file", // 设定DOM容器的idtitle: "luckysheet", //表 头名lang: "zh", //中文plugins: ["chart"],showinfobar: false, // 是否显示顶部信息栏// showstatisticBar: false, // 是否显示底部计数栏// allowEdit: false, // 是否允许前台编辑enableAddRow: false, // 是否允许增加行enableAddCol: false, // 是否允许增加列// sheetFormulaBar: false, // 是否显示公式栏// enableAddBackTop: false, //返回头部按钮data: exportJson.sheets, //表格内容// showtoolbar: false, // 是否显示工具栏title: exportJson.info.name, //表格标题});});});},},mounted() {},
};
</script> <style scoped lang="scss">
.center {width: 100%;height: 100%;background-color: #efefef;padding: 24px;box-sizing: border-box;.center-file {width: 100%;height: 100%;overflow: auto;background: #fff;}
}
</style>

xlsx效果图

3 pdf格式文件预览

  • 浏览器本身是支持pdf格式文件预览的,除非想在界面里内嵌一个区域。

3.1 下载所需配置包

  • 特别注意:vue-pdf需要文档的http地址
npm i vue-pdf

3.2 预览pdf格式文件

<template><div class="center"><pdfref="pdf"v-for="i in numPages":key="i":src="url":page="i"></pdf></div>
</template><script>
import axios from "axios";
import pdf from "vue-pdf";export default {name: "",props: {},components: {},data() {return {url: null,numPages: null,};},computed: {},watch: {},created() {this.init();},methods: {init() {axios({method: "GET",url: "http://127.0.0.1:8899/file",params: {},responseType: "blob",}).then(function (data) {// pdf// vue-pdf 包不允许本地localhost与任何地址进行访问--发到服务器这个问题自然就没了// 文件流里会自带服务端文件地址,如不理解请翻到1.2区域返回值展示图(特别注意红字下那个图)此处不再贴图。this.url = data.config.url;let loadingTask = pdf.createLoadingTask(this.url);loadingTask.promise.then((pdf) => {this.numPages = pdf.numPages;}).catch((err) => {console.error("pdf 加载失败", err);this.$message.error("pdf 加载失败");});});},},mounted() {},
};
</script> <style scoped lang="scss">
.center {width: 100%;height: 100%;background-color: #efefef;padding: 24px;box-sizing: border-box;.center-file {width: 100%;height: 100%;overflow: auto;background: #fff;}
}
</style>
http://www.dtcms.com/a/465548.html

相关文章:

  • 海南工程建设资料备案网站抖音开放平台官网入口
  • WHAT - requestIdleCallback 介绍
  • ShadowDiffusion算法解决阴影去除问题
  • AWS CLI自动删除资源脚本
  • 嵌入式学习linux内核驱动6——dts和GPIO子系统
  • 企业网站推广哪家公司好揭阳做网站公司
  • 宿州做网站的公司有哪些广州自助公司建网站
  • 星巴克APP逆向
  • [Dify] 知识库在 Agent 模式中的应用策略:让智能体更懂知识、更懂业务
  • 精通C语言(4.四种动态内存有关函数)
  • 【实用工具】使用Python语言制作RSS阅读器
  • 动态规划 - 二维费用的背包问题、似包非包、卡特兰数
  • JAVA·方法的使用
  • 做rap的网站国内做网站网站风险大吗
  • 【代码随想录算法训练营——Day33】动态规划——62.不同路径、63.不同路径II、343.整数拆分、96.不同的二叉搜索树
  • 基于单片机的元胞自动机仿真系统设计
  • 星座运势网站技术解析:从零打造现代化Web应用
  • Asp.net core 跨域配置
  • Java学习之旅第二季-18:转型
  • 建筑物孪生模型:重构空间数字化格局,赋能智慧城市
  • Claude code、codex、gemini cli开启全自动(yolo)模式,无需审批
  • wordpress账号和站内网建网站需要注册公司吗
  • 24软件测试计划主要工作和确定测试资源
  • 【每天一个知识点】[特殊字符] 大数据的定义及单位
  • ICT 数字测试原理 17 - -VCL中的预处理
  • 领码方案|微服务与SOA的世纪对话(7):运营降本增效——智能架构时代的成本与服务管理
  • YOLO v1:目标检测领域的单阶段革命之作
  • 河北建设厅八大员报名网站中国网库网站介绍
  • 基于RuoYi框架+Mysql的汽车进销存后台管理系统
  • 网站底部导航制作制作视频特效