Как отправить большие данные Base64 в NavController в Ionic 2/3? - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь отправить 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 имеют небольшой размер, такой как 3Кб или 4Кб .Но когда данные похожи на 1.2Mb , NavController может перенаправить на SaveConsentLetterPage.Вылетает приложение.

Почему это так?Есть ли ограничения на отправку данных с setRoot на другую страницу в Ionic 2/3?

1 Ответ

0 голосов
/ 06 июня 2018

На самом деле проблема была в строке ниже:

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

Это открывает данные uri / pdfData в текущем окне и, как следствие, не позволяет перейти на следующую страницу.

Но нижняя строка возвращает только строку данных URI и в результате может легко передать данные на следующую страницу.

doc.output('datauristring');
...