当前位置: 代码迷 >> JavaScript >> 离子4 html2canvas
  详细解决方案

离子4 html2canvas

热度:86   发布时间:2023-06-13 12:24:14.0

我正在尝试捕获HTML以在Ionic 4应用程序中成像。 我尝试使用html2canvas ,但是它不起作用,并在控制台中显示以下输出:

这是我的代码:

var element = document.getElementById('capture');
  html2canvas(element).then(canvas => {
    var imgData = canvas.toDataURL("image/png");
    this.socialSharing.share(null, null, imgData);
});

我也尝试过此组件,但是它不起作用。 我发现的解决方案是使用dom-to-image库。 我附上了我所做的一个例子。 您只需要放入要转换的文件扩展名即可。

import * as jsPDF from 'jspdf';
import domtoimage from 'dom-to-image';

exportPdf(){
    const div = document.getElementById('pdf');
    const options = { background: 'white', height: 845, width: 595 };
    domtoimage.toPng(div, options).then((dataUrl) => {
        //Initialize JSPDF
        const doc = new jsPDF('p', 'mm', 'a4');
        //Add image Url to PDF
        doc.addImage(dataUrl, 'PNG', 0, 0, 210, 340);
        doc.save('pdfDocument.pdf');
    }
}

我有同样的问题。 我设法通过将代码放在<ion-content>标记之外来“修复”它。 我的猜测是html2canvas不会呈现阴影DOM元素(在<ion-content>的情况下,从Ionic 4开始)。

例如,这输出一个空的画布:

<ion-content>
  <div id="capture">
    <h1>Test</h1>
  </div>
</ion-content>

但是以下工作原理:

<div id="capture">
  <h1>Test</h1>
</div>

这并不是真正的解决方案,但足以供我使用...