Html2canvas: ์ด๋ฏธ์ง€ ํƒœ๊ทธ๊ฐ€ ์บก์ฒ˜๋˜์ง€ ์•Š์Œ

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

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

html2canvas๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ html์„ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”๋ฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ html ์š”์†Œ ๋‚ด๋ถ€์˜ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋Š” ๋ณ€ํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์— ํ•œ ๊ฐ€์ง€ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


yellow
green
green
green
yellow
red
red
yellow
green

์ž‘๋™ํ•˜๋Š” HTML ์š”์†Œ

๋ชจํˆฌ์šฐ๋ฆฌNS์ •๋ง๋กœ์‚ฌ์ˆ˜
26
27
28
29
30
31
1
2 yellowgreengreengreenyellowredredyellowgreen ๋ฒจ ์Šค๋ƒ…

๋‹ค์Œ์€ html2canvas๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค.

var html2obj = html2canvas($('ํ…Œ์ด๋ธ”'));
var ๋Œ€๊ธฐ์—ด = html2obj.parse();
var ์บ”๋ฒ„์Šค = html2obj.render(๋Œ€๊ธฐ์—ด);
var img = ์บ”๋ฒ„์Šค.toDataURL();
$('#calendar_to_canvas').attr('src', img);

PFA ์Šคํฌ๋ฆฐ์ƒท
calendar

๊ฐ์‚ฌ ํ•ด์š”,
๋ฐœ๋ผ

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

์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค!! "background-size: 100% 100%;"๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. "background-size: cover;" ๋Œ€์‹ 

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

์ž์ฒด์ ์œผ๋กœ ๋น„๋™๊ธฐ์‹์ธ ์ด๋ฏธ์ง€์˜ ์‚ฌ์ „ ๋กœ๋“œ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ์ฝœ๋ฐฑ์œผ๋กœ ๋ž˜ํ•‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด์ „ ๋ฒ„์ „๋„ ์‚ฌ์šฉ ์ค‘์ผ ๊ฒƒ์ด๋ฏ€๋กœ https://github.com/niklasvh/html2canvas/downloads ์—์„œ ์ตœ์‹  ๋ฒ„์ „์„ ์–ป์€ ๋‹ค์Œ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

html2canvas( $('table'), {
   onrendered: function( canvas ) {
        var img = canvas.toDataURL();
        $('#calendar_to_canvas').attr('src', img);
   }
});

๋น ๋ฅธ ์‘๋‹ต์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ Œ๋”๋ง๋œ ์บ”๋ฒ„์Šค์— ์ด๋ฏธ์ง€ ํƒœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ˆ„๋ฝ ๋œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? html2canvas.js, jquery.plugin.html2canvas๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  jquery 1.7์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๋„์›€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๊ฐ€ ๋ Œ๋”๋ง ์ค‘์ธ ํŽ˜์ด์ง€ ์™€ ๋™์ผํ•œ ์ถœ์ฒ˜์—์„œ ํ˜ธ์ŠคํŒ…๋ฉ๋‹ˆ๊นŒ?

logging: true ์„ค์ •ํ•˜๊ณ  ์ฝ˜์†”์ด ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ๋งํ•˜๋Š” ๋‚ด์šฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๊นŒ?

์ด๋ฏธ์ง€๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ๋กœ๋“œ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

html2canvas: ์‚ฌ์ „ ๋กœ๋“œ ์‹œ์ž‘: ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ์ฐพ๊ธฐ html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 1 / 1 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 2 / 2 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 3 / 3 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 4 / 4 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 5 / 5 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 6 / 6 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 7 / 7 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‚ฌ์ „ ๋กœ๋“œ: ์ด๋ฏธ์ง€ ์ฐพ๊ธฐ html2canvas.js:27
html2canvas: ๋ฏธ๋ฆฌ ๋กœ๋“œ: ์™„๋ฃŒ. html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 8 / 18 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 9 / 18 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 10 / 18 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 11 / 18 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 12 / 18 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 13 / 18 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 14 / 18 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 15 / 18 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 16 / 18 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 17 / 18 (์‹คํŒจ: 0) html2canvas.js:27
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 18 / 18 (์‹คํŒจ: 0) html2canvas.js:27
์ด๋ฏธ์ง€ ๋กœ๋“œ ์™„๋ฃŒ: # 18 (์‹คํŒจ: 0) html2canvas.js:27

