通过Angular2打印多个PDF文件

时间:2018-06-19 18:00:34

标签: angular

要从服务器接收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旁边以分别打印出来,效果很好,但是如果尝试将其打印在队列中,则会收到一些空白页。

为什么我会有这种行为?

1 个答案:

答案 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();
          }
      });