html2canvas ์ ์ต์
์ด์ ๋ฒ์ ์ ์ง์๋์ง ์์ผ๋ฉฐ๋ณด๊ณ ๋ ๋ฌธ์ ๋ ์ข
๊ฒฐ๋ฉ๋๋ค.
<img src="... .svg">
ํ๋ฉด svg๊ฐ ํฌ๊ฒ ๋ ์๊ฐ๋๋ค. ์ด๊ฒ์ "๋ฐ์ ํ"svg ์ด๋ฏธ์ง (์ค์ ์ด๋ฏธ์ง ์ธ์ฝ๋ฉ์ ๋์ด๋ ๋๋น๊ฐ ์ค์ ๋์ง ์์ ์ด๋ฏธ์ง)์์๋ง ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. ์ด๋ฏธ์ง์ contentBox๋ ์ฌ๋ฐ๋ฅธ ํฌ๊ธฐ๋ก ๋ ๋๋ง๋์ง๋ง ์บ๋ฒ์ค์ ๊ทธ๋ฆด ๋ ์ด๋ฏธ์ง๋ ๋ทฐํฌํธ ๋์ด๋ฅผ ์ฑํํฉ๋๋ค.
์ฌ๊ธฐ ๋ฐ์ด์ฌ๋ฆฐ์ด ์์ต๋๋ค : http://jsfiddle.net/1b4mLnfj/2/
๋๋ ์ด๊ฒ์ ๋ถ๋ช ํํ๊ธฐ๋ฅผ ํฌ๋งํ๋ Fiddle์ ์ฒจ๋ถํ๋ค : http://jsfiddle.net/1b4mLnfj/2/
๊ฐ์ฌํฉ๋๋ค. ์กฐ์ฌํ๊ฒ ์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํ๋์ ์ดํด ๋ดค๋๋ฐ ์ปจํ ์ด๋ ๊ฒฝ๊ณ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ณ์ฐ๋๋ ๊ฒ ๊ฐ์ง๋ง ๋ฒกํฐ ์ด๋ฏธ์ง ์์ฒด๊ฐ ๋ทฐํฌํธ์ ํฌ๊ธฐ๋ฅผ ์ฑํํ๊ณ ์์ต๋๋ค. ๊ฒฝ๊ณ์ ๊ณก์ ๊ฒฝ๊ณ๊ฐ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์์ ์ด๋์์ ๋ณ๊ฒฝํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๊ตฌ๋ ์ง ์ ์ ์ด์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๊น?
์์ธํ ์กฐ์ฌํ ๊ฒฐ๊ณผ, ์ด๊ฒ์ "๋ฐ์ ํ"์ธ svg ์ด๋ฏธ์ง์์๋ง ๋ฐ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. Illustrator์์ svg๋ฅผ ์ด๊ณ ๋ฐ์ ํ ์ต์ ์ ์ ํํ์ง ์๊ณ ์ ์ฅํ๋ฉด ํฌ๊ธฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์กฐ์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก svg๊ฐ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ๋์ด์ ๋๋น๊ฐ ์ธ์ฝ๋ฉ ๋ ๊ฒฝ์ฐ (Illustrator์์ "๋ฐ์ ํ"์ด๋ผ๊ณ ํจ) ๋ทฐํฌํธ์ ํฌ๊ธฐ๋ฅผ ์ฑํํฉ๋๋ค.
๋ฐ๋ผ์ ํ ๊ฐ์ง ์ ์ฌ์ ์ธ ํด๊ฒฐ์ฑ
์ svg-inject
(https://github.com/iconfu/svg-inject)์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ <img>
์ ์ค์ <svg>
๋ก ๋ฐ๊พธ๋ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ์์ <img>
๋์ด์ ๋๋น๋ฅผ ์ ์ฉํ๋ฉด ์ฝ์
๋ ๋ <svg>
์ฑํ๋์ด ์บ๋ฒ์ค์์ ํฌ๊ธฐ ์กฐ์ ์ ๋ฐฉ์งํฉ๋๋ค.
์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ๋จ์ ์ด ์์ต๋๋ค (์ : ์ธ์ฝ๋ฉ ๋ base64 src๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋์ผํ ๊ตฌ์กฐ ๋ฐ ์ธ๋ผ์ธ ํด๋์ค ์คํ์ผ์ ๊ฐ์ง ์ฌ๋ฌ svg๊ฐ์๋ ๊ฒฝ์ฐ). ๋๋ ์ด๊ฒ์ ๋ฉฐ์น ๋์ ๊พธ์คํ ์์
ํด ์์ผ๋ฉฐ ์ด๊ฒ์ด ์ง๊ธ๊น์ง ๋ด๊ฐ ๊ฐ์ง ์ต๊ณ ์ ์๋ฃจ์
์
๋๋ค. SVG์ ์ธ์ฝ๋ฉ ๋ ๋์ด / ๋๋น ๊ฐ์ด์๋ ๊ฒฝ์ฐ ์บ๋ฒ์ค์์ svg ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ง ๋ชปํ๊ฒํ๋ ์ค์ html2canvas
์ฝ๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๊ทธ๋์ ๋๋ ์ด๊ฒ์ ์๊ฑด์ ๋์ง๊ณ ์์ง๋ง SVG๊ฐ ์บ๋ฒ์ค์ ๋ ๋๋ง / ๊ทธ๋ ค์ง๋ ๋ฐฉ๋ฒ๊ณผ ๊ด๋ จ๋ ์๋ฃจ์
์ ๋๋ฌํ์ต๋๋ค. ํนํ renderNodeContent
์์ ์ด๋ฏธ์ง๊ฐ svg์ด๊ณ ์ธ์ฝ๋ฉ ๋ ๋์ด / ๋๋น (๋ฐ์ ํ)๊ฐ ๋๋ฝ ๋ ์ด๋ฏธ์ง์ธ์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์์๋ผ ์ ์๋ค๋ฉด ๋ทฐํฌํธ ( width = viewport.width, height = (image.height * viewport.width) / image.width)) ์ด๋ก ์ ์ผ๋ก ์ด๊ฒ์ ์๋ ํ ์ ์์ต๋๋ค. svg ์ด๋ฏธ์ง์ ํด๋น ๋์ด ๋ฐ ๋๋น ๊ฐ์ด ์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๋๋ ๋ฌธ์ ์ ๋ํ ์์ ์ ์ค๋จํ์ง๋ง ์์ ์๊ฒฌ์ด ๋์์ด ๋ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์๋
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๋ค.
๋ด ์ด๋ฏธ์ง ํ๊ทธ์ style='transition: transform 0.6s;'
์คํ์ผ์ด ์์ต๋๋ค. ์ด๊ฒ์ด ์์ผ๋ฉด ์ด๋ฏธ์ง๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋ฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ์ฌํฉ๋๋ค. ์กฐ์ฌํ๊ฒ ์ต๋๋ค.