<p>html2canvas Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ изобраТСния, располоТСнныС Π² элСмСнтС</p>

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 9 нояб. 2015  Β·  36ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: niklasvh/html2canvas

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Ссли Π±Ρ‹ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» тСкст ΠΈ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°, Ρ‚ΠΎ я Π±Ρ‹ Π½Π°ΠΆΠ°Π» Β«Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒΒ», ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·Π°Π» Π±Ρ‹ тСкст ΠΈ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°, Π½ΠΎ Ссли я добавлю ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² div, ΠΎΠ½ Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ всС ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ .

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ allowTaint , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС изобраТСния Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅.

html2canvas(document.getElementById('invoice-panel'), { letterRendering: 1, allowTaint : true, onrendered : function (canvas) { } });

ВсС 36 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠŸΡ€ΠΈΠ²Π΅Ρ‚.
Π£ мСня Ρ‚ΠΎΡ‡Π½ΠΎ такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π’Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь.
Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ снимок Ρ‚Π²ΠΈΡ‚Π°, Π½ΠΎ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚.
Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ прилагаСтся.

stream-item-tweet-670397195221241856 2

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ изобраТСния с Π΄Ρ€ΡƒΠ³ΠΈΡ… сайтов Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Β«Π·Π°Π³Ρ€ΡΠ·Π½ΡΡŽΡ‚ холст 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

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