์ฌ๊ธฐ์ PDF ํ์ผ์ ์ฒจ๋ถ(๊ถ์ฅ)ํ๊ฑฐ๋ ๋งํฌ:
ํ
์คํธ4.pdf
๊ตฌ์ฑ:
๋ฌธ์ ๋ฅผ ์ฌํํ๋ ๋จ๊ณ:
์์๋๋ ๋์์ ๋ฌด์์
๋๊น? (์คํฌ๋ฆฐ์ท ์ถ๊ฐ)
์ค๋ฅ๊ฐ ์์ต๋๋ค.
๋ฌด์์ด ์๋ชป๋์๋์? (์คํฌ๋ฆฐ์ท ์ถ๊ฐ)
์ถ๋ ฅ์ ํ ๊ฒฝ๋ก๊ฐ ๋ ๋ถ๋ถ์ผ๋ก ๋๋ฉ๋๋ค.
์ด๊ธฐ "M"์ ํ ๋
ธ๋์ ์๊ณ ๋ค์ "L"์ ๋ค์ ๋
ธ๋์ ์์ต๋๋ค.
์ด๋ค์ ๋์ผํ ๋
ธ๋์ ์์ด์ผ ํฉ๋๋ค.
๋ทฐ์ด์ ๋ํ ๋งํฌ(mozilla.github.io/pdf.js๊ฐ ์๋ ๋ค๋ฅธ ์ฌ์ดํธ ๋๋ Firefox/Chrome ํ์ฅ์ผ๋ก ํธ์คํ ๋๋ ๊ฒฝ์ฐ):
์ด๊ฒ์ ๋ฒ๊ทธ #9167๊ณผ ๊ด๋ จ์ด ์์ ์ ์์ต๋๋ค.
๋ฒ์ธ์ด ์ฌ๊ธฐ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
https://github.com/mozilla/pdf.js/blob/a045a00af34b764edda5991d2bcd18541ed60536/src/core/operator_list.js#L533 -L534
OperatorList
์ ์๋ ๋ฐฉ์์ ์ต์ํ์ง ์์ง๋ง ์ฐ์ฐ์ ๋ชฉ๋ก์ด ์ฝ 1000๊ฐ์ ์ฐ์ฐ์ ๋ฉ์ด๋ฆฌ๋ก ๋ถํ ๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. ๋๋๋ก ์ฒญํฌ ๊ฒฝ๊ณ๊ฐ PDF ๊ฒฝ๋ก ์ ์์ ์ค๊ฐ์ ๋ฐฐ์น๋ฉ๋๋ค. ์ด๊ฒ์ ๋ ๊ฐ์ OPS.constructPath
์ฐ์ฐ์๋ฅผ ์์ฑํ๊ณ ํ์๋ moveTo
์์ํ์ง ์์ต๋๋ค.
๊ทธ๋ด๋ฏํ๊ฒ ๋ค๋ฆฌ๋์?
OperatorList
๋ฐ ์์ CHUNK_SIZE
๋ฅผ ์์ ํ๋ ๋์ svg.js๋ฅผ ์์ ํด์ผ ํฉ๋๋ค. ์๋ง๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์
๋๋ค. ์ค๊ฐ ๊ฒฝ๋ก ํ์ธํ
์ฐ์ฐ์๊ฐ ์์ผ๋ฉด ์ฐ์ OPS.constructPath
์ฐ์ฐ์๋ฅผ ํ๋์ <svg:path>
๋
ธ๋๋ก ๊ฒฐํฉํด์ผ ํฉ๋๋ค...
OperatorList
์ ์๋ ๋ฐฉ์์ ์ต์ํ์ง ์์ง๋ง ์ฐ์ฐ์ ๋ชฉ๋ก์ด ์ฝ 1000๊ฐ์ ์ฐ์ฐ์ ๋ฉ์ด๋ฆฌ๋ก ๋ถํ ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
์ณ์; ์ด๋ ์ ์ฒด OperatorList
(์ฆ, ํ์ด์ง)๊ฐ ๊ตฌ๋ฌธ ๋ถ์๋๊ธฐ ์ ์ ๋ ๋๋ง์ ์์ํ ์ ์๋๋ก ํ์ฌ ํ์ด์ง ๋ก๋์์ ์์ ํ ๋ ๋๋ง๋๋ ๋ฐ ํ์ํ ์ ์ฒด ์๊ฐ์ ์ค์ด๊ธฐ ์ํ ๊ฒ์
๋๋ค.
๊ทธ๋ด๋ฏํ๊ฒ ๋ค๋ฆฌ๋์?
์, ํ์ธํ๊ธฐ ์ฌ์์ผ ํฉ๋๋ค(๊ฐ ์ ๋ง์ด ๋๋ฆฌ๋ฉด ์ด ์ฒญํฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋นํ์ฑํํ ์ ์์).
OperatorList
๋ฐ ์์CHUNK_SIZE
๋ฅผ ์์ ํ๋ ๋์ svg.js๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
๋์ํฉ๋๋ค. ์์๋ฅผ ์์ ํ๋ ๊ฒ์ ํ์คํ ํ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์ ์ด ์๋๋๋ค. ์ฐ์ , ์ค๋ฅ๋ฅผ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ ์ธ์๋ ์๋ฌด ๊ฒ๋ ํ์ง ์์ต๋๋ค. ๋ ๋ฒ์งธ๋ก, ํจ์ฌ ๋ ์ค์ํ ๊ฒ์ ์ด๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์บ๋ฒ์ค ๋ฐฑ์๋์ ์ผ๋ฐ์ ์ธ ๋ ๋๋ง ์ฑ๋ฅ์ ๊ด๋ฒ์ํ ์ํฅ์ ๋ฏธ์น ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์๋ง๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ๋๋ค. ์ค๊ฐ ๊ฒฝ๋ก ํ์ธํ ์ฐ์ฐ์๊ฐ ์์ผ๋ฉด ์ฐ์
OPS.constructPath
์ฐ์ฐ์๋ฅผ ํ๋์<svg:path>
๋ ธ๋๋ก ๊ฒฐํฉํด์ผ ํฉ๋๋ค...
๋ค์ ๋งํ์ง๋ง, ๊ทธ๊ฒ์ ์์ ํ ํฉ๋ฆฌ์ ์ผ๋ก ๋ค๋ฆฝ๋๋ค.
CHUNK_SIZE๋ฅผ 10000000์ผ๋ก ๋๋ฆฌ๋ฉด ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ง์ ํ์ธํ ์ ์์ต๋๋ค.
(๊ทธ๋ฆฌ๊ณ ๋๋ ์ด๊ฒ์ด ์ ์ ํ ํด๊ฒฐ์ฑ
์ด ์๋๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค)
๋น์ ์ ๋์์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ณ์; ์ด๋ ์ ์ฒด
OperatorList
(์ฆ, ํ์ด์ง)๊ฐ ๊ตฌ๋ฌธ ๋ถ์๋๊ธฐ ์ ์ ๋ ๋๋ง์ ์์ํ ์ ์๋๋ก ํ์ฌ ํ์ด์ง ๋ก๋์์ ์์ ํ ๋ ๋๋ง๋๋ ๋ฐ ํ์ํ ์ ์ฒด ์๊ฐ์ ์ค์ด๊ธฐ ์ํ ๊ฒ์ ๋๋ค.์, ํ์ธํ๊ธฐ ์ฌ์์ผ ํฉ๋๋ค(๊ฐ ์ ๋ง์ด ๋๋ฆฌ๋ฉด ์ด ์ฒญํฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋นํ์ฑํํ ์ ์์).
๋์ํฉ๋๋ค. ์์๋ฅผ ์์ ํ๋ ๊ฒ์ ํ์คํ ํ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์ ์ด ์๋๋๋ค. ์ฐ์ , ์ค๋ฅ๋ฅผ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ ์ธ์๋ ์๋ฌด ๊ฒ๋ ํ์ง ์์ต๋๋ค. ๋ ๋ฒ์งธ๋ก, ํจ์ฌ ๋ ์ค์ํ ๊ฒ์ ์ด๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์บ๋ฒ์ค ๋ฐฑ์๋์ ์ผ๋ฐ์ ์ธ ๋ ๋๋ง ์ฑ๋ฅ์ ๊ด๋ฒ์ํ ์ํฅ์ ๋ฏธ์น ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ค์ ๋งํ์ง๋ง, ๊ทธ๊ฒ์ ์์ ํ ํฉ๋ฆฌ์ ์ผ๋ก ๋ค๋ฆฝ๋๋ค.