Html2canvas: рдпреВрдирд┐рдХреЛрдб рдлрд╝реЙрдиреНрдЯ рд╕рдорд╕реНрдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдЬреВрди 2013  ┬╖  21рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: niklasvh/html2canvas

рдирдорд╕реНрддреЗ,

рдореЗрд░реЗ HTML рдХреЛрдб рдореЗрдВ рдХреБрдЫ UNICODE рд╕рд╛рдордЧреНрд░реА рдореМрдЬреВрдж рд╣реИред рдЕрдЧрд░ рдореИрдВ HTML рд╕реЗ рдХреИрдирд╡рд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЬрдВрдХ рдХреИрд░реЗрдХреНрдЯрд░ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рддрдорд┐рд▓ рдпреВрдирд┐рдХреЛрдб рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
screenshot-7

рдореЗрд░реА HTML рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╕реНрдХреНрд░реАрди рд╢реЙрдЯ рдЦреЛрдЬреЗрдВред
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЗрд╕рдХреА рддрддреНрдХрд╛рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдХрд┐рд╕реА рдХреЛ рднреА ASAP рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдВред

рдзрдиреНрдпрд╡рд╛рдж рдПрд╡рдВ рд╕рд╛рджрд░,
рд░рдореЗрд╢

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ css 'word-wrap: рд╕рд╛рдорд╛рдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ; '

рдЬреИрд╕реЗ ,<div рд╢реИрд▓реА = "рд╢рдмреНрдж-рд▓рдкреЗрдЯ: рд╕рд╛рдорд╛рдиреНрдп;"> рдЖрдкрдХрд╛ рдкрд╛рда here</div>

рд╕рднреА 21 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@ ramesh-git рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ _BUG html2canvas_ рд╕рдо рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ "fillText" рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди "html2canvas" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордпред рдХреБрдЫ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдПрдХ рдЕрдЬреАрдм рдбреНрд░рд╛рдЗрдВрдЧ (рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдХреНрд░) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдПрдХрдорд╛рддреНрд░ рддреНрд╡рд░рд┐рдд рд╕реБрдзрд╛рд░ рдЬрд┐рд╕реЗ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

html2canvas рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЙрдирдХреЗ рдЧреНрд░рдВрдереЛрдВ рдХрд╛ рдХреИрдирд╡рд╛рд╕ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдореВрд▓ рдкрд╛рдареЛрдВ рдкрд░ рдУрд╡рд░рд▓реИрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ( position: absolute; рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдореВрд▓ рдЧреНрд░рдВрдереЛрдВ рдХреЛ visibility: hidden; рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдкрд╛рда рдХреЛ рд╕реНрдкреИрди рдЯреИрдЧ рдФрд░ рдЗрди рдХреЗ рднреАрддрд░ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдкреИрди рдЯреИрдЧ рдЫрд┐рдкрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред), рдЬрдм рдЖрдк рдХреЙрд▓рдмреИрдХ 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(""); (рдпрд╣ рд╡рд┐рднрд╛рдЬрди рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ)

"рдпреВрдирд┐рдХреЛрдб рдкрд╛рда" рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд╕рдВрдкрддреНрддрд┐ text-align (css) рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: left , right , рдФрд░ 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 = (рд╡рд┐рдХрд▓реНрдкред

рд╕рд╛рде рдореЗрдВ:

textList = ((options.letterRendering || /^(leftpgright picsjustifyaauto)>/.test(textAlign) || noLetterSpacing (getCSS (el, "letterSpacing)"))))

(&&) рд╕рдВрдХреЗрдд рдкрд░ рд╕реВрдЪрдирд╛ рдЬреЛ (()) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рд╣реИ

@BENYAZ рдЖрдкрдХреЗ рдореБрджреНрджреЗ (# 289) рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ left|right|justify|auto рд╕реЗ left|right|center|justify|auto рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓реАрдирд░ рдлрд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХрд╛рдлреА рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@BENYAZ рдпрд╣ рдореЗрд░реЗ (рдкрд╢реНрддреЛ рдФрд░ рдЙрд░реНрджреВ) рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж

@BENYAZ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдлрд╝рд╛рд░рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

@BENYAZ рд╣рд╛рдБ, рдореИрдВ рднреА рдЕрд░рдмреА рдФрд░ рдлрд╝рд╛рд░рд╕реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдБред

рдпрд╣ рджрд╛рд░реА рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
var textList = (! this.options.letterRendering || noLetterSpacing (рдХрдВрдЯреЗрдирд░)) || ! hasUnicode (container.node.data)? getScript (рд╡рд░реНрдг): characters.map (рдлрд╝рдВрдХреНрд╢рди (рд╡рд░реНрдг))
рдореИрдВ рдмрджрд▓ рдЧрдпрд╛ && рд╕реЗ ||

@BENYAZ рдпрд╣ рдмрд╛рдВрдЧреНрд▓рд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж

firafiul рднрд╛рдИ, рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛? рдпрд╣ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рдирд╛ рд╣реИ? рдореИрдВрдиреЗ html2canvas.js рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд░реЗрдЦрд╛ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИ (рдЬрд┐рд╕реЗ рдирдИ рд▓рд╛рдЗрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред

HtIbnAhmed html2canvas.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐
рдкрд╛рдард╡рд╛рджреА =!

рд╕реЗ рдмрджрд▓реЛ:

textList = (options.letterRendering |||

** рдХреА рдЬрдЧрд╣ &&ред рдорд░реНрдЬреАред

@ рдЕрдлреАрдЙрд▓ , рднрд╛рдИ рдЖрдкрдиреЗ рдореЗрд░реА рдмрд╛рддреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрд╛ред рдЬрд┐рд╕ рдлрд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдореИрдВрдиреЗ 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

рдореЗрд░реЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ .... рдХреГрдкрдпрд╛ рдХреЛрдИ рдорджрдж?

рд╕реАрдПрд╕рдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛: рдкрддреНрд░-рд░рд┐рдХреНрддрд┐: 0;
рд╡рд┐рдХрд▓реНрдк = {рдкрддреНрд░ рднреЗрдЬрдирд╛: рд╕рддреНрдп}

рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:

var wordRendering = (!! this.options.letterRendering || noLetterSpacing (рдХрдВрдЯреЗрдирд░)) &&! hasUnicode (container.node.data)!

рдЗрд╕рдХреЗ рд╕рд╛рде:
var wordRendering = (!! this.options.letterRendering || noLetterSpacing (рдХрдВрдЯреЗрдирд░)) || ! HasUnicode (container.node.data);

рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ css 'word-wrap: рд╕рд╛рдорд╛рдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ; '

рдЬреИрд╕реЗ ,<div рд╢реИрд▓реА = "рд╢рдмреНрдж-рд▓рдкреЗрдЯ: рд╕рд╛рдорд╛рдиреНрдп;"> рдЖрдкрдХрд╛ рдкрд╛рда here</div>

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

rrutkows picture rrutkows  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

celik75 picture celik75  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Josh10101010 picture Josh10101010  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

arzyu picture arzyu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

diego-rey picture diego-rey  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