
μ΅κ·Ό μ
무λ₯Ό μ§ννλ©΄μ PDF νμΌμ μ²λ¦¬ν μΌμ΄ λ§μκ³ , νμ¬λ μ§ν μ€μ
λλ€.
μκ°λ³΄λ€ μ½λλ‘ PDF νμΌμ μ²λ¦¬νλ κ²μ μ½μ§ μμ μΌμ΄μμ΅λλ€. μνμ°©μ€λ₯Ό μλΉν λ§μ΄ κ±°μ³€κ³ , κ·Έ κ³Όμ μ κ°λ¨ν μ μ΄ λ³΄λ € ν©λλ€.
(Node.jsλ‘ PDF νμΌ μ²λ¦¬ν μΌμ΄ ννμ§λ μκ² μ§λ§..)
1. PDF νμΌ μνΈν
λ¬Έμ μ μμμ ν λ°±μλ νμμ΄ νμΌ μ λ‘λ μλ²μ λΆνλ₯Ό λ°κ²¬ν κ²μ΄μμ΅λλ€. ν΄λΉ μλ²λ PDF, μμ νμΌμ μμ±ν΄ S3 μ μ₯μμ μ λ‘λνλ κ°λ¨ν μν λ§ μν μ€μ΄μλλ°, κ·ΈλΌμλ λ©μΈ μλ²λ³΄λ€ CPU μ¬μ©λμ΄ λμ λλ μμμ΅λλ€.
μ½λλ₯Ό λΆμν΄ λ³΄λ μΈλΆ μ μ₯μμ μ
λ‘λνκΈ° μ , μμ νμΌμ 컨ν
μ΄λ λ΄λΆμ μ μ₯νλ λ‘μ§μ΄ μμμ΅λλ€.
μ΄ λΆλΆμ΄ λ¬Έμ λΌκ³ νλ¨νκ³ κ°μ μ μν΄ μμ νμΌμ μ μ₯νμ§ μκ³ λ²νΌ μνμμ μ§μ μ
λ‘λν μ μλλ‘ κ³΅μλ₯Ό νμ
νκΈ° μμνμ΅λλ€.
(λ€λ₯Έ κ°μ μ λ μμμ§λ§, CPUμ ν° λΆνλ₯Ό μ€ λ§ν μμλ μλμμ΅λλ€.)
κ·Έλ°λ° μΆκ° νμΈ κ³Όμ μμ PDF νμΌ μνΈνμ μ¬μ©νλ node-qpdf2 λΌμ΄λΈλ¬λ¦¬κ° μ€μ νμΌ κ²½λ‘λ₯Ό νμλ‘ νλ€λ κ²μ νμΈν μ μμμ΅λλ€.
ν΄λΉ λΌμ΄λΈλ¬λ¦¬λ C++λ‘ μμ±λ CLIλ₯Ό κ°μΌ κ²μΌλ‘, μ΄ λͺ¨μ²΄κ° νμΌ κ²½λ‘λ₯Ό μꡬνκ³ λΌμ΄λΈλ¬λ¦¬ μ½λλ λͺ
λ Ήμ΄λ₯Ό μμ±ν΄ μ£Όλ κ²μ΄μκΈ° λλ¬Έμ μ΄λ₯Ό κ³ μΉ μλ μμμ΅λλ€. (μλ³Έ μ½λ)
ν΄λΉ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν κ²½μ° μμ νμΌμ 컨ν μ΄λ λ΄λΆμ μ μ₯νλ κ²μ νμ€μ μΈ μ νμ΄μκ³ , μμ νμΌμ μμ νλ λ‘μ§μ μΆκ°νλ μ λκ° νκ³μμ΅λλ€. λΉμ°ν κ·Όλ³Έμ μΈ λ¬Έμ ν΄κ²°λ²μ΄ μλμκΈ° λλ¬Έμ λ°©λ²μ κ³μ μ°Ύμμ§λ§ μ½μ§ μμκ³ , ν λλ λ°±μλ νλΌλ¦¬ μ€νμμ€ νλ‘μ νΈλ₯Ό ν κΉ λ Όμκ° μ€κ°κΈ°λ νμ΅λλ€. π€£
μμΈλ‘ ν΄κ²°λ²μ λ€λ₯Έ κ³³μμ λμμ΅λλ€. PDF νμΌ μμ±μ μ¬μ©νκ³ μλ pdf-lib λΌμ΄λΈλ¬λ¦¬λ₯Ό λκ΅°κ° Fork νμ¬ μνΈν κΈ°λ₯μ μΆκ°ν κ²μ λ°κ²¬ν μ μμκΈ° λλ¬Έμ
λλ€. μ΄λ₯Ό μ μ©ν΄ 보λ κ²μΌλ‘ ν©μλμκ³ , κΈμ μ°λ μμ μλ λ€λ₯Έ νμμκ² ν λΉλμ΄ μμ΅λλ€.
2. PDF νμΌ μμΆκ³Ό μμ± λ‘μ§
νμ¬ μ 무μμλ μ£ΌκΈ°μ μΌλ‘ PDF νμμ λ³΄κ³ μλ₯Ό λ°νν΄μΌ νλλ°, λ€λ₯Έ μ 체μ νμ μ νλ©΄μ 300KB μ΄νμ μ μ©λ PDFκ° νμν μν©μ΄μμ΅λλ€. μ κ° μ 무λ₯Ό λ°μ μμ μμλ νμΌ μ©λμ΄ 5MB μ΄μμΈ κ²½μ°λ μμκ³ , λμμ μν΄μ μμ±λ νμΌμ μμΆνκ±°λ, λ‘μ§μ κ°μ νμ¬ μ μ©λμ νμΌμ λ§λλ κ³Όμ μ΄ νμνμ΅λλ€.
κΈ°μ‘΄ νμΌ μμΆμ κ²½μ° λͺ κ°μ§λ₯Ό κ³ λ €ν΄ λ³΄μμΌλ λΆμ μ νλ€λ νλ¨μ λ΄λ Έμ΅λλ€.
- μμ€μ κ²μνλ©΄ λμ€λ μμΆ μ¬μ΄νΈλ λꡬλ 보μ λ¬Έμ μ μλ μμ μ λ¬Έμ κ° μμμ΅λλ€.
pypdfλ±μ μ€νμμ€ λꡬλ κ·Έ μλ μ κ³ , ν μ€νΈ κ²°κ³Ό μμΆ μ±λ₯λ μ’λ€κ³ νλ¨νκΈ°λ μ΄λ €μ μ΅λλ€.- Ghostscriptλ κ°μ₯ μ μλ €μ Έ μκ³ , λ§μ‘±μ€λ¬μ΄ μμΆ μ±λ₯μ λ³΄μ¬ μ£Όμμ΅λλ€.
νμ§λ§ μΆκ° μ‘°μ¬ κ²°κ³Ό AGPL λΌμ΄μ μ€κ° κ±Έλ € μμ΄ λ¬΄λ£ λ²μ μ μ¬μ©νκΈ° μν΄μλ κ΄λ ¨ μμ€λ₯Ό 곡κ°ν΄μΌ νκ³ , μμ μ μ΄μ©μ μν΄μλ κ°λ°μ¬ μΈ‘μ λ‘μ΄ν°λ₯Ό μ§λΆν΄μΌ νμ΅λλ€.
μ€μ λ‘ νμ»΄ μΈ‘μ΄ μ΄λ₯Ό μ§ν€μ§ μμλ€κ° μμ‘μ κ±Έλ € κ³Όμ§κΈμ λ¬Έ μ μ΄ μμμ΅λλ€.
κ·Έλ¦¬κ³ λ‘μ΄ν°κ° μ°Ύμ보λ λ§λ§μΉ μμμ΅λλ€.. (μλ°± λ¬λ¬λΆν° μΆλ°νλ€κ³ ν©λλ€)
κ²°κ΅ PDF μμ± λ‘μ§μ κ°μ ν μ μλμ§ μ‘°μ¬μ λ€μ΄κ°λλ°, λ€ννλ ν¬κ² 2κ°μ§ κ°μ μ μ μ°Ύμ μ μμμ΅λλ€.
- μλ³Έ ν νλ¦Ώ νμΌμ ν¬κΈ°κ° ν° νΈμ΄μμ΅λλ€. μ΄λ₯Ό μμΆμ ν΅ν΄ 150KB μ΄νλ‘ μ€μμ΅λλ€.
- PDF μ²λ¦¬ κ³Όμ μμ ν
μ€νΈλ₯Ό μ
λ ₯ν λ ν°νΈ νμΌ μ 체λ₯Ό λ‘λ©νκ³ μμμ΅λλ€.
λ³΄κ³ μ PDF μμ± κ³Όμ μ΄ ν¬κ² 2λ¨κ³λ‘ λλμ΄ μμλλ°, μ΄ 2κ° λ¨κ³μμ λͺ¨λ λΉμ·ν μμ€μ ν° μ©λ μ¦κ°λ₯Ό νμΈνμ΅λλ€. λ€λ₯Έ λΆλΆμμ μμΈμ μ°Ύμ§ λͺ»νλ€κ° μμͺ½ λ‘μ§ λͺ¨λ ν°νΈλ₯Ό λ‘λ©νλ κ³Όμ μ΄ ν¬ν¨λμ΄ μμμ λ°κ²¬νκ³ , μ€μ λ‘ ν°νΈ μ체 μ©λμ΄ κ½€λ ν° νΈμ΄μμ΅λλ€.
κ΄λ ¨ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ‘°μ¬ν κ²°κ³Ό, ν°νΈ νμΌ μ 체λ₯Ό λ‘λ©νλ κ²μ΄ κΈ°λ³Έκ°μ΄κ³ , μ΄λ₯Ό μ΅μ μ ν΅ν΄ μΌλΆλ§ λ‘λ©ν μ μλλ‘ μ€μ ν μ μλ€λ κ²μ λ°κ²¬νμ΅λλ€. (λ¬Έμ)
νμ§λ§ ν°νΈ μ²λ¦¬μ μ¬μ©νλ@pdf-lib/fontkitλΌμ΄λΈλ¬λ¦¬λ νκΈμ ν¬ν¨ν νΉμ μΈμ΄ κΈκΌ΄μμ μ΅μ μ μ μ©νλ©΄ κΈμκ° μ λλ‘ λ€μ΄κ°μ§ μλ λ¬Έμ κ° μμμ΅λλ€. μ΄μ κ΄λ ¨νμ¬ μ€λ₯λ₯Ό μμ ν λΌμ΄λΈλ¬λ¦¬κ° μμ΄ μ΄λ₯Ό λμ ν΄ ν΄κ²°νμ΅λλ€. (μ΄μ)
μ 2κ°μ§ κ°μ μ μ μ μ©ν΄ 3 ~ 6MB μ λ λμ€λ κ²°κ³Ό νμΌ μ©λμ 150 ~ 200KBκΉμ§ ν¬κ² μ€μΌ μ μμμ΅λλ€.
λλ μ
- μ§μμ μΌλ‘ κ΄λ¦¬λλ λΌμ΄λΈλ¬λ¦¬λ μ΄λ° λ¬Έμ κ° μ μ μ μμ§λ§, λΉμ£Όλ₯ κΈ°λ₯μ΄κ±°λ λ°©μΉλ λΌμ΄λΈλ¬λ¦¬ λ¬Έμ λ₯Ό ν΄κ²°νλ κ²μ΄ μ½μ§ μμμ΅λλ€. μ΄ κ²½μ°λ PDF μ²λ¦¬κ° μκ°λ³΄λ€ νν κ²½μ°κ° μλμκ³ , κ΄λ ¨ λΌμ΄λΈλ¬λ¦¬κ° μ€λ κΈ°κ° λ°©μΉλμ΄ μκ±°λ μ λ£ μ νμ΄ λμ΄ μμ΄ κ³΅μκ° μ»€μ‘μ΅λλ€.
- μ€νμμ€λ₯Ό μ¬μ©ν λλ νμ λΌμ΄μ μ€μ κ΄ν΄ μ£Όμκ° νμνλ€λ κ²μ λ€μ λκΌμ΅λλ€. κ°μΈ νλ‘μ νΈμμλ μ΄λ₯Ό κ³ λ €ν μΌμ΄ κ±°μ μμλλ°, μ€λ¬΄μμ μ΄λ₯Ό ν¬κ² λλ μ μμλ μ¬λ‘μμ΅λλ€.