vue docxtemplater word文档 自动填充 pizzip

 docxtemplater 官网:https://docxtemplater.readthedocs.io/en/latest/index.html  

import PizZip from 'pizzip'
import Docxtemplater from 'docxtemplater'
import JszipUtil from 'jszip-utils'
import FileSave from 'file-saver'
//上面四个是需要用到的,通过npm i xxx即可安装
function fullWord(fileName, data) {
  /**
   * 文件放在public目录下,因此文件路径和文件名相同
   */
  /** 将文件转为二进制 */
  JszipUtil.getBinaryContent(fileName, function(err, res) {
    if (err) {
      console.error(err)
    } else {
      // 将文件转为zip文件
      const pizZip = new PizZip(res)
      // 创建Docxtemplater对象实例并添加zip文件
      const docxtemplater = new Docxtemplater(pizZip)
      // 设置填充内容
      docxtemplater.setData(data)
      // 进行内容填充
      docxtemplater.render()
      // 获取到要下载的文件
      const out = docxtemplater.getZip().generate({
        type: 'blob',
        mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
      })
      // 进行下载
      FileSave(out, fileName)
    }
  })
}
export { fullWord }

其他下载方式: 

 1、通过location.href下载

const out = docxtemplater.getZip().generate({
  type: 'blob',
  mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
})
// 创建blob流
const blob = new Blob([out], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' })
// 生成路径
const objectUrl = URL.createObjectURL(blob)
// 下载
window.location.href = objectUrl

2、通过a标签下载

//创建一个a标签
const download = document.createElement('a') 
// 创建路径
const href = window.URL.createObjectURL(blob) 
// 设置a标签
download.style.display = 'none'
download.href = href
// 下载的文件名
download.download = '文件名'
// 将a标签加入body并触发点击事件
document.body.appendChild(download) 
download.click()
// 移除a标签和路径缓存
document.body.removeChild(download) 
window.URL.revokeObjectURL(href) 

 

有疑问请留言

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值