在IOS中打印PDF而不使用React在视觉上打开它

时间:2019-01-28 02:15:11

标签: ios reactjs pdf iframe printing

我正在使用React开发一个响应式Web应用程序,并试图在IOS中开发打印PDF而不用视觉打开它。 (就像window.print()中的行为一样。)

我尝试使用iframe嵌入PDF,并使用contentWindow.print()进行打印。但是,此方法只能打印一页,而不能打印IOS Safari中的所有页面。

我也尝试了嵌入和对象,但发现了相同的结果。

这是我讨厌的代码:

onPrintHandler(){
   console.log("OnPrint");

    var arr = this.state.base64Pdf.split(',')
    var binary = atob(arr[1]);
    var len = binary.length;
    var buffer = new ArrayBuffer(len);
    var view = new Uint8Array(buffer);
    for (var i = 0; i < len; i++) {
    view[i] = binary.charCodeAt(i);
    }
    console.log('view',view)
    // create the blob object with content-type "application/pdf"                 
    var blob1 = new Blob( [view], { type: "application/pdf" });
    console.log('blob1',blob1);
    var url = window.URL.createObjectURL(blob1);

    var iframe = this._printIframe;
    if (!this._printIframe) {
      iframe = this._printIframe = document.createElement('iframe');
      document.body.appendChild(iframe);

      iframe.style.display = 'none';
      iframe.onload = function() {
        setTimeout(function() {
          iframe.contentWindow.focus();
          iframe.contentWindow.print();
        }, 3000);
      };
    }

    iframe.src = url;

}

请问在IOS Safari中打印所有页面PDF的解决方案?

有什么建议吗?

谢谢

利昂

0 个答案:

没有答案