์บ”๋ฒ„์Šค๊ฐ€ ์›๋ณธ ๊ฐ„ ๋ฐ์ดํ„ฐ๋กœ ์˜ค์—ผ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์บ”๋ฒ„์Šค์—์„œ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

html2canvas: ๋ Œ๋”๋Ÿฌ: ์บ”๋ฒ„์Šค ๋ Œ๋”๋Ÿฌ ์™„๋ฃŒ - ์บ”๋ฒ„์Šค obj ๋ฐ˜ํ™˜

์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๊ณผ ์ด๋ฏธ์ง€๋Š” ์ด์ „ ์ฃผ์„์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋™์ผํ•œ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” niklasvh, ๊ทธ๊ฒƒ์€ ๋™์ผํ•œ ์›๋ž˜ ์ •์ฑ… ๋ฌธ์ œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— file://์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ๋กœ ์‹คํ–‰๋˜์—ˆ๋˜ ์›น ์„œ๋ฒ„์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋„๋ฉ”์ธ ๊ฐ„ ๋ฌธ์ œ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์ธ๋„ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค :)

Niklashvh ์ €๋Š” file://์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ๋กœ ์‹คํ–‰๋˜๋Š” Android ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•ฑ์— ๋Œ€ํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ ์•„๋ฌด๋ฐ๋„ ๋‚ด๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด ์–ธ์ œ๋“ ์ง€ allowTaint: true ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋‚ด๋ณด๋‚ด๊ณ  ์ด๋ฉ”์ผ๋กœ pdf๋กœ ์ „์†ก ์ค‘์ž…๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

html2canvas: ์‚ฌ์ „ ๋กœ๋“œ ์‹œ์ž‘: html2canvas.js ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ์ฐพ๊ธฐ: 21
html2canvas: ์‚ฌ์ „ ๋กœ๋“œ: ์ด๋ฏธ์ง€ ์ฐพ๊ธฐ html2canvas.js: 21
html2canvas: ๋ฏธ๋ฆฌ ๋กœ๋“œ: ์™„๋ฃŒ. html2canvas.js 21
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 1/2 (์‹คํŒจ: 0) html2canvas.js: 21
html2canvas: ์‹œ์ž‘: ์ด๋ฏธ์ง€: 2/2 (์‹คํŒจ: 0) html2canvas.js: 21
์ด๋ฏธ์ง€ ๋กœ๋“œ ์™„๋ฃŒ: # 2 (์‹คํŒจ: 0) html2canvas.js: 21
html2canvas: ๋ Œ๋”๋Ÿฌ: ์บ”๋ฒ„์Šค ๋ Œ๋”๋Ÿฌ ์™„๋ฃŒ - obj ์บ”๋ฒ„์Šค ๋ฐ˜ํ™˜

์ด๋ฏธ์ง€๋Š” ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์— ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ div๋ฅผ ๋กœ๋“œํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ˆ˜๊ฐ์ž๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ๊ต์ฐจ๊ฐ€ ๋™์ผํ•œ ๋„๋ฉ”์ธ์— ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์•„์ด๋””์–ด๋ผ๋„?

"background-size: cover;"๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์Šคํƒ€์ผ์— ์ด๋ฏธ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...

๋ถ„๋ช…ํžˆ ์ด๊ฒƒ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค

์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค!! "background-size: 100% 100%;"๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. "background-size: cover;" ๋Œ€์‹ 

img์™€ ํ•จ๊ป˜ ์˜จ๋ผ์ธ URL์„ ์‚ฌ์šฉํ•  ๋•Œ HTML@Canvas ๊ฐ€ ์บก์ฒ˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
๊ฐ์‚ฌ ํ•ด์š”

@Elgamal10 ํ”„๋ก์‹œ ์‚ฌ์šฉ

https://github.com/brcontainer/html2canvas-php-proxy(php๊ฐ€ ์žˆ๋Š” html2canvas ํ”„๋ก์‹œ)
https://github.com/brcontainer/html2canvas-asp-vbscript-proxy(asp-classic์ด ์žˆ๋Š” html2canvas ํ”„๋ก์‹œ - vb)
https://github.com/brcontainer/html2canvas-csharp-proxy(asp.net์ด ์žˆ๋Š” html2canvas ํ”„๋ก์‹œ - csharp)

์ฐธ๊ณ : README.md ํŒŒ์ผ ์ฝ๊ธฐ

๋‹ต์žฅ์„ ๋ณด๋‚ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ™”๋ฉด ์ดฌ์˜์€ ์ž˜ ๋˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

