Html2canvas: ์œ ๋‹ˆ ์ฝ”๋“œ ๊ธ€๊ผด ๋ฌธ์ œ

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

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

๋‚ด HTML ์ฝ”๋“œ์—๋Š” ์ผ๋ถ€ UNICODE ์ฝ˜ํ…์ธ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. HTML์—์„œ Canvas๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ ํ•˜๋ฉด ์ •ํฌ ๋ฌธ์ž๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํƒ€๋ฐ€ ์œ ๋‹ˆ ์ฝ”๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
screenshot-7

๋‚ด HTML ์ฝ˜ํ…์ธ ์˜ ์Šคํฌ๋ฆฐ ์ƒท์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
์–ด๋–ค ํ•ด๊ฒฐ์ฑ…์„ ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ด๊ฒŒ ๊ธ‰ํ•œ ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์‘๋‹ตํ•˜์‹ญ์‹œ์˜ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋ผ ๋ฉ”์‰ฌ

Bug Unicode

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

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ CSS 'word-wrap: normal; '

,<div style = "word-wrap : normal;"> ๊ท€ํ•˜์˜ ํ…์ŠคํŠธ here</div>

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

@ ramesh-git ์ •๋ง _BUG html2canvas_ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"fillText"๋กœ ํ…Œ์ŠคํŠธ๋ฅผํ–ˆ๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์ง€๋งŒ "html2canvas"๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜€์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฌธ์ž๊ฐ€ ์ด์ƒํ•œ ๊ทธ๋ฆผ (์ •ํ™•ํžˆ ์›)์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ง€์ •ํ•  ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๋น ๋ฅธ ์ˆ˜์ • :

html2canvas ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ํ…์ŠคํŠธ ์บ”๋ฒ„์Šค ๋ฅผ ๋งŒ๋“ค๊ณ  ์›๋ณธ ํ…์ŠคํŠธ์™€ ๊ฒน์น˜๋„๋ก ๋ฐฐ์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค ( position: absolute; ํ•˜๋ฉด ์›๋ณธ ํ…์ŠคํŠธ๋Š” visibility: hidden; ๋ฐ›์•„์•ผํ•ฉ๋‹ˆ๋‹ค.-ํ…์ŠคํŠธ๋ฅผ span ํƒœ๊ทธ ๋‚ด์— ๋„ฃ์–ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. span ํƒœ๊ทธ๋Š” ์ˆจ๊ฒจ์ ธ ์•ผํ•ฉ๋‹ˆ๋‹ค.), onreaded ์ฝœ๋ฐฑ์„ ์‹คํ–‰ํ•  ๋•Œ ์บ”๋ฒ„์Šค (ํ…์ŠคํŠธ)๋ฅผ ์ œ๊ฑฐ (๋˜๋Š” ์ˆจ ๊น๋‹ˆ๋‹ค).

์ฐธ๊ณ  : "ํด๋ผ์ด์–ธํŠธ ์ธก"์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์งˆ๋ฌธ์„ ํ•  ๋•Œ๋งˆ๋‹ค http://html2canvas.hertzen.com/ ๊ณผ ๊ฐ™์€ ์‚ฌ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜จ๋ผ์ธ ์˜ˆ์ œ๋ฅผ ์ถ”๊ฐ€

fillText ์˜ˆ :

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>
body{
  background:#ccc;
}
canvas{
  background:#fff;
}
</style>
<canvas id="e" width="600" height="200"></canvas>
<h1 id="a1">เฎคเฎฎเฎฟเฎดเฏ เฎŠเฎŸเฎ•เฎ™เฏเฎ•เฎณเฏ เฎ•เฏ‚เฎŸเฏเฎฎเฎฟเฎŸเฎฎเฏ-เฎชเฏ†เฎพเฎ™เฏเฎ•เฏเฎคเฎฎเฎฟเฎดเฏ-  World of Tamilconverters</h1>
<script>
    var canvas = document.getElementById("e");
    var a1 = document.getElementById("a1");

    var context = canvas.getContext("2d");
        context.fillStyle = "#000";
        context.font = "bold 16px Arial";
        context.fillText(a1.innerHTML, 10, 20);
</script>

๋ฒ„๊ทธ html2cavans ์˜ˆ :
http://jsfiddle.net/6KvLk/

์‹คํŒจ ์ด์œ ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
renderText(el, textNode, stack) ํ•จ์ˆ˜์—์„œ๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ 1186 :
: textNode.nodeValue.split(""); (์ด ๋ถ„ํ• ์€ ์ผ๋ฐ˜ ๋ฌธ์ž ์šฉ์ž…๋‹ˆ๋‹ค)

"์œ ๋‹ˆ ์ฝ”๋“œ ํ…์ŠคํŠธ"์˜ ๊ฒฝ์šฐ left , right ๋ฐ justify ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ text-align (css) ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. justify .

์ฐธ๊ณ  : letter-spacing ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์‹œํ—˜:

<h1 id="a1"><span style="text-align:justify;">เฎคเฎฎเฎฟเฎดเฏ เฎŠเฎŸเฎ•เฎ™เฏเฎ•เฎณเฏ เฎ•เฏ‚เฎŸเฏเฎฎเฎฟเฎŸเฎฎเฏ-เฎชเฏ†เฎพเฎ™เฏเฎ•เฏเฎคเฎฎเฎฟเฎดเฏ-  World of Tamilconverters</span></h1>
<script>
    var a1 = document.getElementById("a1");
    html2canvas(a1,{
        "onrendered":function(canvas){
            document.body.appendChild(canvas);
        }
    });
