์๋ ํ์ธ์,
๋ด HTML ์ฝ๋์๋ ์ผ๋ถ UNICODE ์ฝํ
์ธ ๊ฐ ์์ต๋๋ค. HTML์์ Canvas๋ก ๋ณํํ๋ ค๊ณ ํ๋ฉด ์ ํฌ ๋ฌธ์๊ฐ ์์ฑ๋ฉ๋๋ค. ํ๋ฐ ์ ๋ ์ฝ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
๋ด HTML ์ฝํ
์ธ ์ ์คํฌ๋ฆฐ ์ท์ ์ฐพ์ต๋๋ค.
์ด๋ค ํด๊ฒฐ์ฑ
์ ์ฃผ์๊ฒ ์ต๋๊น? ์ด๊ฒ ๊ธํ ์ผ์ด ํ์ํฉ๋๋ค.
์ต๋ํ ๋นจ๋ฆฌ ์๋ตํ์ญ์์ค.
๊ฐ์ฌํฉ๋๋ค.
๋ผ ๋ฉ์ฌ
@ 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>
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์ฌ์ฉ CSS
'word-wrap:
normal; ',<div
style = "word-wrap : normal;"> ๊ทํ์ ํ ์คํธhere</div>