html2canvas_5๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค
html2canvas_0์ด ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค
html2canvas_5๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
html2canvas_4๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
html2canvas_1์ด ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค
html2canvas_5๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@Elgamal10 ํ”„๋กœ์ ํŠธ์—์„œ ์ด์Šˆ ์ƒ์„ฑ
https://github.com/brcontainer/html2canvas-csharp-proxy/issues?state=open

๋‚˜๋Š” ๋‹น์‹ ์ด C#(ASP.NET)์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” ๋‹ˆํด๋ผ์Šค ,

๋‚˜๋Š” ๋‹น์‹ ์˜ API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ง‰ํ˜”์Šต๋‹ˆ๋‹ค. ๋„์™€์ฃผ์„ธ์š”.

์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ html์„ ์บ”๋ฒ„์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
jQuery('html').html2canvas({
ํ”„๋ก์‹œ:" http://localhost/myproject/proxy.jsp ",
userCORS:์ฐธ ,
๋ Œ๋”๋ง: ํ•จ์ˆ˜(์บ”๋ฒ„์Šค) {
๊ฒฝ๊ณ (์บ”๋ฒ„์Šค);
var url = ์บ”๋ฒ„์Šค.toDataURL("์ด๋ฏธ์ง€/png");
window.open(url, '_blank');
},
});

์ด์ œ ~/tomcat/myproject/images/ ๊ฒฝ๋กœ์— ๋ชจ๋“  ๊ต์ฐจ ์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๋Š” proxy.jsp๋ผ๋Š” ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค."

๊ทธ ํ›„ ๋‚˜๋Š” ์ฝ˜์†”์—์„œ ์ด๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค.
๋ฆฌ์†Œ์Šค๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋กœ ํ•ด์„๋˜์ง€๋งŒ MIME ์œ ํ˜• image/jpeg๋กœ ์ „์†ก๋จ: " http://localhost/myproject/proxy.jsp?url=http%3A%2F%2Fi.ebayi โ€ฆQYEAAMXQVERSuVtL%2F%24_1.JPG%3Fset_id%3D8800004005&callback= html2canvas_64". html2canvas.js:2264

์ด ๋ชจ๋“  ํ›„์— ๋‚ด ์ฝœ๋ฐฑ ๊ธฐ๋Šฅ์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ์บ”๋ฒ„์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค..

๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋„์™€์ฃผ์‹œ๊ฒ ์–ด์š”?

๋งŽ์€ ๊ฐ์‚ฌ

@himakshi89 proxy: ์™€ userCORS: ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ ์‚ฌ์šฉ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ : ์‹œ์ฒด๋ฅผ ์บก์ฒ˜ํ•˜์‹ญ์‹œ์˜ค.

์ฝ”๋“œ์— ์‰ผํ‘œ๊ฐ€ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

},//this is wrong.

});

html2canvas์˜ ๋ฒ„์ „์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด ์‹œ๋„:

jQuery('body').html2canvas({
    "onrendered": function(canvas) {
    }
});

์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด https://github.com/niklasvh/html2canvas/releases/download/0.4.1/html2canvas.js ์—์„œ html2canvas๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ

html2canvas($("body").get(0), {
    "logging": true,
    "proxy": "http://localhost/myproject/proxy.jsp",
    "onrendered": function(canvas) {
        alert(canvas);
        var url = canvas.toDataURL("image/png");
        window.open(url, "_blank");
    }
});

@brcontainer
์•ˆ๋…•ํ•˜์„ธ์š”

