ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΡΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅Π»Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 30 000 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. ΠΡ Π±Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΠΈΡΡ Π·Π°Ρ Π²Π°ΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 100 x 100. ΠΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΡΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Π½Π° Π²ΡΡΠΎΠΊΠΎΠΌ ΡΠ΅Π»Π΅.
ΠΠΎΡ ΡΠΊΡΠΈΠΏΠΊΠ°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠ°Ρ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
https://jsfiddle.net/fvo1xh8b/2/
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅Π»Π° ΠΌΠ΅Π½ΡΡΠ΅ 30 000 ΠΈ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠ°ΠΊ ΠΈ Ρ Π²Π°Ρ. ΠΡ Π½Π°ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅?
ΡΠΌΠΌ, Ρ ΠΌΠ΅Π½Ρ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Ρ ΠΏΠΎΠ½ΡΠ»!
Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΡ ΠΌΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ iframe Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅Π»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
<html>
<head>
#canvas_handler {
position:absolute;
left: -10000px;
}
</head>
<body>
<iframe id="canvas_handler" />
</body>
</html>
ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΊΡΡΡΡ Π½Π° Ρ ΠΎΠ»ΡΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΡΡΠΎΡ iframe, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ html2canvas, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ
const copy_ele = origin_ele.cloneNode(true);
canvas_handler.appendChild(copy_ele);
canvas_handler.style.height = origin_ele.scrollHeight;
canvas_handler.style.width = origin_ele.scrollWidth;
html2canvas(copy_ele, {
useCORS: true,
}).then((canvas) => {
// do your things
});
canvas_handler.removeChild(table_ele);
ΠΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ 1.0.0 ? ΠΡΠ»ΠΈ Π΄Π°, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ Π½Π° jsfiddle .
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΡΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π° Π½Π°Ρ Π·Π°ΠΏΡΠΎΡ ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π²ΡΠΎΡΠ° Π½Π΅ ΠΏΠΎΡΡΡΠΏΠΈΠ»ΠΎ ΠΎΡΠ²Π΅ΡΠ°. ΠΠΌΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ Π½Π°Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΠΌΠ΅Ρ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΈΠ»ΠΈ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ ΠΎΡΠ²Π΅ΡΡ, ΡΠ²ΡΠΆΠΈΡΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΏΡΠΈΠ²Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΡΠ°ΡΡΡ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ iframe Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ IP-ΠΊΠ°ΠΌΠ΅ΡΡ, ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΡΡ?
@niklasvh ΠΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Ρ ΠΎΠ»ΡΡΠ°. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ, ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ, Π±Π΅Π»ΠΎΠ΅ ΡΠ°Π·ΠΌΡΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ - ΡΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΡΡ Π²ΡΠ΅ ΡΠ΅Π»ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΈΡΠΈΠ½Ρ / Π²ΡΡΠΎΡΡ: html2canvas(el, {height: 3000, width: 3000})
.
@toadkicker, Π±ΡΠ°Ρ, ΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ / ββΡΠ°Π±ΠΎΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ Π°Ρ Π°Ρ Π°Ρ Π°Ρ Π°Ρ Π°Ρ Π°Ρ , Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ
@toadkicker Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
ΡΠΌΠΌ, Ρ ΠΌΠ΅Π½Ρ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Ρ ΠΏΠΎΠ½ΡΠ»!
Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΡ ΠΌΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ iframe Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅Π»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ<html> <head> #canvas_handler { position:absolute; left: -10000px; } </head> <body> <iframe id="canvas_handler" /> </body> </html>
ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΊΡΡΡΡ Π½Π° Ρ ΠΎΠ»ΡΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΡΡΠΎΡ iframe, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ html2canvas, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ
const copy_ele = origin_ele.cloneNode(true); canvas_handler.appendChild(copy_ele); canvas_handler.style.height = origin_ele.scrollHeight; canvas_handler.style.width = origin_ele.scrollWidth; html2canvas(copy_ele, { useCORS: true, }).then((canvas) => { // do your things }); canvas_handler.removeChild(table_ele);
Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄, Π½ΠΎ ΡΠΎΡΠ½ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎ-ΠΌΠΎΠ΅ΠΌΡ, Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π½ΠΈΠΆΠ΅:
const copy_ele = origin_ele.cloneNode(true);
canvas_handler.contentDocument.body.appendChild(copy_ele);
canvas_handler.height = origin_ele.scrollHeight;
canvas_handler.width = origin_ele.scrollWidth;
html2canvas(canvas_handler.contentDocument.body, {
useCORS: true,
}).then((canvas) => {
// do your things
canvas_handler.removeChild(copy_ele);
});
Π Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΡΠΈΠ»Ρ css ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅, Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»Ρ Π² iframe:
// add style
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'your_style_file_url.css';
canvas_handler.contentDocument.head.appendChild(link);
const copy_ele = origin_ele.cloneNode(true);
canvas_handler.contentDocument.body.appendChild(copy_ele);
canvas_handler.height = origin_ele.scrollHeight;
canvas_handler.width = origin_ele.scrollWidth;
html2canvas(canvas_handler.contentDocument.body, {
useCORS: true,
}).then((canvas) => {
// do your things
canvas_handler.removeChild(copy_ele);
});
ΠΠΏΡΡΡ ΠΆΠ΅, ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, ΠΈ ΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠΈΠΊΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΡΠΎΠΌΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°Ρ Π²Π°ΡΠ΅Π½Π½ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ Π΅Π³ΠΎ.
ΡΠΌΠΌ, Ρ ΠΌΠ΅Π½Ρ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Ρ ΠΏΠΎΠ½ΡΠ»!
Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΡ ΠΌΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ iframe Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅Π»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ<html> <head> #canvas_handler { position:absolute; left: -10000px; } </head> <body> <iframe id="canvas_handler" /> </body> </html>
ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΊΡΡΡΡ Π½Π° Ρ ΠΎΠ»ΡΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΡΡΠΎΡ iframe, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ html2canvas, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ
const copy_ele = origin_ele.cloneNode(true); canvas_handler.appendChild(copy_ele); canvas_handler.style.height = origin_ele.scrollHeight; canvas_handler.style.width = origin_ele.scrollWidth; html2canvas(copy_ele, { useCORS: true, }).then((canvas) => { // do your things }); canvas_handler.removeChild(table_ele);
Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄, Π½ΠΎ ΡΠΎΡΠ½ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎ-ΠΌΠΎΠ΅ΠΌΡ, Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π½ΠΈΠΆΠ΅:
const copy_ele = origin_ele.cloneNode(true); canvas_handler.contentDocument.body.appendChild(copy_ele); canvas_handler.height = origin_ele.scrollHeight; canvas_handler.width = origin_ele.scrollWidth; html2canvas(canvas_handler.contentDocument.body, { useCORS: true, }).then((canvas) => { // do your things canvas_handler.removeChild(copy_ele); });
Π Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΡΠΈΠ»Ρ css ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅, Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»Ρ Π² iframe:
// add style const link = document.createElement('link'); link.rel = 'stylesheet'; link.href = 'your_style_file_url.css'; canvas_handler.contentDocument.head.appendChild(link); const copy_ele = origin_ele.cloneNode(true); canvas_handler.contentDocument.body.appendChild(copy_ele); canvas_handler.height = origin_ele.scrollHeight; canvas_handler.width = origin_ele.scrollWidth; html2canvas(canvas_handler.contentDocument.body, { useCORS: true, }).then((canvas) => { // do your things canvas_handler.removeChild(copy_ele); });
Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ svg ΠΈΠ»ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΡΠΈΠ»Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Π΅ΠΉ. Π½ΠΎ Π΄Π°, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Π΅ΠΉ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° (Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ). Π£ ΠΌΠ΅Π½Ρ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π»ΠΎΡΡ Π±Π΅Π»ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ. ΠΡΠΎΡ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΌΠ΅Π½Ρ:
const el = document.getElementById('html-to-canvas-area')
const area = el.getBoundingClientRect()
html2canvas(el, {
scrollX: 0,
scrollY: 0,
width: area.width,
height: area.height
})
Π‘ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΠΌ! Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠΌΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅!
@invisor ΡΠΏΠ°ΡΠΈΡΠ΅Π»Ρ! ΠΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ.
ΠΡΠ° ΠΎΠΏΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Π΄Π΅Π».
{
scrollX: 0,
scrollY: -window.scrollY
}
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@niklasvh ΠΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Ρ ΠΎΠ»ΡΡΠ°. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ, ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ, Π±Π΅Π»ΠΎΠ΅ ΡΠ°Π·ΠΌΡΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ - ΡΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΡΡ Π²ΡΠ΅ ΡΠ΅Π»ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΈΡΠΈΠ½Ρ / Π²ΡΡΠΎΡΡ:
html2canvas(el, {height: 3000, width: 3000})
.