์๋ ,
C#์์ pdfmake ๋ํผ๋ฅผ ๋ง๋ค๊ณ ์์ง๋ง ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์คํํ๋ ค๊ณ ํ ๋ ๊ฐ์ฒด ์ฐธ์กฐ๊ฐ ๊ฐ์ฒด๋ก ์ค์ ๋์ง ์์์ต๋๋ค. ์ถ์๋ ์คํฌ๋ฆฝํธ ๋ฒ์ ์ ์ฝ 1.04MB์
๋๋ค. ์คํฌ๋ฆฝํธ ํฌ๊ธฐ์ ์ ํ์ด ์๋์?
๋๋ฝ๋ ES6 ๊ธฐ๋ฅ๊ณผ Jint์ ๋ด๋ถ ๋ฒ๊ทธ์ ๋ชจ๋ ๋ถ๋ชํ์ ๊ฒ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ช ๋ฐฑํ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๊ฒ์ผ๋ก ์์ํ๊ณ ๊ทธ๊ฒ์ด ์ผ๋ง๋ ์งํ๋๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ค๋ฃจ์ง ์์ ์ฌ๋ก์ ๋ํ ๋ณด๋ฌผ ์ฐฝ๊ณ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ธ์, ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์นํฉ์ ์ฌ์ฉํ๋ es5 ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ผ๋ก ์ปดํ์ผ๋์ด์ผ ํฉ๋๋ค. ์ฝ๋๋ฅผ ์ฝ์๋๋ฐ ์์ค์์ ์ฝ์ ๋ด์ฉ์ es6 ๊ธฐ๋ฅ์ด ๋ณด์ด์ง ์์ต๋๋ค. es5 ๊ธฐ๋ฅ๋ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋์ jint์ ๋ฒ๊ทธ๊ฐ ๋์ ์์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ ์ด๋ฏธ C#์ ์๋ ์ด lib์ ๊ธฐ๋ฅ ์ค %90๊ณผ ๊ฐ์ด ๊ตฌํํ์ผ๋ฉฐ js interop์ด ํ์ํ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ช ๊ฐ์ง ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์คํํ๋ ค๊ณ ํ์ต๋๋ค. ์ด์จ๋ ๋๋ ๊ทธ๊ฒ์ด ํด๊ฒฐ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ๊ฒ์ ๋๋ค. ๊ทธ ๋์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ์ฌ js interop ํ์์ ๋ํ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ํํ ๊ฒ์ ๋๋ค.
์ถ์ . ์งํธ๊ฐ ๊ต์ฅํด!
๋ฌธ์ ๋ฅผ ๊ฐ๋ตํ ์ดํด๋ณด๋ฉด ๋ง์ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ๊ณ ์น ์ ์์์ ์ ์ ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ ๋ํ Uint8Array
๋ฐ Uint16Array
์ ์ฐพ์ผ๋ ค๊ณ ์๋ํ์ง๋ง ์กด์ฌํ์ง ์์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ผ๋ถ ๋ธ๋ผ์ฐ์ ๋๋ฝ ์ข ์์ฑ์ ์์ฒด์ ์ผ๋ก ๊ตฌํํ๊ณ ๋ ๋ฆฝ ์คํํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค. ์ต์ ๋ฒ์ ์์ ๋ค๋ฅธ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์คํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ์๋ ๋์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ์์ผ๋ฉฐ ์์ง ์ด๋ค ๋ฌธ์ ๋ ๋ฐ๊ฒฌํ์ง ๋ชปํ์ต๋๋ค.
Uint8Array์๋ ์ปจํ ์คํธ์ ๊ตฌํ์ด ์๋์ง ํ์ธํ๊ธฐ ์ํด try ๋ฐ catch๋ฅผ ์ฌ์ฉํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. Uint16Array์ ๊ฒฝ์ฐ ์ด ๊ธฐ๋ฅ์ด ์ด๋ฏธ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋ฐฉ๊ธ ๋ฒ์ 3.0.0-beta-1353์ผ๋ก ์
๋ฐ์ดํธํ๋๋ฐ ๋ค๋ฅธ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด์ ์ ๋
๋ฌธ์ ์ ๋ํด ์์
ํ๊ณ ๋๋ถ๋ถ์ ์์
์ ์ํํ ์ ์์์ง๋ง ์คํฌ๋ฆฝํธ์๋ ์ค์ ๋ก Uint16Array
๊ฐ ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ํ๋ ๋ฐฐ์ด์ ํ์ฌ ์์ง ๊ตฌํ๋์ง ์์์ต๋๋ค.
๋ณด๊ณ ์๋ ๋ฌธ์ ๋ฅผ ์์ ํ๋ NuGet์ ๋ํ ์ ๋ฆด๋ฆฌ์ค๊ฐ ๊ณง ์ถ์๋ ๊ฒ์ ๋๋ค. NuGet.config๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์์ฃผ ์ ๋ฐ์ดํธ๋๋ ๊ฐ๋ฐ ํผ๋๋ฅผ ์กฐ์ ํ ์๋ ์์ต๋๋ค.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
<add key="Jint" value="https://www.myget.org/F/jint/api/v3/index.json" />
</packageSources>
<disabledPackageSources />
</configuration>
์ด ๋ถ๊ธฐ์์ ํ์ฌ ์ํ๋ฅผ ๋ณผ ์ ์์ต๋๋ค: https://github.com/lahma/jint/tree/fix-issues-with-pdfmake
์ ๋ฐ์ดํธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด ๋ฌธ์ ๊ฐ ์์ /๊ตฌํ๋ ๋๊น์ง ๊ณ์ ๊ธฐ๋ํ๊ฒ ์ต๋๋ค. ์ด์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์๋ ค์ฃผ์ธ์! ๊ฐ์ฌ ํด์.
๋ชจ๋ ์ ๋ฐ์ดํธ?
@lahma ์ข์ ์์์ด ์์ต๋๊น?
์ฃ์กํฉ๋๋ค. ๋ค๋ฅธ ์ผ๋ก ๋ฐ๋นด์ต๋๋ค. ์ ํ์ด ์ง์ ๋ ๋ฐฐ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ ธ๋ ฅ์ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
๋๊ตฐ๊ฐ์ ์ํด ์ฝ๋์ ๋ํ ๊ฐ๋ตํ ์ค๋ช ์ ๋ฃ๊ณ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํด์ผ ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ทธ๋ฌํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
@lahma ์๋ก์ด ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์ฌ์ ํ ์์ ์ธ๊ธํ ๊ฒ๋ค์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ArrayBuffer ๊ธฐ๋ฅ์ ์ํ PR์ ์๋ํด ๋ณผ ์ ์์ต๋๊น? DataView, ArrayBuffer ๋ฑ์ ๋ํด shim์ ์ค์ ํ๋ ค๊ณ ์๋ํ ์ ์์ง๋ง ํ์ํ ๋ถ๋ถ์ ํจ๊ป ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ด ํ๋ก์ ํธ์ ์ฐธ์ฌํ ์ฌ๊ฐ ์๊ฐ์ด ์์ต๋๋ค! ์ฌํ๊ฒ๋ ํ์ฌ 8๊ฐ์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ atm์์ ์ ์ง ๊ด๋ฆฌํ๊ณ ์์ง๋ง ์ด ํ๋ก์ ํธ์ ๋งค์ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ์์ง ๋ถ์กฑํ ๊ฒ์ด ๋ฌด์์ธ์ง ์๊ณ ์ถ์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด ํ๋ก์ ํธ๋ฅผ ๊ณ์ ์ง์ผ๋ณผ ๊ฒ์ ๋๋ค. ์์์ด ์์ผ๋ฉด ๊ณ์ ์๋ ค์ฃผ์ธ์. ์ธ์ ๋ ์ง ์ ๋ฅผ ์ธ๊ธํ์ญ์์ค.
์ข ๋ ์ธ๋ถํ๋ ๋ฌธ์ ๊ฐ ์ดํด๊ฐ ๋ ๊ฒ ๊ฐ์์ ์ด ๊ธ์ ๋ซ์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ง์ ๊ฒ์ด ์์ผ๋ฉฐ ๋ค์ํ ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํ PR์ด ๋ ํฉ๋ฆฌ์ ์ผ ๊ฒ์ ๋๋ค.
๋ง์ ์๊ฐ์ด ์ง๋ ํ์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
@arivera12 ์๊ฐ๋์๋ฉด. MyGet ํผ๋ ์์ ์ต์ ๋ฉ์ธ์ ์๋ํ๊ณ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋์ง ํ์ธํ์ญ์์ค. ArrayBuffer, DataView ๋ฐ ํ์ํ๋ ๋ฐฐ์ด์ด ๊ตฌํ๋์์ต๋๋ค.
@lamhma ํ๊ฒ ์ต๋๋ค
์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค @lahma
๊ณผ๊ฑฐ ๊ฒ์๋ฌผ์ ๋ํด ์ ๊ฐ์ค๋ฝ๊ฒ๋, ๋ด๊ฐ ์ ๋ฐ์ดํธํ ์ํํ ๋ฒ์ 3.0.0-beta-2032๊ฐ ์์๊ณ ๋ค์ ์๋ํ์ง๋ง ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
MyGet ํผ๋๋ ์ด๋ป์ต๋๊น? ์์ง nuget.org์ ์์ต๋๋ค.
์ด๋ป๊ฒ ๊ฑฐ๊ธฐ์์ ์ป์ ์ ์์ต๋๊น? ๋ด get feed๋ฅผ ์๋ํ๊ฑฐ๋ ์ฌ์ฉํ ์ ์ด ์์ต๋๋ค...
์ด cmd๋ฅผ ๋น ๋ฅด๊ฒ Google์ ์๋ ค์ฃผ์ธ์.
์ข์, 3.0.0-beta-2083์ผ๋ก ์ ๋ฐ์ดํธํ๋๋ฐ ์ฌ์ ํ ๊ฐ์ ์ค๋ฅ๋ก ์คํจํฉ๋๋ค.
Uint16Array
์ด ์ด๋ฏธ ๊ตฌํ๋์์ต๋๊น?
@arivera12 ์ฃ์กํฉ๋๋ค. MyGet ๊ฒ์๊ฐ ์์ง ์ GitHub ์์ ๊ณผ ํจ๊ป ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ NuGet์์ ์ ๋ฆด๋ฆฌ์ค 3.0.0-beta-2033์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
3.0.0-beta-2032๋ฅผ ๊ฐ๋ฆฌํค๋ nuget์ ๋ฒ์ ์ ์๋ํ๊ณ myget 3.0.0-beta-2083์ ๋ฒ์ ๋ ์๋ํ์ง๋ง ์ฌ์ ํ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์๋ก ์ ๋ฐ์ดํธ๋ ํจํค์ง๊ฐ ์๋ ๊ฒฝ์ฐ ๋ค์ ์๋ํ๋๋ก ์๋ ค์ฃผ์ญ์์ค.
NuGet์ 3.0.0-beta-2033์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
@lahma ๋ด๊ฐ ์ค์นํ ์ ์๋ค๋ฉด ๊ทธ ๋ฒ์ ์ผ๋ก ๋ค์ ์๋ํ๊ฒ ํด์ค
@๋ผ๋ง! ๊ฑฐ์ ์คํ๋ฉ๋๋ค!
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ JavaScript ์์ฒด๊ฐ ์๋ ๋ธ๋ผ์ฐ์ ์ปจํ ์คํธ์ ์กด์ฌํ๋ ์์ฑ ๋ฐ/๋๋ ๊ฐ์ฒด์ธ ๋ด๋น๊ฒ์ดํฐ๋ฅผ ์ฌ์ฉํ ๋ค์ ์ฌ์ฉ์ ์์ด์ ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ปจํ ์คํธ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ ๋ถ๊ธฐ๋ฅผ ๋ง๋๋์ง ์๊ณ ์์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฌธ์ ์์ด ์ฆ์ ์๋ํด์ผ ํฉ๋๋ค.
์๋ง๋ ์ต์ ์ window, window.navigator ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ ๋ฑ์ ์๋ฎฌ๋ ์ดํธํ๋ ๊ฒ์ผ ์ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค! ์กฐ๊ธ ๋ ์๊ฐ์ด ๋๋ฉด ๊ณง ์ ๋ฐ์ดํธ ํ๊ฒ ์ต๋๋ค.
์ข์ต๋๋ค. ์๋ง๋ Jint ์ธก์์ ์ฐจ๋จ ํด์ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ์ฝ๋ ๊ฒฝ๋ก๊ฐ ์๋ํ๋๋ก ํ๊ธฐ ์ํด ํ์ํ ๊ฒ์ ์ฃผ์ ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.