Html2canvas: html2canvas๋งŒ์„์œ„ํ•œ ์š”์†Œ ์Šคํƒ€์ผ๋ง?

์— ๋งŒ๋“  2015๋…„ 10์›” 19์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: niklasvh/html2canvas

๋ช‡ ๊ฐ€์ง€ ์š”์†Œ์— ํŽธ๋ฆฌํ•œ data-html2canvas-ignore ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ Firefox์—์„œ ์—ฌ๋ฐฑ์ด ์Œ์ˆ˜ ์ธ ์š”์†Œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. data-html2canvas-style="margin-left: 0" ์™€ ๊ฐ™์€ ํŠน์ • ์š”์†Œ์— ๋Œ€ํ•œ html2canvas ์ „์šฉ ์Šคํƒ€์ผ ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ด๋Ÿฐ ์ผ์„ํ•˜๋Š” ๋ฐ ํ–‰์šด์ด ์žˆ์—ˆ๋‚˜์š”?

Question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

onclone ์˜ต์…˜์œผ๋กœ ๋ Œ๋”๋ง ๋  ๋ฌธ์„œ (์›๋ณธ์˜ ๋ณต์ œ๋ณธ)์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

html2canvas(document.body, {onclone: function(document) {
  document.querySelector('.something').style.marginLeft = 0;
}}).then(...)

๋ชจ๋“  5 ๋Œ“๊ธ€

onclone ์˜ต์…˜์œผ๋กœ ๋ Œ๋”๋ง ๋  ๋ฌธ์„œ (์›๋ณธ์˜ ๋ณต์ œ๋ณธ)์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

html2canvas(document.body, {onclone: function(document) {
  document.querySelector('.something').style.marginLeft = 0;
}}).then(...)

๊ณ ๋งˆ์›Œ Nik! ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ž‘์—… ํ•ด ์ฃผ์…”์„œ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ์— ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ์•ˆํƒ€๊น๊ฒŒ๋„ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฌธ์„œ๋Š” ํ˜„์žฌ ๋งŽ์€ ์ธก๋ฉด์—์„œ ํฌ๊ฒŒ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค ...

๋‹ค์šด๋กœ๋“œ ํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์ ์ ˆํ•œ ์Šคํƒ€์ผ์„ ์–ป์ง€ ๋ชปํ•˜๋ฏ€๋กœ ๋ชจ๋“  ์Šคํƒ€์ผ์„ ์ธ๋ผ์ธ CSS๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด computed-style-to-inline-style ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์˜ ๋ฌธ์ œ๋Š” ๊ทธ๊ฒƒ์ด ์›๋ž˜ ๋”์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ onclone ํ•จ์ˆ˜ ๋‚ด์—์„œ ๋Œ€์‹  ๋ณต์ œ ๋œ ์š”์†Œ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ์ด๋ฏธ์ง€ ์Šคํƒ€์ผ์ด ์ ์ ˆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ์ง€ ์•„์‹ญ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋˜‘๊ฐ™์€ ์ผ์„ ์‹œ๋„ํ–ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋ชจ๋“  ์Šคํƒ€์ผ์ด ์ œ๋Œ€๋กœ ๋‹ค์šด๋กœ๋“œ ๋œ ๋ฐฉ๋ฒ•์ด์žˆ๋‹ค.

const computedStyleToInlineStyle = require("computed-style-to-inline-style");

 html2canvas(document.querySelector(".someclass"), {onclone: function(document) {
     computedStyleToInlineStyle(document.querySelector(".someclass"), {
          recursive: true
      });
    }}).then(canvas => {
        const imgData = canvas.toDataURL('image/png');
        ...
    });
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