Ich benutze html2canvas.js 0.4.1, um ein DOM zu Leinwand für den Druck zu konvertieren. Wenn der Text in einer Spanne eine Hintergrundfarbe hat und die Spanne in die nächste Zeile springt, deckt die Canvas-Version das gesamte Rechteck der beiden Umbruchlinien ab. Es deckt nicht nur den Text ab. Darüber hinaus verbirgt es den Text in der vorherigen Spanne.Html Leinwand Hintergrundfarbe wraps falsch
Die folgende Geige demonstriert es ziemlich gut. Die Ein-Mann-Spanne ist vollständig durch den blauen Hintergrund auf der Zwei-Zwei-Spanne abgedeckt.
https://jsfiddle.net/sddah9k2/1/
css:
#content {
width:200px;
}
.select {
background-color:#3efcdb
}
html:
<div id='content'>
<span >one one one one one one </span>
<span class="select" >two two two two two two </span>
<span >three three three three three </span>
</div>
<div id="img-out"></div>
Code:
html2canvas($("#content"), {
onrendered: function(canvas) {
theCanvas = canvas;
document.body.appendChild(canvas);
// Convert and download as image
Canvas2Image.saveAsPNG(canvas);
$("#img-out").append(canvas);
// Clean up
//document.body.removeChild(canvas);
}
});
Meine Theorie ist, kann html2canvas nicht sagen, was den Begrenzungsrahmen der Spannweiten sind, oder vielleicht unterstützt es nicht mehrere Rechtecke als Grenzen.
Gibt es irgendeine Art von CSS-Effekt, den ich für den HTML-Text verwenden kann, der in html2canvas korrekt gerendert wird? Es muss keine Hintergrundfarbe sein, aber ich muss irgendwie angeben, dass die Umbruchspanne hervorgehoben ist.
Ja, es scheint, dass Hintergrundfarbe auf Inline-Elementen nicht gut funktioniert. Es gibt bereits [ein Problem] (https://github.com/niklasvh/html2canvas/issues/548) auf der github-Seite des Projekts. Beachten Sie auch, dass es auf der letzten Version einige Verbesserungen gegeben hat: https://jsfiddle.net/sddah9k2/5/ – Kaiido