๋‚ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ–ˆ์œผ๋ฉฐ ์ด์ œ proxy.jsp์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‘๋‹ต์„ ๋ณด๋‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
({"html2canvas_67":http://localhost/myproject/0.1651487380333363.jpg"})

์ด์ œ ์ฝ˜์†”์— ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜์•ผ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋ฐ”๊ฟ”์•ผ ํ•  ๊ณณ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋„์™€์ฃผ์„ธ์š”

๊ทธ๋Ÿฌ๋‚˜ ์ฝ˜์†”์€ ์•„๋ฌด๊ฒƒ๋„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—
๋‘ ๋ฒˆ์งธ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๊นŒ? ์ฝ˜์†”์— ๋กœ๊ทธ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ์˜จ๋ผ์ธ์œผ๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

์ œ์•ˆํ•œ๋Œ€๋กœ useCORS๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  html์„ ๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

jQuery('๋ฐ”๋””').html2canvas({
ํ”„๋ก์‹œ:" http://nisquare.dyndns.org :8087/facebook/proxy.jsp",
๋กœ๊น…:true ,
๋ Œ๋”๋ง: ํ•จ์ˆ˜(์บ”๋ฒ„์Šค) {
var url = ์บ”๋ฒ„์Šค.toDataURL("์ด๋ฏธ์ง€/png");
window.open(url, '_blank');
}
});

๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์ด ๋‚ด ์ฝ˜์†”์ž„์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
html2canvas: ๋กœ๋“œ ์˜ค๋ฅ˜ : http://cmsip.tradus.ibcdn.com/MOBMKXE29ULYUMKH_4902586_320x360.jpg html2canvas.js:21

๋‚ด๊ฐ€ ์–ป๋Š” ๊ฒƒ์˜ ์Šคํฌ๋ฆฐ ์ƒท์„ ์ฒจ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
download

https://github.com/niklasvh/html2canvas/releases/download/0.4.1/html2canvas.js ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ์ฝ”๋“œ:

html2canvas($("body").get(0), {
    "logging": true,
    "proxy": "http://localhost/myproject/proxy.jsp",
    "onrendered": function(canvas) {
        alert(canvas);
        var url = canvas.toDataURL("image/png");
        window.open(url, "_blank");
    }
});

์•„๋‹ˆ๋ฉด?

์ฐธ๊ณ : http://nisquare.dyndns.org:8087/facebook/proxy.jsp ๊ฐ€ ๊นจ์กŒ์Šต๋‹ˆ๋‹ค!

๋‚˜๋Š” ์ตœ์‹  ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ–ˆ๋‹ค

๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ๋Œ€์ฒด

html2canvas($("๋ฐ”๋””").get(0), {
ํ”„๋ก์‹œ:" http://nisquare.dyndns.org :8087/facebook/proxy.jsp",
๋กœ๊น…:true ,
๋ Œ๋”๋ง: ํ•จ์ˆ˜(์บ”๋ฒ„์Šค) {
var url = ์บ”๋ฒ„์Šค.toDataURL("์ด๋ฏธ์ง€/png");
window.open(url, '_blank');
}
});

๋งํฌ ํ…Œ์ŠคํŠธ๋ฅผ ๋ณด๋‚ด์ฃผ์„ธ์š”

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

JSP๋ฅผ ์‚ฌ์šฉํ•œ "ํฌ๋กฌ ํ™•์žฅ"?

jsp๋Š” ํ”„๋ก์‹œ ๋ถ€๋ถ„์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋” ๋ฐ”๋žŒ์งํ•œ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Chrome ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค๋ฅธ "ํ”„๋กœํ† ์ฝœ" ๋ฐ "ํ”„๋ ˆ์ž„"์—์„œ ์‹คํ–‰๋˜๋ฉฐ, proxy.jsp๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํฌ๋กฌ ํ™•์žฅ์—๋Š” ํ”„๋ก์‹œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

html2canvas($("body").get(0), {
    "logging": true,
    "onrendered": function(canvas) {
        alert(canvas);
        var url = canvas.toDataURL("image/png");
        window.open(url, "_blank");
    }
});

์ฝ๊ธฐ: http://developer.chrome.com/extensions/tut_debugging.html

@brcontainer
์•„์ด๋””์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ํฌ๋กฌ ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งค์šฐ ์‰ฝ๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ธฐ๋Šฅ chrome capturevisibletab์ด ์žˆ์Šต๋‹ˆ๋‹ค :)

@jgab-net ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฒ€์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

@ Sumit8 (Y) ์ฒœ๋งŒ์—์š”

@gitbala ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? @niklasvh ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (์ด๊ฒŒ ๊ท€์ฐฎ๋‹ค๋ฉด ๋ฒ„๊ทธ ๋ถ„๋ฅ˜๋กœ ๊ทธ๋งŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.. :)

@usmonster ๋Š” ๊ณ„์†ํ•ด์„œ ๋ชจ๋“  ๋ฏธํ•ด๊ฒฐ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๋Š” ๋ฐ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

๋„ค ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค :)

2014๋…„ 9์›” 1์ผ ์›”์š”์ผ ์˜ค์ „ 4์‹œ 11๋ถ„์— usmonster [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@gitbala https://github.com/gitbala ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? @niklasvh
https://github.com/niklasvh ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (๋‚˜๋Š” ๊ทธ๋งŒํ•˜๊ฒ ๋‹ค.
๋ฒ„๊ทธ ๋ถ„๋ฅ˜๋Š” ์ด๊ฒŒ ์งœ์ฆ๋‚˜๋„ค์š”.. :)

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/niklasvh/html2canvas/issues/145#issuecomment -54047596
.

