要从服务器接收PDF文件并通过Angular2在浏览器中进行打印,我将使用以下代码:
System.Threading.Tasks.Task
但是,仅当我仅接收和打印一个或两个PDF文件时,它才能完美工作。
如果我向服务器发送了两个以上的请求(循环),然后等待打印窗口将其打印在队列中,则某些打印窗口会以空白页的形式打开,其中包含一些空代码:
this.http.get(url, {
headers: headers,
responseType: 'blob'
}).subscribe(
(resp) => {
let pdf = new Blob([resp], { type: 'application/pdf' });
let objectURL = URL.createObjectURL(pdf);
let frm = document.createElement('iframe');
frm.style.display = 'none';
frm.src = objectURL;
document.body.appendChild(frm);
frm.contentWindow.print();
});
如果我生成按钮并将其放在每个iframe旁边以分别打印出来,效果很好,但是如果尝试将其打印在队列中,则会收到一些空白页。
为什么我会有这种行为?
答案 0 :(得分:1)
在您的解决方案中,我无法仅打印单个文档。我猜想print命令被提早了。我可以通过等待框架加载完成来解决它:
this.http.get(urls[0], {
responseType: 'blob'
}).subscribe(
(resp) => {
let pdf = new Blob([resp], { type: 'application/pdf' });
let objectURL = URL.createObjectURL(pdf);
let frm = document.createElement('iframe');
frm.style.display = 'none';
frm.src = objectURL;
document.body.appendChild(frm);
frm.onload = function () {
console.log('Page was loaded');
frm.contentWindow.print();
}
});