Newer
Older
xc-metering-front / src / utils / exportUtils.ts
liyaguang on 27 Sep 2023 1 KB feat(*): 文件流预览打印功能
/**
 * 导出文件工具
 * @param blob 文件
 * @param fileName 导出文件名
 */
export function exportFile(blob: Blob, fileName: string) {
  if (window.navigator && (window.navigator as any).msSaveOrOpenBlob) {
    (navigator as any).msSaveBlob(blob, fileName)
  }
  else {
    const downloadElement = document.createElement('a')
    const href = window.URL.createObjectURL(blob) // 创建下载的链接
    downloadElement.href = href
    downloadElement.download = fileName
    document.body.appendChild(downloadElement)
    downloadElement.click() // 点击下载
    document.body.removeChild(downloadElement) // 下载完成移除元素
    window.URL.revokeObjectURL(href) // 释放blob对象
  }
}

// 打印文件流
export function printContent(content) {
  var tagElements = document.getElementsByTagName('iframe')
  for (var m = 0; m < tagElements.length; m++) {
    if (tagElements[m].className === 'tmp-pdf') {
      tagElements[m].parentNode.removeChild(tagElements[m])// 去除元素
    }
  }
  const iframe = document.createElement('iframe')
  iframe.className = 'tmp-pdf'
  iframe.style.display = 'none'
  iframe.src = URL.createObjectURL(content)
  document.body.appendChild(iframe)
  setTimeout(() => {
    iframe.contentWindow.print()
    URL.revokeObjectURL(content)
  }, 100)
}