js直接跳过预览打印pdf文件流

项目是用vue写的,vue 有打印pdf 的插件,但是考虑版本兼容的问题,个人觉得处理起来太麻烦,还是觉得可以采取原生的js处理即可。

思路也简单:

后端返回文件流,在请求头记得要转换好对应的格式 responseType: 'blob'

export const getPdfUrl = (params) => {
  return axios({
    url: process.env.INV_APP_NAME +'/invInvoiceManageInfo/getPdfUrl',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

 获取到文本流后,即可用 iframe  去处理打印。

题外话,获取到文本流后,即可处理下载文本流到本地。

  记得要处理好pdf 的分页,要保留适应分页的问题

        let res = await this.reqPrintFn(row)
        let 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) 

思路来源 react项目利用iframe显示pdf文件并打印 - 掘金 (juejin.cn)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值