Newer
Older
xc-metering-front / src / utils / exportUtils.ts
liyaguang on 28 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)
// }
// 打印文件流
export function printContent(res) {
  const url = URL.createObjectURL(res) // 后端返回的文本流
  var iframe = document.createElement('iframe')
  iframe.setAttribute('id', 'printPDF')
  iframe.setAttribute('name', 'printPDF') // 不可少
  iframe.style.frameborder = 'no'
  iframe.style.display = 'none'
  iframe.style.pageBreakBefore = 'always' // 打印保留分页
  iframe.src = url
  document.body.appendChild(iframe)
  setTimeout(() => {
    document.getElementById('printPDF').contentWindow.print()
  }, 1000)
  window.URL.revokeObjectURL(iframe.src)
}