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

使用html-docx-js + fileSaver实现前端导出word

因为html-docx-js是16年的老库了,它代码里面用到的with语法现在严格模式不允许,用npm直接引入会报错,所以我们需要用其它方式引入

首先要将html-docx-js的代码放到项目中

html-docx-js/dist/html-docx.js at master · evidenceprime/html-docx-js · GitHub

我这边的vue项目,所以放到public文件下

代码里面几个with的用法需要改一下,因为现在都是默认严格模式了

全局搜一下with(,然后把涉及到的都改成类似如下的即可

接下来到项目的html文件中,使用script标签引入

如果使用typescript,需要声明一下全局变量

export declare global {interface Window {htmlDocx: anysaveAs: (doc: any, name: string) => void}
}

这样子就可以在项目中愉快的使用了~使用方法如下:

// 需要打印的dom元素
const areaRef = ref()const handleDownload = () => {const cssText = `th, td {border-color: red;}`const content = `<!DOCTYPE html><html><head><style>${cssText}</style></head><body>${areaRef.value.outerHTML}</body></html>`const converted = window.htmlDocx.asBlob(content, {orientation: 'landscape',})window.saveAs(converted, 'test.docx')
}

PS:如果遇到样式问题的话,比如图片宽高(需要使用img标签的width和height属性),字体大小(需要使用pt)不生效的话,可以先把对应的docx模板转成html查看样式后再对应进行修改

docx转html网站


http://www.mrgr.cn/news/4947.html

相关文章:

  • 笔记-系统规划与管理师-案例题-2022年-服务规划设计
  • MySQL集群+Keepalived实现高可用部署
  • gitlab自动部署是什么 gitlab自动部署如何进行操作
  • RabbitMq实现延迟队列功能
  • 继承(下)【C++】
  • redis基本工具类编写
  • 【机器学习】(基础篇五) —— 逻辑回归
  • JAVA_8
  • Selenium + Python 自动化测试18(数据驱动实现测试)
  • 哈希表--字母异位词分组
  • uni-app--》打造个性化壁纸预览应用平台(二)
  • 代码随想录算法训练营第九天| 151.翻转字符串里的单词、卡码网55.右旋转字符串 、28. 找出字符串中第一个匹配项的下标、459. 重复的子字符串
  • 如何使用Pytest进行自动化测试
  • 流苏马兜铃Aristolochia fimbriata参考基因组
  • 世上最简单的安装jenkins
  • 组合模式 详解
  • 力扣: 两数之和 梦开始的地方
  • Markdown与Word中插入图片的方法及比较
  • 为啥https比http慢
  • stm32单片机学习 - 参考手册和数据手册