Hallo, ich möchte einen Screenshot von einem versteckten Div machen
das ist der Code den ich probiert habe
HTML-Code:
<div` id="visible">
hello there!!
</div>
<div id="hidden" style="display:none">
You can't see me :P
</div>
JS:
var elem1=$("#hidden");
if(!elem1.is(":visible"))
{
elem1.show();elem1.fadeIn(1);elem1.fadeOut(1);
}
html2canvas(elem1).then(function(canvas){
$("body").append(canvas);
});
Fehler im Browser:
**
Nicht abgefangener TypeError: Eigenschaft 'length' von nullhtml2canvas @ html2canvas.js:941(anonyme Funktion) @ HtmlPage kann nicht gelesen werden. html:13
**
Meine Geige : https://jsfiddle.net/h39tp0Ly/2/
Bitte helft mir dabei
Html2canvas interpretiert den Stil display:none korrekt und rendert daher kein verstecktes Element. Um das zu erreichen, was Sie wollen, können Sie ein sichtbares Element absolut außerhalb des Seiten-Ansichtsfensters positionieren (wenn Sie "ein verstecktes Element rendern" möchten).
Könnte nützlich sein.
Danke !
Es funktioniert nur, wenn das Div CSS hat, das nicht " display:none " ist. Also habe ich die Kombination .show() und .hide() verwendet, um das Element sichtbar und versteckt zu machen, um Canvas zu bilden
onclone: function(document) {
hiddenDiv = document.getElementById("render");
hiddenDiv.style.display = 'block';
}
Ich habe einige Informationen im Internet gefunden. Wir können CSS mit " display:none " auf das angegebene div setzen und dann die Option onclone wie oben hinzufügen. Bitte fügen Sie die Option "loggin: true" hinzu, um zu sehen, was passiert
Tatsächlich funktioniert der Trick, den Container mit absoluten Positionswerten und negativen Werten oben/links aus einem Ansichtsfenster zu entfernen, in Firefox nicht, er löst die NS_ERROR_FAILURE-Ausnahme aus
Es funktioniert jedoch in Chrome
Ich bin vor kurzem auf dieses Problem gestoßen, und wenn Sie möchten, dass ein bestimmtes div unsichtbar ist und ein Screenshot erstellt wird, setzen Sie die CSS-Eigenschaften auf
height: 0%
overflow:hidden
Das funktioniert bei mir nicht @kchen1025
Am Ende habe ich das Canvas direkt nach dem Ziel-Div generiert und das Div sofort nach dem Laden des Canvas ausgeblendet. Das Flimmern ist kaum wahrnehmbar.
Mein Code sieht so aus:
<div id="capture">
...
</div>
<div id="end"></div>
html2canvas(document.querySelector("#capture")).then(canvas => {
$("#end").append(canvas)
$("#capture").hide()
});
Hallo, ich arbeite mit Angular 6 und "html2canvas", um ein PDF mit "jsPdf" zu erstellen .... Ich wollte einen Screenshot zu einem versteckten Div machen und konnte es nicht tun, bis ich es ERREICHTE
die Erfassung erfolgt in das div mit der ID "html-pdf"
"HTML"
` Studentenausweis /a>
div id = "pdf" *ngIf = "test" style = "text-align: center; margin-top: 5px;">
div id = "html-pdf">
/div
/div`
"js oder in Angular ist Typescript"
`herunterladen2 () {
var imgcab: Zeichenfolge;
imgcab = this.base64logo.trim ();
html2canvas (document.getElementById ('html-pdf'), {scale:2}). Dann (Funktion (Leinwand) {
var img = canvas.toDataURL ("image / png", 1);
var doc = neues jsPDF ({
Ausrichtung: 'p',
Einheit: 'mm',
Format: 'Brief',
});
doc.addImage (img, 'PNG', 2,2,212,272);
doc.addImage (imgcab, 'JPEG', 5, 5,30,30);
doc.save ('testCanvas.pdf');
});`
Und das Wichtigste ist, das div innerhalb des Bildschirms zu verstecken.
"CSS"
#pdf {
overflow: hidden;
height: 0;
}
Der Code erstellt ein PDF mit der Erfassung des div "html-pdf", das sich im versteckten div "pdf" befindet ...
Ich hoffe du dienst ihnen
Ich habe dies auf Spanisch geschrieben und es ist aus Chile übersetzt;
Ich denke, der richtige Weg, die Aufgabe zu erledigen, besteht darin, die Eigenschaft onclone
, https://stackoverflow.com/a/5104943/2251303
Hilfreichster Kommentar
Hallo, ich arbeite mit Angular 6 und "html2canvas", um ein PDF mit "jsPdf" zu erstellen .... Ich wollte einen Screenshot zu einem versteckten Div machen und konnte es nicht tun, bis ich es ERREICHTE
die Erfassung erfolgt in das div mit der ID "html-pdf"
"HTML"
` Studentenausweis /a>
div id = "pdf" *ngIf = "test" style = "text-align: center; margin-top: 5px;">
div id = "html-pdf">
/div
/div`
"js oder in Angular ist Typescript"
`herunterladen2 () {
var imgcab: Zeichenfolge;
imgcab = this.base64logo.trim ();
html2canvas (document.getElementById ('html-pdf'), {scale:2}). Dann (Funktion (Leinwand) {
var img = canvas.toDataURL ("image / png", 1);
var doc = neues jsPDF ({
Ausrichtung: 'p',
Einheit: 'mm',
Format: 'Brief',
});
doc.addImage (img, 'PNG', 2,2,212,272);
doc.addImage (imgcab, 'JPEG', 5, 5,30,30);
doc.save ('testCanvas.pdf');
});`
Und das Wichtigste ist, das div innerhalb des Bildschirms zu verstecken.
"CSS"
#pdf { overflow: hidden; height: 0; }
Der Code erstellt ein PDF mit der Erfassung des div "html-pdf", das sich im versteckten div "pdf" befindet ...
Ich hoffe du dienst ihnen
Ich habe dies auf Spanisch geschrieben und es ist aus Chile übersetzt;