Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π΅ΡΠ»ΠΈ Π±Ρ Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΡΠ΅ΠΊΡΡ ΠΈ ΡΠ²Π΅Ρ ΡΠΎΠ½Π°, ΡΠΎ Ρ Π±Ρ Π½Π°ΠΆΠ°Π» Β«Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡΒ», ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·Π°Π» Π±Ρ ΡΠ΅ΠΊΡΡ ΠΈ ΡΠ²Π΅Ρ ΡΠΎΠ½Π°, Π½ΠΎ Π΅ΡΠ»ΠΈ Ρ Π΄ΠΎΠ±Π°Π²Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² div, ΠΎΠ½ Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅ΡΠΈ .
ΠΡΠΈΠ²Π΅Ρ.
Π£ ΠΌΠ΅Π½Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ.
Π― ΠΏΡΡΠ°ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠ²ΠΈΡΠ°, Π½ΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ.
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΡΡΡ.
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΉΡΠΎΠ² Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ΠΈ Β«Π·Π°Π³ΡΡΠ·Π½ΡΡΡ Ρ ΠΎΠ»ΡΡ HTML5Β». ΠΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠ΅Π½Π΄Π΅ΡΠ΅ΡΠ°:
Π°ΡΡΠΈΠ±ΡΡ: allowTaint
ΡΠΈΠΏ: Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: Π»ΠΎΠΆΡ
ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅: Π Π°Π·ΡΠ΅ΡΠΈΡΡ Π»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ ΠΈΠ· ΡΠ°Π·Π½ΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΏΠΎΡΡΠΈΡΡ Ρ
ΠΎΠ»ΡΡ
ΠΠ°ΡΠ΅Π» Π·Π΄Π΅ΡΡ: https://html2canvas.hertzen.com/documentation.html.
ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°....
ΠΈ ΠΌΠΎΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΡΡ
ΠΎΠ΄ΡΡ ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ - Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π½ΡΡΠ΅ Ρ Π·Π°ΠΏΡΡΠΊΠ°Π» html-ΡΠ°ΠΉΠ»Ρ Π½Π°ΠΏΡΡΠΌΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½ΠΎ Π·Π°ΡΠ΅ΠΌ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ³ΡΠ³Π»ΠΈΠ², Ρ Π½Π°ΡΠ΅Π» ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
Π― ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Visual Studio, ΠΈ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» ΠΎΡΠ»ΠΈΡΠ½ΠΎ, ΠΌΠΎΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ ΡΠ΅Π³Π° div ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ.
ΠΡΡΠ°Π²ΡΡΠ΅ ΠΎΠΏΡΠΈΡ allowTaint , ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅.
html2canvas(document.getElementById('invoice-panel'), {
letterRendering: 1,
allowTaint : true,
onrendered : function (canvas) {
}
});
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² div.
ΠΠΎΠ³Π΄Π° Ρ ΠΏΡΡΠ°ΡΡΡ Π·Π°Ρ
Π²Π°ΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ div ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΡΠ°ΡΡΡ Π·Π°Ρ
Π²Π°ΡΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ div Π·Π°Ρ
Π²Π°ΡΠ΅Π½Π°, Π° ΡΠ°ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π°Ρ
Π²Π°ΡΠ° div ΠΏΡΡΡΠ°.
ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ ΠΊΠ°ΠΊ Π΅Π΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. @
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
html2canvas Π½Π΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ src Π² ΡΠΎΡΠΌΠ°Ρ base64. Π― ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π» ΠΆΡΡΠ½Π°Π». ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅
1283 ΠΌΡ html2canvas: Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ html2canvas.js:1487
3936 ΠΌΡ html2canvas: ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ CanvasRenderer Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 601 x 965 html2canvas.js:1487
3937 ΠΌΡ html2canvas: Π·Π°ΠΏΡΡΠΊ NodeParser html2canvas.js:1487
4014 ΠΌΡ html2canvas: Π²ΡΠ±ΡΠ°Π½ΠΎ ΡΠ·Π»ΠΎΠ², Π²ΡΠ΅Π³ΠΎ: 10 html2canvas.js:1487
4015 ΠΌΡ html2canvas: Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠΏΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ html2canvas.js:1487
4034 ΠΌΡ html2canvas: Π½Π°ΡΠ°Π»ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ html2canvas.js:1487
4044 ΠΌΡ html2canvas: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β 1 data:image/jpeg;base64 ,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA0JCgsKCA0LCgsODg0PEyAVExISEyccHhcgLikxMC4pL html2canvas.js:1487
4047 ΠΌΡ html2canvas: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β 2 data:image/jpeg;base64 ,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDasLDBkSEw8UHRofHh0aH html2canvas.js:1487
4051 ΠΌΡ html2canvas: Π·Π°Π²Π΅ΡΡΠ΅Π½ ΠΏΠΎΠΈΡΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ html2canvas.js:1487
4052 ΠΌΡ html2canvas: ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β1
ImageContainer {src: " data:image/jpeg;base64 ,/9j/4AAQSkZJRgABAQAAAQABAADβ¦AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/2Q==", ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅: img, ΠΈΡΠΏΠΎΡΡΠ΅Π½ΠΎ: null, ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅: h}
html2canvas.js: 1487
4056 ΠΌΡ html2canvas: ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ #2
ImageContainer {src: " data:image/jpeg;base64 ,/9j/4AAQSkZJRgABAQAAAQABAADβ¦4PXOaUMB0/GlrcdiYtkcc/WkzjqfwqMPxzxRvAz3oSCx//9k=", image: img, tainted: null, promise: h}
html2canvas.js: 1487
4059 ΠΌΡ html2canvas: ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· html2canvas.js:1487
4060 ΠΌΡ html2canvas: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ html2canvas.js:1487
4064 ΠΌΡ html2canvas: ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² ΡΡΠ΅ΠΊΠ° html2canvas.js:1487
4066 ΠΌΡ html2canvas: ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΠΎΠ·Π΄Π°Π½Π° ΠΈΠ· 9 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² html2canvas.js:1487
4104 ΠΌΡ html2canvas: Π·Π°Π²Π΅ΡΡΠ΅Π½ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ html2canvas.js:1487
4109ms html2canvas: ΠΠ±ΡΠ΅Π·ΠΊΠ° Ρ
ΠΎΠ»ΡΡΠ° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ: ΡΠ»Π΅Π²Π°: 28 ΡΠ²Π΅ΡΡ
Ρ: 529 ΡΠΈΡΠΈΠ½Π°: 545 Π²ΡΡΠΎΡΠ°: 0 html2canvas.js:1487
4111 ΠΌΡ html2canvas: ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΡΡΠΎΠΆΠ°ΠΉ Ρ ΡΠΈΡΠΈΠ½ΠΎΠΉ 545 ΠΈ Π²ΡΡΠΎΡΠΎΠΉ 0 Ρ x 28 ΠΈ y 529
html2canvsas Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ base64 src, Π²ΡΠ·ΠΎΠ² Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ Β«onrenderedΒ»
ΡΡΠ½ΠΊΡΠΈΡ. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅
1283 ΠΌΡ html2canvas: Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ html2canvas.js:1487
3936 ΠΌΡ html2canvas: ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ CanvasRenderer Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 601 x 965 html2canvas.js:1487
3937 ΠΌΡ html2canvas: Π·Π°ΠΏΡΡΠΊ NodeParser html2canvas.js:1487
4014 ΠΌΡ html2canvas: Π²ΡΠ±ΡΠ°Π½ΠΎ ΡΠ·Π»ΠΎΠ², Π²ΡΠ΅Π³ΠΎ: 10 html2canvas.js:1487
4015 ΠΌΡ html2canvas: Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠΏΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ html2canvas.js:1487
4034 ΠΌΡ html2canvas: Π½Π°ΡΠ°Π»ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ html2canvas.js:1487
4044 ΠΌΡ html2canvas: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β 1 data:image/jpeg;base64 ,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA0JCgsKCA0LCgsODg0PEyAVExISEyccHhcgLikxMC4pL html2canvas.js:1487
4047 ΠΌΡ html2canvas: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β 2 data:image/jpeg;base64 ,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDasLDBkSEw8UHRofHh0aH html2canvas.js:1487
4051 ΠΌΡ html2canvas: Π·Π°Π²Π΅ΡΡΠ΅Π½ ΠΏΠΎΠΈΡΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ html2canvas.js:1487
4052 ΠΌΡ html2canvas: ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β1
ImageContainer {src: " data:image/jpeg;base64 ,/9j/4AAQSkZJRgABAQAAAQABAADβ¦AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/2Q==", ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅: img, ΠΈΡΠΏΠΎΡΡΠ΅Π½ΠΎ: null, ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅: h}
html2canvas.js: 1487
4056 ΠΌΡ html2canvas: ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ #2
ImageContainer {src: " data:image/jpeg;base64 ,/9j/4AAQSkZJRgABAQAAAQABAADβ¦4PXOaUMB0/GlrcdiYtkcc/WkzjqfwqMPxzxRvAz3oSCx//9k=", image: img, tainted: null, promise: h}
html2canvas.js: 1487
4059 ΠΌΡ html2canvas: ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· html2canvas.js:1487
4060 ΠΌΡ html2canvas: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ html2canvas.js:1487
4064 ΠΌΡ html2canvas: ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² ΡΡΠ΅ΠΊΠ° html2canvas.js:1487
4066 ΠΌΡ html2canvas: ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΠΎΠ·Π΄Π°Π½Π° ΠΈΠ· 9 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² html2canvas.js:1487
4104 ΠΌΡ html2canvas: Π·Π°Π²Π΅ΡΡΠ΅Π½ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ html2canvas.js:1487
4109ms html2canvas: ΠΠ±ΡΠ΅Π·ΠΊΠ° Ρ
ΠΎΠ»ΡΡΠ° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ: ΡΠ»Π΅Π²Π°: 28 ΡΠ²Π΅ΡΡ
Ρ: 529 ΡΠΈΡΠΈΠ½Π°: 545 Π²ΡΡΠΎΡΠ°: 0 html2canvas.js:1487
4111 ΠΌΡ html2canvas: ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΡΡΠΎΠΆΠ°ΠΉ Ρ ΡΠΈΡΠΈΠ½ΠΎΠΉ 545 ΠΈ Π²ΡΡΠΎΡΠΎΠΉ 0 Ρ x 28 ΠΈ y 529
@SebasAlvarez - ΠΎΠΏΡΠΈΡ allowTaint Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ Π²Π°Ρ?
@SebasAlvarez , @sandeepnagra :
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠΊΡΠΈΠ½ΡΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅, Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΡΡΠ°Π» ΠΎΡ Β«a llowTaint: true Β», ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠΊΠ½Π°, Π½ΠΎ Π½Π΅ Π² Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅.
ΡΡΠΎ ΠΌΠΎΠΉ ΠΊΠΎΠ΄:
ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° () {
html2canvas(document.body, {allowTaint: true,
ΠΏΡΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅: ΡΡΠ½ΠΊΡΠΈΡ (Ρ
ΠΎΠ»ΡΡ) {
document.body.appendChild (Ρ
ΠΎΠ»ΡΡ);
window.open(Ρ
ΠΎΠ»ΡΡ.toDataURL());
}
});
}
ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ??
@venkateshduddu - Π²Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠΎΠΊΡΡ Π½Π° Π½ΠΎΠ²ΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π°?
@sandeepnagra - Π±Π΅Π· ΡΠ°Π½Π΄ΠΈΠΏ, Ρ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΊΠ»ΠΈΠΊΠ°. Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΏΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅.
@venkateshduddu - ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΠ΅Π»ΡΠΊΠ° Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡ ΡΠΎΠΊΡΡ Π½Π° Π½ΠΎΠ²ΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ. Π’Π°ΠΊ ΡΡΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π°, Ρ Π½Π° 100% ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ ΡΠ΅ΡΠΈΡ Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΡΠΈ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ, ΡΡΠΎΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π΄ΠΈΡΠΊ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½? ΠΡΠ»ΠΈ Π΄Π°, ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΠ΅ Π»ΠΈ Π²Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π΄ΠΈΡΠΊ? Π‘ΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΎΠ΅ Π΄Π΅Π»ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΡ Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ S3.
ΠΏΡΠΈΠ²Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΡΠ°ΡΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ iframe Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ IP-ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ, ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΡΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΡΡ?
ΠΡΠ»ΠΈ Π±Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» allowTaint, ΡΠΎ ΠΎΠΏΡΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π»Π°. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° ΠΏΠΎΠΌΠΎΠ³ΠΈ
ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°....
ΠΈ ΠΌΠΎΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄ΡΡ ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°
Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«useCORSΒ» Π² Β«trueΒ»
ΠΊΠΎΠ΄Ρ Π½ΠΈΠΆΠ΅:
html2canvas(
document.querySelector(".preview_area"),
{
logging: true,
letterRendering: 1,
// allowTaint: false
useCORS: true
}
).then(canvas => {
})
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ @Sotyyoyo , ΠΌΠΎΡ ΠΎΡΠΈΠ±ΠΊΠ° Π±ΡΠ»Π° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π° ββββΡ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π°. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
@Sotyyoyo ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ, Π±ΡΠ°ΡΠ°Π½, Ρ ΡΠ°Π½ΠΈ ΡΠ΅Π±Ρ Π±ΠΎΠ³ <3
@Sotyyoyo ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ° Π΄Π»Ρ ΠΌΠ΅Π½Ρ :)
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ, Π΅ΡΡΡ Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅?
html2canvas(document.getElementById("html-2-pdfwrapper"), {
ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ: ΠΏΡΠ°Π²Π΄Π°,
ΠΏΠΈΡΡΠΌΠΎΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ: 1,
ΡΠ°Π·ΡΠ΅ΡΠΈΡΡTaint: Π»ΠΎΠΆΡ,
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡCORS: ΠΏΡΠ°Π²Π΄Π°,
ΠΏΡΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅: ΡΡΠ½ΠΊΡΠΈΡ (Ρ
ΠΎΠ»ΡΡ) {
var img = canvas.toDataURL('image/png');
var doc = Π½ΠΎΠ²ΡΠΉ jsPDF();
doc.addImage(img, 'JPEG', 20, 20);
doc.save('test2.pdf');
}
});
ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°....
ΠΈ ΠΌΠΎΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄ΡΡ ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«useCORSΒ» Π² Β«trueΒ»
ΠΊΠΎΠ΄Ρ Π½ΠΈΠΆΠ΅:
html2canvas( document.querySelector(".preview_area"), { logging: true, letterRendering: 1, // allowTaint: false useCORS: true } ).then(canvas => { })
ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ! Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°....
ΠΈ ΠΌΠΎΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄ΡΡ ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«useCORSΒ» Π² Β«trueΒ»
ΠΊΠΎΠ΄Ρ Π½ΠΈΠΆΠ΅:
html2canvas( document.querySelector(".preview_area"), { logging: true, letterRendering: 1, // allowTaint: false useCORS: true } ).then(canvas => { })
ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ /
html2canvas(document.querySelector("#id-of-element"),{ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ: true, letterRendering: 1, allowTaint: false, useCORS: true}).then(canvas => {
var imgData = canvas.toDataURL('image/jpeg');
});
ΠΡΡΠ°Π²ΡΡΠ΅ ΠΎΠΏΡΠΈΡ allowTaint , ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅.
html2canvas(document.getElementById('invoice-panel'), { letterRendering: 1, allowTaint : true, onrendered : function (canvas) { } });
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ. ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
ΠΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Ρ ΠΎΠ»ΡΡ
Π― Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½ΠΈΠΆΠ΅ ΠΌΠΎΠΉ ΠΊΠΎΠ΄.
var element = document.querySelector("#map-image-id");
html2canvas (ΡΠ»Π΅ΠΌΠ΅Π½Ρ, {
ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ: ΠΏΡΠ°Π²Π΄Π°,
ΠΏΠΈΡΡΠΌΠΎΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ: 1,
ΡΠ°Π·ΡΠ΅ΡΠΈΡΡTaint: Π»ΠΎΠΆΡ,
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡCORS: ΠΏΡΠ°Π²Π΄Π°
}).then(canvasElm => {
var imageType = "ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/png";
var imageData = canvasElm.toDataURL(imageType);
var src = encodeURI (Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ);
console.log("ΠΈΡΡΠΎΡΠ½ΠΈΠΊ", ΠΈΡΡΠΎΡΠ½ΠΈΠΊ);
console.log("Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ", imageData);
Π― Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½ΠΈΠΆΠ΅ ΠΌΠΎΠΉ ΠΊΠΎΠ΄.
var element = document.querySelector("#map-image-id");
html2canvas (ΡΠ»Π΅ΠΌΠ΅Π½Ρ, {
ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ: ΠΏΡΠ°Π²Π΄Π°,
ΠΏΠΈΡΡΠΌΠΎΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ: 1,
ΡΠ°Π·ΡΠ΅ΡΠΈΡΡTaint: Π»ΠΎΠΆΡ,
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡCORS: ΠΏΡΠ°Π²Π΄Π°
}).then(canvasElm => {
var imageType = "ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/png";
var imageData = canvasElm.toDataURL(imageType);
var src = encodeURI (Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ);
console.log("ΠΈΡΡΠΎΡΠ½ΠΈΠΊ", ΠΈΡΡΠΎΡΠ½ΠΈΠΊ);
console.log("Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ", imageData);
ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠ΅Π±Ρ. ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΡΠΎ?
Π― Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½ΠΈΠΆΠ΅ ΠΌΠΎΠΉ ΠΊΠΎΠ΄.
var element = document.querySelector("#map-image-id");
html2canvas (ΡΠ»Π΅ΠΌΠ΅Π½Ρ, {
ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ: ΠΏΡΠ°Π²Π΄Π°,
ΠΏΠΈΡΡΠΌΠΎΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ: 1,
ΡΠ°Π·ΡΠ΅ΡΠΈΡΡTaint: Π»ΠΎΠΆΡ,
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡCORS: ΠΏΡΠ°Π²Π΄Π°
}).then(canvasElm => {
var imageType = "ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/png";
var imageData = canvasElm.toDataURL(imageType);
var src = encodeURI (Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ);
console.log("ΠΈΡΡΠΎΡΠ½ΠΈΠΊ", ΠΈΡΡΠΎΡΠ½ΠΈΠΊ);
console.log("Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ", imageData);
ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅
Π― Π²ΠΈΠΆΡ ΡΡ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π§ΡΠΎ Ρ Π΄Π΅Π»Π°Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ?
html2canvas(document.getElementById(<id>), {
logging: true,
letterRendering: 1,
allowTaint: false,
useCORS: true
}).then(result => {
var img = result.toDataURL("image/png");
savePng(img);
});
ΠΠΈΠΆΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ <img src-"..." />
:
html2canvas(report, {letterRendering: 1, allowTaint: true, useCORS: true})
.then((canvas) => {
const imgData = canvas.toDataURL('image/png');
// const pdf = new jsPDF();
// pdf.addImage(imgData, 'PNG', 10, 10);
//pdf.save("foo.pdf");
});
ΠΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ· Aws.s3(). ΠΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ.
html2canvas(content, {letterRendering: 1,allowTaint: false,useCORS:true})
.ΡΠΎΠ³Π΄Π° (Ρ
ΠΎΠ»ΡΡ => {
const imgData = canvas.toDataURL('image/png');
console.log(ΠΈΠΌΠ³Π΄Π°Π½Π½ΡΠ΅);
const pdf = Π½ΠΎΠ²ΡΠΉ jsPDF();
pdf.addImage(imgData, 'PNG', 10, 10, canvas.width, canvas.height);
pdf.save('ΡΠΊΠ°ΡΠ°ΡΡ.pdf');
});
ΠΡΡ ΠΎΠ΄Π½ΠΎΠΉ Ρ ΠΎΠ»ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΡΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π£ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ?
ΠΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ· Aws.s3(). ΠΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ.
html2canvas(content, {letterRendering: 1,allowTaint: false,useCORS:true})
.ΡΠΎΠ³Π΄Π° (Ρ ΠΎΠ»ΡΡ => {
const imgData = canvas.toDataURL('image/png');
console.log(ΠΈΠΌΠ³Π΄Π°Π½Π½ΡΠ΅);
const pdf = Π½ΠΎΠ²ΡΠΉ jsPDF();
pdf.addImage(imgData, 'PNG', 10, 10, canvas.width, canvas.height);
pdf.save('ΡΠΊΠ°ΡΠ°ΡΡ.pdf');
});ΠΡΡ ΠΎΠ΄Π½ΠΎΠΉ Ρ ΠΎΠ»ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΡΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π£ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ?
ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ. ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΠΊΠΎΡΠ·ΠΈΠ½Ρ S3
ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°....
ΠΈ ΠΌΠΎΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄ΡΡ ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«useCORSΒ» Π² Β«trueΒ»
ΠΊΠΎΠ΄Ρ Π½ΠΈΠΆΠ΅:
html2canvas( document.querySelector(".preview_area"), { logging: true, letterRendering: 1, // allowTaint: false useCORS: true } ).then(canvas => { })
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
Π£ ΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ β€β€
ΠΠΎΡΡΡΠΏ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Β« https://image/logo Β» ΠΈΠ· ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Β« http://localhost :3000Β» Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ CORS: Π² Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠΌ ΡΠ΅ΡΡΡΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Β«Access-Control-Allow-OriginΒ».
Π―Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΉ Π»ΠΎΠ³ΠΎΡΠΈΠΏ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ PDF?
ΠΡΡΠ°Π΅ΡΡΡ Π²Π΅ΡΡ ΡΠ΅ΠΊΡΡ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΠΌ css ΠΈ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠΎΠΌ Π±ΡΠ΅Π½Π΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΌΠΎΠ΅ΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΡΠ²Π΅ΡΡΡΠ΅, Π½ΡΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡΡ Π² ΡΡΠΎΠΌ. Π― ΠΏΡΡΠ°ΡΡΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ 2 Π½Π΅Π΄Π΅Π»Ρ.
ΠΠ»Ρ Π²ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΡΡΠ΄Π°, ΠΏΠΎΡΠ»Π΅ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΠΎΠΏΡΡΠΎΠΊ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² (ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΊΠΎΡΠ·ΠΈΠ½Π° S3) Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΊ useCORS = true Π΄Π»Ρ html2canvas, ΡΠ°ΠΊ ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ CORS Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈΠ· S3.
Π― ΡΠ΅ΡΠΈΠ» ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ° html2canvas. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π·Π΄Π΅ΡΡ:
https://github.com/zeusstl/html2canvas-proxy-nodejs
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΡΠ°Π²ΡΡΠ΅ ΠΎΠΏΡΠΈΡ allowTaint , ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅.
html2canvas(document.getElementById('invoice-panel'), { letterRendering: 1, allowTaint : true, onrendered : function (canvas) { } });