ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ element.cloneNode (true) ΠΈΠ»ΠΈ angular.copy (element) Π² HTMLElement ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ Π² html2canvas Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
html2canvas: ΠΡΠΈΠ±ΠΊΠ° ΠΏΠΎΠΈΡΠΊΠ° DIV Π² ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅
ΠΠ΅ΠΏΠΎΠΉΠΌΠ°Π½Π½ΡΠΉ (Π² ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠΈ) ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ DIV Π² ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅.
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΡΠ°ΡΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Ρ ΠΎΠ»ΡΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π΄ΡΡΠ³ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ React.js
<Link to="/system">
<button className="submitButton" onClick={this.captureMap} >SUBMIT </button>
</Link>
captureMap(){
html2canvas(document.querySelector(".mapboxgl-canvas")).then(canvas => {
// document.body.appendChild(canvas);
var image = canvas;
if(typeof localStorage !== "undefined"){
localStorage.setItem('mapImg',image.toDataURL());
}
});
}
Π‘ΡΠΎΠ»ΠΊΠ½ΡΠ²ΡΠΈΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ
const mainDom = document.createElement ('div');
mainDom.appendChild (domElem [0] .cloneNode (true)); // domElem - ΡΡΠΎ Π½Π΅ΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ dom
ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ mainDom Π² html2canvas, ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° Π½ΠΈΠΆΠ΅.
html2canvas: ΠΡΠΈΠ±ΠΊΠ° ΠΏΠΎΠΈΡΠΊΠ° DIV Π² ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅
demo.html # / Demo / Widget: 1 Uncaught (in promise) ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ DIV Π² ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅.
@HarishSonar ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° jsfiddle?
Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ.
ΠΠΎΡ
ΠΎΠΆΠ΅, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ dom ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ document.getElementsByTagName ('BODY') [0] .append (mainDom); ΡΠ΅ΡΠΈΠ» ΠΌΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠΎΡΡΠΎ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎΠ± ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ mainDom ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ html2canvas.
ΠΠ°ΠΊ ΡΠ°Π· Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ, Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
Π― Π·Π°ΠΊΠΎΠ½ΡΠΈΠ» ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π» ΡΠ·Π΅Π» DOM, Π²ΡΡΠ°Π²ΠΈΠ² Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ° document.body
ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΡΠΈΠ»ΠΈ CSS position: absolute; top: -16384px; width: ${originalElementWidth}
. ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ·Π΅Π» DOM, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π°.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, @niklasvh , Π²ΠΎΡ jsfiddle, Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Ρ ΠΎΡΠΈΡΠ΅ Π²Π·Π³Π»ΡΠ½ΡΡΡ: https://jsfiddle.net/bLwya8sf/1/
ΠΡΠΈΠ²Π΅Ρ, Ρ ΡΠΎΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π ΠΊΠΎΠ³Π΄Π° Ρ Π·Π°ΠΏΡΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ html2canvas, Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ. ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ½Π΅ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ? ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ. ΠΡΠΎ ΠΌΠΎΠΉ ΠΊΠΎΠ΄:
public downBtn () {
var targetDom = document.querySelector ('# Box');
var copyDom = targetDom.cloneNode (true);
document.body.appendChild (copyDom);
html2canvas (copyDom) .then (canvas => {
var imgData = canvas.toDataURL ('image / jpeg');
var img = Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ();
img.src = imgData;
img.onload = function () {
pdf.addImage (imgData, 'jpeg', 0, 0, this.width * 0,225, this.height * 0,225);
pdf.save ('pdf_2.pdf');
};
copyDom.remove ();
});
Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ: ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΡΠ²ΠΎΠΉ SVG Π² div, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ...
Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ: ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΡΠ²ΠΎΠΉ SVG Π² div, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ...
ΠΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ?
Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ.
ΠΠΎΡ ΠΎΠΆΠ΅, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ dom ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ document.getElementsByTagName ('BODY') [0] .append (mainDom); ΡΠ΅ΡΠΈΠ» ΠΌΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.ΠΡΠΎΡΡΠΎ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎΠ± ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ mainDom ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ html2canvas.
ΠΠ°, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ, Π° Π½Π΅ Ρ dom ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ
Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ: ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΡΠ²ΠΎΠΉ SVG Π² div, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ...
ΠΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ?
ΠΠΎΠ½Π΅ΡΠ½ΠΎ!
Π― ΠΏΡΠΈΠ²Π΅Π» Π·Π΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ .
ΠΠ½ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΠΎ Π²ΡΠ΅Ρ
Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
, ΠΊΡΠΎΠΌΠ΅ Internet Explorer 11: ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ html2canvas Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π² ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ PDF-ΡΠ°ΠΉΠ»Π΅ ... Π½Π΅ Π·Π½Π°Ρ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π»ΠΈ ΡΡΠΎ html2canvas ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ.
ΠΠΎΡ ΠΎΠΆΠ΅, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ dom ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ document.getElementsByTagName ('BODY') [0] .append (mainDom); ΡΠ΅ΡΠΈΠ» ΠΌΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠΎΡΡΠΎ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎΠ± ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ mainDom ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ html2canvas.ΠΠ°, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ, Π° Π½Π΅ Ρ dom ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ
ΠΠΎΡΠ΅ΠΌΡ Π±Ρ Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² onclone? ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ documentClone ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ΠΎΠΌ ΠΈ Π²Π½ΠΎΡΠΈΡΡ Π² Π½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΡΠ°Π±Π»ΠΈΡΠ°, Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΠ°Π½ΡΠ°, ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΏΠΎΠ»Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎ ΡΠΊΡΡΡΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ Π² PDF-ΡΠ°ΠΉΠ»Π΅.
html2canvas(document.body, {
onclone: function(documentClone) {
// target elements you want to change on the "documentClone" object
})
.then(function(canvas) {
// print canvas with e.g: jsPDF
});
};
Π― ΡΠ΅ΡΠΈΠ» Π΄Π»Ρ IE11 Π·Π΄Π΅ΡΡ .
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ.
ΠΠΎΡ ΠΎΠΆΠ΅, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ dom ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ document.getElementsByTagName ('BODY') [0] .append (mainDom); ΡΠ΅ΡΠΈΠ» ΠΌΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠΎΡΡΠΎ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎΠ± ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ mainDom ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ html2canvas.