当前位置: 首页 > 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.lqws.cn/news/165115.html

相关文章:

  • 【cmder】--- Windows 下 cmder 经典常用快捷键 显著提高效率
  • python打卡day45
  • 如何实现本地mqtt服务器和云端服务器同步?
  • Spring @Scheduled vs XXL-JOB vs DolphinScheduler vs Airflow:任务调度框架全景对比
  • DeepSeek私有化部署的理性抉择:谁需要?谁不必?
  • 408第一季 - 408内容概述
  • 【Linux基础知识系列】第十一篇-Linux系统安全
  • 安科瑞防逆流方案落地内蒙古中高绿能光伏项目,筑牢北疆绿电安全防线
  • 企业级AI迈入黄金时代,企业该如何向AI“蝶变”?
  • 摄像机ISP处理流程
  • COMSOL学习笔记-静电场仿真
  • 【强化学习】——03 Model-Free RL之基于价值的强化学习
  • 软件测试基础知识总结
  • RMSE可以融合均值与标准差
  • [zynq] Zynq Linux 环境下 AXI BRAM 控制器驱动方法详解(代码示例)
  • Tensorrt python api 10.11.0笔记
  • 【信息系统项目管理师-选择真题】2025上半年(第一批)综合知识答案和详解
  • ResolverActivity 优先级
  • FPGA点亮ILI9488驱动的SPI+RGB接口LCD显示屏(一)
  • VBA信息获取与处理专题五第一节:利用CDO发送简单邮件
  • RK3588 RTL8211F PHY的LED灯调试
  • STM32手册上标称的18MHz GPIO翻转速度和你实际测量到的速度之间的差异是预期之内且合理的
  • Python数据类型与运算符全解析-Python数据挖掘可视化分析
  • 上传、下载功能 巧实现
  • 逻辑填空(题量最多)
  • 【AAOS】【源码分析】用户管理(三)-- 用户启动
  • 用ApiFox MCP一键生成接口文档,做接口测试
  • 监测预警系统重塑隧道安全新范式
  • 筑牢企业网管域安全防线,守护数字核心——联软网管域安全建设解决方案
  • html文字红色粗体,闪烁渐变动画效果,中英文切换版本