</script>

brcontainer ๋•๋ถ„์ž…๋‹ˆ๋‹ค.
๊ทธ์˜ / ๊ทธ๋…€์˜ ๊ฒŒ์‹œ๋ฌผ์„ ๋ณด์•˜์„ ๋•Œ, ๋‚˜๋Š” ์ฝ”๋“œ ์กฐ์ž‘์„ ์‹œ๋„ ํ•  ์ƒ๊ฐ์ด ์žˆ์—ˆ๊ณ  ๊ทธ๊ฒƒ์€ ๋ˆˆ์— ๋„์ง€ ์•Š๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋‹ต์€ ๋‹ค์Œ์„ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

textList = (! options.letterRendering && /^(left|right|justify|auto)$/.test(textAlign) && noLetterSpacing (getCSS (el, "letterSpacing")))

์™€:

textList = (! options.letterRendering || /^(left|right|justify|auto)$/.test(textAlign) || noLetterSpacing (getCSS (el, "letterSpacing")))

(||)๋กœ ๋Œ€์ฒด๋˜๋Š” (&&) ๊ธฐํ˜ธ์—์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค.

@BENYAZ ๋ฌธ์ œ (# 289)์— ๋Œ€ํ•ด left|right|justify|auto ์„ left|right|center|justify|auto ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๋” ๊นจ๋—ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹๊นŒ์š”? ์ผ๋ถ€ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ค‘๋‹จ๋˜๊ฑฐ๋‚˜ ๋ Œ๋”๋ง ์†๋„๊ฐ€ ํฌ๊ฒŒ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@BENYAZ ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (ํŒŒ์Šˆํ† ์–ด ๋ฐ ์šฐ๋ฅด๋‘์–ด). ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@BENYAZ ๋Š” ํŽ˜๋ฅด์‹œ์•„์–ด๋กœ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@BENYAZ ์˜ˆ , ์•„๋ž์–ด์™€ ํŽ˜๋ฅด์‹œ์•„์–ด๋กœ๋„ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Dari์—์„œ ์ž‘๋™
var textList = (! this.options.letterRendering || noLetterSpacing (container)) || ! hasUnicode (container.node.data)? getWords (๋ฌธ์ž) : characters.map (ํ•จ์ˆ˜ (๋ฌธ์ž)
&&๋ฅผ ||

@BENYAZ Bangla ์–ธ์–ด๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ

firafiul ํ˜•์ œ ๋‹˜,์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ ํ•˜์…จ๋‚˜์š”? ๋ผ์ธ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ html2canvas.js๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋Œ€์ฒด ํ•  ์ค„์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค (์ƒˆ ์ค„๋กœ ๋Œ€์ฒด ๋จ).

htIbnAhmed html2canvas.js ํŒŒ์ผ์—์„œ ๋‹ค์Œ ์ค„์„
textList = (options.letterRendering!

๋‹ค์Œ์œผ๋กœ ๊ต์ฒด :

textList = (! options.letterRendering |||

** ๋Œ€์‹ ์— &&. ์˜์ง€.

@rafiul , ํ˜•์ œ ๋‹˜์€ ๋‚ด ๋ง์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. html2canvas.js ํŒŒ์ผ์—์ด ์ค„์ด ์—†์Šต๋‹ˆ๋‹ค .))) "
html2canvas.js ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๊นŒ?

@IbnAhmed ์—ฌ๊ธฐ์—์„œ ๋‹ค์šด๋กœ๋“œ : http://3rwebtech.com/html2canvas.js

firafiul , ๋งŽ์€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ํ˜•์ œ :)

@rafiul pls๋Š” html2canvas.js ํŒŒ์ผ์„ ๊ณต์œ  ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ

@rafiul pls๋Š” html2canvas.js ํŒŒ์ผ์„ ๊ณต์œ  ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ด์ „ ๋งํฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ

@hiroksarker ์—ฌ๊ธฐ์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜์‹ญ์‹œ์˜ค, https://www.dropbox.com/s/20hk1qcbm0d7far/html2canvas.js?dl=0

๋‚˜์™€ ๊ฐ™์€ ๋ฌธ์ œ .... ์–ด๋–ค ๋„์›€์„์ฃผ์„ธ์š”?

css ์„ค์ • : ๋ฌธ์ž ๊ฐ„๊ฒฉ : 0;
options = {letterRendering : true}

์ƒˆ ๋ฒ„์ „์—์„œ๋Š” ๋‹ค์Œ ์ค„์„ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

var wordRendering = (! this.options.letterRendering || noLetterSpacing (container)) &&! hasUnicode (container.node.data);

์ด๊ฒƒ์œผ๋กœ :
var wordRendering = (! this.options.letterRendering || noLetterSpacing (container)) || ! hasUnicode (container.node.data);

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ CSS 'word-wrap: normal; '

,<div style = "word-wrap : normal;"> ๊ท€ํ•˜์˜ ํ…์ŠคํŠธ here</div>

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