PDFbase64数据下载 打印

PDFbase64数据下载 打印

下载

// 图片转blob
function imgURLtoBlob(dataurl) {
  const arr = dataurl.split(',')
  const mime = arr[0].match(/:(.*?);/)[1]
  const bstr = atob(arr[1])
  let n = bstr.length
  const u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  return new Blob([u8arr], { type: mime })
}

// pdf转blob
function pdfBase64ToBlob(dataUrl) {
  var bstr = atob(dataUrl)
  var n = bstr.length
  var u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  return new Blob([u8arr], { type: 'pdf' })
}

function downloadFile(url, name) {
  const a = document.createElement('a')
  a.setAttribute('href', url)
  // const fileName = name + '.pdf'
  const fileName = name
  a.setAttribute('download', fileName)
  a.setAttribute('target', '_blank')
  const clickEvent = document.createEvent('MouseEvents')
  clickEvent.initEvent('click', true, true)
  a.dispatchEvent(clickEvent)
}

export function downloadFileByBase64(url, name) {
  if (url) {
    const myBlob = pdfBase64ToBlob(url) 
    const myUrl = URL.createObjectURL(myBlob)
    downloadFile(myUrl, name)
  } else {
    alert('文件不存在')
  }
}

base64数据打印PDF

export function pdfPrint(dataResult) {  //参数为base64数据
  let dataURLtoBlob = function(dataurl) {
    var bstr = atob(dataurl)
    var n = bstr.length
    var u8arr = new Uint8Array(n)
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n)
    }
    return new Blob([u8arr], { type: 'application/pdf' })
  }

  let doPrint = function(val) {
    var ordonnance = document.getElementById(val).contentWindow
    setTimeout(() => {
      // window.print()
      ordonnance.print()
    }, 100)
  }

  let blob = dataURLtoBlob(dataResult)
  var date = new Date().getTime()
  var ifr = document.createElement('iframe')
  ifr.style.frameborder = 'no'
  ifr.style.display = 'none'
  ifr.style.pageBreakBefore = 'always'
  ifr.setAttribute('id', 'printPdf' + date)
  ifr.setAttribute('name', 'printPdf' + date)
  ifr.src = window.URL.createObjectURL(blob)
  document.body.appendChild(ifr)
  doPrint('printPdf' + date)
  window.URL.revokeObjectURL(ifr.src) // 释放URL 对象
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值