Html2canvas: ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ์„ ๋•Œ ํ…์ŠคํŠธ ์˜์—ญ์— ์‚ฌ์šฉ์ž ์ค„ ๋ฐ”๊ฟˆ์ด ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2012๋…„ 03์›” 26์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: niklasvh/html2canvas

์•ˆ๋…•ํ•˜์„ธ์š” -

๋ฆฌํ„ด์ด ์žˆ๋Š” ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์Šคํฌ๋ฆฐ์ƒท์— ๋ฆฌํ„ด์ด ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค[๋‹จ์ง€ ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด์ด ์žˆ๋Š” ๋ฌธ์ž์—ด์—์„œ ์ถ•์†Œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค]. ๋‚˜๋Š” ๋ช‡ ๋‹ฌ ์ „์— ์ด ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ๋˜์—ˆ๋‚˜์š” ์•„๋‹ˆ๋ฉด ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ธ๊ฐ€์š”?

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

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” html2canvas๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— textarea๋ฅผ div๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์„๊นŒ์š”? ๊ทธ ํ›„์— div๋ฅผ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.

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

๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. input ๋˜๋Š” textarea ๋” ์ •ํ™•ํ•˜๊ฒŒ ํ…์ŠคํŠธ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ํŒจ์น˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. Range ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์œ„์น˜๋ฅผ ์ฐพ์•„์•ผ ํ•˜๊ฑฐ๋‚˜(๋” ์ •ํ™•ํ•œ ์†”๋ฃจ์…˜) ์ƒˆ ์ค„์„ ์‹ค์ œ ์ƒˆ ์ค„๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒŒ์œผ๋ฅธ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” https://github.com/niklasvh/html2canvas/blob/master/src/Parse.js#L717์—์„œ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์œผ๋ฅธ ์†”๋ฃจ์…˜์—๋Š” ์–ด๋–ค ๊ฒƒ์ด ์ˆ˜๋ฐ˜๋ฉ๋‹ˆ๊นŒ? ์ฝ”๋“œ ์ˆ˜์ •์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ด๊ฒƒ์ด ์–ด๋ฆฌ์„์€ ์งˆ๋ฌธ์ด๋ผ๋ฉด ์šฉ์„œํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ๋์ค„ ๋ฌธ์ž /n/r์„ createTextNode()์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ์ค„ ๋ฐ”๊ฟˆ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ฐจ์ด๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๊ฐ ๋ผ์ธ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹์ธก์ •ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ๋ Œ๋”๋งํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. http://stackoverflow.com/questions/22317823/html2canvas-remove-multiple-spaces-and-line-break
<div contenteditable="true"></div> ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ textarea ๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” angular๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ng-model ๋ฌธ์ œ๋ฅผ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

UPD
`div'์—์„œ ng-model ์‚ฌ์šฉ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. http://mehrantm.blogspot.com/2013/10/how-make-two-way-binding-to-your.html
๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค~

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” html2canvas๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— textarea๋ฅผ div๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์„๊นŒ์š”? ๊ทธ ํ›„์— div๋ฅผ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.

์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

        $('textarea').each(function() {
            if(!$(this).hasClass('d-none')){
                $(this).replaceWith("<div contenteditable=\"true\">"+$(this).html()+"</div>")
            }
        });

html2canvas๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ํ•จ์ˆ˜๋ฅผ ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. :)

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