我正在尝试使用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
中的其他页面是否有限制?
答案 0 :(得分:0)
实际上问题出在下面一行:
let pdfData = doc.output('datauri');
这会在当前窗口中打开数据uri / pdfData,因此无法进入下一页。
但是,在line下面只返回数据uri字符串,因此可以轻松地将数据传递到下一页。
doc.output('datauristring');