后端返回PDF文件地址,直接打印出文件以及下载

前端实现PDF打印与下载
该博客介绍了一种前端处理PDF的方法,通过将后端提供的PDF文件地址转换为blob,创建隐藏iframe并设置其src属性为PDF地址,从而实现PDF的打印。同时,通过设置下载函数,可以将PDF文件以指定名称进行下载。整个过程涉及到了前端的Blob对象、XMLHttpRequest、iframe以及打印和下载功能的实现。

后端给的PDF文件地址,直接将pdf打印出来或者下载

将后端地址转换为blob文件,然后创建一个隐藏的iframe标签src设置为pdf地址;前端通过获取隐藏的iframe标签的id来实现打印指定内容


/**
* 封装请求,将后端地址转blob文件
* src 后端pdf文件地址
*/
Blob(src){
  return new Promise(resolve => {
    const xhr = new XMLHttpRequest();
    xhr.open('GET', src, true);
    xhr.responseType = 'blob';
    xhr.onload = () => {
      if (xhr.status === 200) {
        resolve(xhr.response);
      }
    };
    xhr.send();
  })
},
PrintBtnClick(){
  // 调用
  this.Blob('pdf文件地址').then(res=>{
    console.log(res)
    this.saveAs(res,'下载文件名称')
    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(res)
    document.body.appendChild(ifr)
    this.doPrint('printPdf' + date)
    wi
在IE浏览器中打印后端返回PDF文件地址,通常需要通过JavaScript动态生成链接并触发打印功能。以下是一般的步骤: 1. **获取PDF URL**: 首先,在前端代码中,你需要从后端API获取到PDF文件的URL。 ```javascript let pdfUrl = "http://example.com/myfile.pdf"; // 后端返回PDF文件URL ``` 2. **创建隐藏的`<a>`元素**: 创建一个新的`<a>`标签,并将PDF URL作为其`href`属性设置。 ```javascript let aElement = document.createElement('a'); aElement.href = pdfUrl; ``` 3. **模拟点击**: 由于HTML5安全限制,直接让`<a>`标签触发默认行为可能会阻止下载或显示PDF。所以,你可以选择使用`window.print()`或模拟点击事件来打开PDF。 - 使用`window.print()`: 这会尝试直接打印页面内容,如果PDF在新窗口中可用,用户可以选择打印或另存为PDF。 ```javascript window.open(pdfUrl); // 新窗口打开PDF window.print(); // 尝试打印,这可能不会直接工作,除非PDF已经预加载好 ``` - 或者,你可以使用`document.body.appendChild(aElement)`将`<a>`添加到文档中,然后触发点击事件: ```javascript document.body.appendChild(aElement); aElement.click(); ``` 4. **提示用户**: 提醒用户确认是否打印,因为有时候浏览器会弹确认框询问用户如何处理PDF。 5. **清除临时元素**: 打印完成后,记得移除临时的`<a>`元素,避免影响用户体验。 ```javascript window.setTimeout(() => { document.body.removeChild(aElement); }, 0); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值