有做软件的网站有哪些,网站怎么做外链,百度营销推广,免费h5页面制作平台有哪些前景#xff1a;默认情况#xff0c;实现打印需要根据预览的内容进行打印。 但是当只有打印按钮存在#xff0c;不预览文件内容的情况下#xff0c;实现打印的话#xff0c;可以通过后端接口返回服务器上PDF的地址,前端通过隐藏的iframe标签中src可实现预览功能 主要是根据…前景默认情况实现打印需要根据预览的内容进行打印。 但是当只有打印按钮存在不预览文件内容的情况下实现打印的话可以通过后端接口返回服务器上PDF的地址,前端通过隐藏的iframe标签中src可实现预览功能 主要是根据pdf的链接地址实现打印pdf
实现方式1通过fetch将PDF地址转化为blob print(row) {let contractUrl http://xxxxxx.pdffetch(contractUrl).then(res {return res.blob() //将url地址转化为blob}).then(res {var iframe document.createElement(iframe)iframe.style.frameborder noiframe.style.display noneiframe.style.pageBreakBefore alwaysiframe.setAttribute(id, printPdf${row.pk}) //id要是唯一的不然会获取到上一个PDF文件的内容iframe.setAttribute(name, printPdf${row.pk})iframe.src window.URL.createObjectURL(res) //创建一个包含指定对象的URLdocument.body.appendChild(iframe)this.doPrint(printPdf${row.pk})window.URL.revokeObjectURL(iframe.src) //释放url})},doPrint(val) {var ordonnance document.getElementById(val).contentWindowsetTimeout(() {ordonnance.print()}, 500)},实现方式2采用文档流的形式解决跨域的问题
print() {// res为接口获取到的pdf文档流数据const blob new Blob([res], {type: application/pdf})var iframe document.createElement(iframe)iframe.style.frameborder noiframe.style.display noneiframe.style.pageBreakBefore alwaysiframe.setAttribute(id, printPdf)iframe.setAttribute(name, printPdf)iframe.src window.URL.createObjectURL(blob) //创建一个包含指定对象的URLdocument.body.appendChild(iframe)this.doPrint(printPdf)window.URL.revokeObjectURL(iframe.src) //释放url},
doPrint(val) {var ordonnance document.getElementById(val).contentWindowsetTimeout(() {ordonnance.print()}, 500)
},