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

前端使用 preview 插件预览docx文件

目录

    • 前言
      • 一 引入插件
      • 二 JS 处理

前言

        前端使用 preview 插件预览docx文件

一 引入插件

建议下载至本地,静态引入,核心的文件已打包(前端使用 preview 插件预览docx文件),在文章目录处下载至本地,复制在项目静态资源处,在使用的地方直接本地静态资源引入;

<script src="https://unpkg.com/jszip/dist/jszip.min.js"></script>
<script src="https://unpkg.com/docx-preview/dist/docx-preview.min.js"></script>
<!-- 建议下载至本地,静态引入 -->
<script  src='/js/PreViewDoc/jszip.min.js'></script>
<script  src='/js/PreViewDoc/docx-preview.min.js'></script>

二 JS 处理

var api = {init: function () {var that = this;laydate.render({elem: $('[name=StatisDate]').get(0), type: 'month', value: getLastMonth(), done: function (value, date, endDate) {if (date.year < new Date().getFullYear()) {console.log(new Date().getFullYear());RendergetZone(date.year);} else {GetCurrZone();}}});$('#ReportNam').text(reportNam);form.render();that.event();},event: function () {var that = this;form.on('submit(report_query)', function (input) {// 禁用 "生成" 按钮const generateButton = $('[lay-submit]'); // 通过lay-submit获取按钮generateButton.addClass('layui-btn-disabled').attr('disabled', true); // 禁用按钮generateButton.html('<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop">' +'</i> 生成中'); // 修改按钮内容为 loading 动画const container = document.getElementById('doc-content'); // 渲染文档的容器//清空提示信息container.innerHTML = '';$.ajax({url: interface2021.ReportManagement.QueryWorkSimpleReport,method: 'POST',headers: {'Content-Type': 'application/json',},data: JSON.stringify({statisDate: input.field.StatisDate,zoneCode: input.field.ZoneCd,issuingUnit: input.field.IssuingUnit,stageNumber: input.field.StageNumber,}),// xhrFields: {//     responseType: 'blob', // 接收文件流// },success: function (response) {if (response.code === -1) {container.innerHTML = "<p style='color: red;'>文档请求失败</p>";relieveDisable(false,generateButton, '生成', response.message);} else {var fileProxyUrl = response.data;fetch(fileProxyUrl).then((response) => response.blob()).then((blob) => {docx.renderAsync(blob, container).then(() => {console.log('文档渲染成功');//恢复按钮relieveDisable(true,generateButton, '生成', response.message);// 获取下载按钮并设置属性const downloadButton = document.getElementById('download-btn');downloadButton.style.display = 'inline-block'; // 显示下载按钮downloadFile(downloadButton, response.data);}).catch((err) => {console.log('文档渲染失败', err);container.innerHTML = "<p style='color: red;'>文档请求失败</p>";relieveDisable(false,generateButton, '生成', err.message);});}).catch((error) => {console.log('文件加载失败:', error);relieveDisable(false,generateButton, '生成', error.message);});}},error: function (xhr, type, errorThrown) {console.log('文档请求失败: ', errorThrown);$('#doc-content').html('<p style="color: red;">文档请求失败</p>');relieveDisable(false,generateButton, '生成', '生成失败!');},});});},
}function downloadFile(downloadButton, downloadUrl) {// 启用 "下载" 按钮downloadButton.onclick = function () {console.log("开始下载...");const link = document.createElement('a');link.href = downloadUrl;document.body.appendChild(link);link.click();document.body.removeChild(link);console.log("下载完成");};
}
http://www.dtcms.com/a/233393.html

相关文章:

  • PPT转图片拼贴工具 v3.0
  • MYSQL(三)--服务器启动参数与配置
  • 云服务器代理商的合作模式
  • 【信息系统项目管理师-选择真题】2025上半年(第一批)综合知识答案和详解
  • 每日算法-250605
  • JVM 类初始化和类加载 详解
  • 代码训练LeetCode(24)数组乘积
  • LeetCode 热题 100 - 哈希 - 128
  • ES6中的Map与Set数据结构的简单应用
  • 自定义注解facade 实现切面 进行日志记录和参数校验
  • Python训练第四十五天
  • 类似东郊到家app系统源码开发
  • 设计模式-2 结构型模式
  • 2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
  • Jenkins | Linux环境部署Jenkins与部署java项目
  • 【学习笔记】Lamba表达式[匿名函数]
  • `sendto()` / `recvfrom()` - 发送/接收数据(UDP)
  • this.$set() 的用法详解(Vue响应式系统相关)
  • 基于值函数的强化学习算法之Double Q-Learning详解
  • 示波器电流探头校准规范指南
  • 软考 系统架构设计师系列知识点之杂项集萃(81)
  • nginx 同时支持ipv4与ipv6 配置
  • 【Android基础回顾】五:AMS(Activity Manager Service)
  • 猎板PCB有铜半孔技术:深空探测器的“神经骨架”
  • Git 推送失败解决教程——error: failed to push some refs to
  • 一、ES6-let声明变量【解刨分析最详细】
  • 【Java Web】9.Maven高级
  • 双空间知识蒸馏用于大语言模型
  • 沪铜6月想法
  • 监控硬盘可以当台式机硬盘用吗