如何在Ionic 2/3中将大型Base64数据发送到NavController?

时间:2018-06-06 06:31:09

标签: ionic-framework base64 ionic3

我正在尝试使用Base64使用以下代码将NavController数据作为字符串发送到另一个页面:

  ConvertHTMLToPDF = () => {
    let htmlGrid = document.getElementById('customContent');
    const options = {background: "white", height: htmlGrid.clientHeight, width: htmlGrid.clientWidth};
    html2canvas(htmlGrid, options).then((canvas) => {
      let doc = new jsPDF("p", "mm", "a4");
      let imgData = canvas.toDataURL("image/PNG");
      //Add image Canvas to PDF
      doc.addImage(imgData, 'PNG', 20, 20);

      let pdfData = doc.output('datauri');
      let obj = {PDFSrc: pdfData};
      this.navCtrl.setRoot('SaveConsentLetterPage', obj);
    });
  };

当Base64数据的大小很小,如 3Kb 4Kb 时,这非常有用。但是,当数据类似于 1.2Mb 时,NavController可以重定向到SaveConsentLetterPage。它崩溃了应用程序。

为什么?将setRoot的数据发送到Ionic 2/3中的其他页面是否有限制?

1 个答案:

答案 0 :(得分:0)

实际上问题出在下面一行:

let pdfData = doc.output('datauri');

这会在当前窗口中打开数据uri / pdfData,因此无法进入下一页。

但是,在line下面只返回数据uri字符串,因此可以轻松地将数据传递到下一页。

doc.output('datauristring');