html2canvas๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ์ด๋ฏธ์ง€๊ฐ€ pdf๋กœ ๋ Œ๋”๋ง๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@niklasvh pls help - html์˜ ๋กœ๊ณ  ์ด๋ฏธ์ง€๊ฐ€ pdf๋กœ ๋ Œ๋”๋ง๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ธ๋ผ์ธ image.how to use "proxy": " http://localhost/myproject/proxy.jsp "๋ฅผ ๋ณ€ํ™˜ํ•  ๋•Œ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” vue๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด jsp๋ฅผ ์–ด๋””์— ๋„ฃ์„์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. @niklasvh ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋•๋‹ค?

@qiuyaofan ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์†”๋ฃจ์…˜์„ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ? angular2์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. @gitbala ์†”๋ฃจ์…˜์„ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ?

+1 BTW ๋กœ๊ทธ๋Š” ์ข‹์•„ ๋ณด์ด์ง€๋งŒ( html2canvas: Images loaded, starting parsing ) ์—ฌ์ „ํžˆ pdf์— ์ด๋ฏธ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์ค‘

allowTaint: ์‚ฌ์‹ค,
useCORS: ์‚ฌ์‹ค,
taintTest: ๊ฑฐ์ง“,

@NikhilRadadiya @qiuyaofan ์—ฌ๋Ÿฌ๋ถ„, ๋˜ํ•œ ์ •๋‹นํ•œ ํด๋ผ์ด์–ธํŠธ ์ธก ์†”๋ฃจ์…˜์„ ์ฐพ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. vue js๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  giphy์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ ์ €์—๊ฒŒ ์ž˜ ๋งž๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

html2canvas(element, {
        "logging": true, //Enable log (use Web Console for get Errors and Warings)
        useCORS: true,
        taintTest: false,
        onrendered: function(canvas) {
          var img = new Image();
          img.onload = function() {
            document.body.appendChild(img);
          };
          img.error = function() {
            if(window.console.log) {
              window.console.log("Not loaded image from canvas.toDataURL");
            } else {
              alert("Not loaded image from canvas.toDataURL");
            }
          };
          img.src = canvas.toDataURL("image/png");
        }
      });

๋”ฐ๋ผ์„œ ํ”„๋ก์‹œ๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@creepteed ์บ”๋ฒ„์Šค๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ pdf๋กœ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๋‹ค๋ฅธ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด html์—๋Š” ์ด๋ฏธ์ง€๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฒŒ์‹œํ•œ ์œ„์˜ ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @niklasvh ๋‹˜ ,
htmltocanvas๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€๋ฅผ ์บก์ฒ˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ์›น ํŽ˜์ด์ง€๋ฅผ ์บก์ฒ˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด๋ฏธ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋„์™€์ฃผ์„ธ์š”?
๋‚ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
function capture(div_id=null) { jQuery(".screenshot_row_target").html2canvas({ logging: true, //taintTest : true, //proxy: "https://skeleton-21.myshopify.com", onrendered: function (canvas) { jQuery('#screenshot_img_val').val(canvas.toDataURL("image/png")); //document.getElementById("screenshot_html_form").submit(); } }); }

์ฝ˜์†”์—์„œ ๋‚˜๋Š” ์ด๊ฒƒ์„ ์–ป๋Š”๋‹ค.
html2canvas: Preload starts: finding background-images html2canvas.js:19 html2canvas: Preload: Finding images html2canvas.js:19 html2canvas: Preload: Done. html2canvas.js:19 html2canvas: start: images: 0 / 0 (failed: 0) html2canvas.js:19 Finished loading images: # 0 (failed: 0) html2canvas.js:19 html2canvas: Error loading <img>://cdn.shopify.com/s/files/1/2186/4293/files/user2_300x300.png?v=1503661428 html2canvas.js:19 html2canvas: Error loading background: html2canvas.js:19 html2canvas: Error loading <img>://cdn.shopify.com/s/assets/no-image-2048-5e88c1b20e087fb7bbe9a3771824e743c244f437e4f8ba93bbf7b11b53f7824c_300x300.gif html2canvas.js:19 html2canvas: Renderer: Canvas renderer done - returning canvas obj
๊ฐ์‚ฌ ํ•ด์š”.

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