html2canvas 在 Ionic(版本 6.11.0)中不起作用

html2canvas not working in Ionic (version 6.11.0)

我有一个项目要将 Ionic (Angular) 中选定的 HTML 元素更改为图像。我想将转换后的图像加载到我的网络应用程序中。我用过 html2canvas 库,但是我在这里遇到了一个问题,转换后的图像无法加载到我的网页中。

这是我的home.page.html代码

<ion-header [translucent]="true">
  <ion-toolbar>
    <ion-title>
      Blank
    </ion-title>
  </ion-toolbar>
</ion-header>

<ion-content [fullscreen]="true">
  <ion-header collapse="condense">
    <ion-toolbar>
      <ion-title size="large">Blank</ion-title>
    </ion-toolbar>
  </ion-header>
</ion-content>

  <div id="container">
    <ion-card>
      <ion-card-header>
        <ion-card-subtitle>Card Subtitle</ion-card-subtitle>
        <ion-card-title>Card Title</ion-card-title>
      </ion-card-header>
    
      <ion-card-content>
        Keep close to Nature's heart... and break clear away, once in awhile,
        and climb a mountain or spend a week in the woods. Wash your spirit clean.
      </ion-card-content>
    </ion-card>
  </div>
  <ion-button (click)="convertToImage()">Convert to Image</ion-button>

这是我的home.page.ts代码

import { Component } from "@angular/core";
import html2canvas from "html2canvas";

@Component({
  selector: "app-home",
  templateUrl: "home.page.html",
  styleUrls: ["home.page.scss"],
})
export class HomePage {
  
  constructor() {}

  

  convertToImage() {
    let element = document.getElementById("container");
    html2canvas(element).then(function(canvas) {
      element.appendChild(canvas);
  });
  }
}

当我 运行 ionic serve 并单击按钮时,我的浏览器出现此错误。

index-92848855.js:1957 DOMException: Failed to set the 'adoptedStyleSheets' property on 'ShadowRoot': Sharing constructed stylesheets in multiple documents is not allowed

任何人都知道问题是什么以及解决这个问题的方法是什么?谢谢。

尝试使用来自https://www.npmjs.com/package/dom-to-image

的domtoimage

我把convertToImage函数改成了这个

convertToImage() {
    let result = document.querySelector("#result");
    let container = document.querySelector("#container");

    domtoimage.toJpeg(container).then( dataUrl => {
      var img = new Image();
      img.src = dataUrl;
      result.appendChild(img);

      var link = document.createElement('img')
      link.src = dataUrl
      
      // Down below is to open another window with the picture in it and ready to print
      var WinPrint = window.open(
        "",
        "",
        "left=0,top=0,width=800,height=900,toolbar=0,scrollbars=0,status=0"
      );
    
      WinPrint.document.write(link.outerHTML);
      WinPrint.document.close();
      WinPrint.focus();
      WinPrint.print();
    })
}