kordoc 4.24.29 → 4.24.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +4 -4
  2. package/dist/{-YTEYPQVO.js → -LTYXURUV.js} +21 -21
  3. package/dist/{chunk-PID5JXOD.js → chunk-2P7Y3BT3.js} +2 -2
  4. package/dist/{chunk-UZPJUNWR.js → chunk-44Y7SP3W.js} +2 -2
  5. package/dist/{chunk-O7VUAKBI.js → chunk-4LOXBT7W.js} +2 -2
  6. package/dist/{chunk-2C5YWTFM.js → chunk-64CA5E3N.js} +9 -11
  7. package/dist/chunk-64CA5E3N.js.map +1 -0
  8. package/dist/{chunk-2GULNG4H.js → chunk-6KXAVROI.js} +2 -2
  9. package/dist/{chunk-43ZKYBLE.js → chunk-7LEWA5WH.js} +3 -3
  10. package/dist/{chunk-EESZHYQI.js → chunk-ACMWKNEF.js} +3 -3
  11. package/dist/{chunk-UXOY3ZSD.js → chunk-AI2YUNVV.js} +2 -2
  12. package/dist/{chunk-ZMDYHLXJ.js → chunk-AL6DVHWS.js} +2 -2
  13. package/dist/{chunk-MHQUXIAN.cjs → chunk-BVAKONSV.cjs} +183 -169
  14. package/dist/chunk-BVAKONSV.cjs.map +1 -0
  15. package/dist/{chunk-X6BBJLB4.js → chunk-C4NF2E7X.js} +2 -2
  16. package/dist/{chunk-J4BY3FPL.js → chunk-CAAW52SA.js} +2 -2
  17. package/dist/{chunk-5WGI3CM7.js → chunk-CATJO2L2.js} +2 -2
  18. package/dist/{chunk-ZKCK6QJA.js → chunk-DBUSSWBU.js} +19 -5
  19. package/dist/chunk-DBUSSWBU.js.map +1 -0
  20. package/dist/{chunk-NXAZ3MK2.cjs → chunk-EFSZHHEP.cjs} +6 -6
  21. package/dist/{chunk-NXAZ3MK2.cjs.map → chunk-EFSZHHEP.cjs.map} +1 -1
  22. package/dist/{chunk-EVOVHP7N.js → chunk-EH744WIF.js} +2 -2
  23. package/dist/{chunk-ST2UWIBG.js → chunk-FICCE4LN.js} +6 -7
  24. package/dist/chunk-FICCE4LN.js.map +1 -0
  25. package/dist/{chunk-E3RHMA4S.cjs → chunk-FW2OQZ3D.cjs} +3 -3
  26. package/dist/{chunk-E3RHMA4S.cjs.map → chunk-FW2OQZ3D.cjs.map} +1 -1
  27. package/dist/{chunk-D2XW3ZPA.js → chunk-GFV5RSHS.js} +3 -3
  28. package/dist/{chunk-YXZWHSS7.cjs → chunk-H6YTDIDW.cjs} +240 -227
  29. package/dist/chunk-H6YTDIDW.cjs.map +1 -0
  30. package/dist/{chunk-C76347JP.js → chunk-HYACQOK6.js} +10 -10
  31. package/dist/{chunk-AVVS4LUN.js → chunk-IM66ER3N.js} +6 -6
  32. package/dist/{chunk-N3TSKOKM.cjs → chunk-JRWQEYSV.cjs} +62 -64
  33. package/dist/chunk-JRWQEYSV.cjs.map +1 -0
  34. package/dist/{chunk-KDJQRKIG.js → chunk-JSLRB4XE.js} +2 -2
  35. package/dist/{chunk-QLOBJB2U.js → chunk-KR6UDBIV.js} +2 -2
  36. package/dist/{chunk-N3BE55JM.js → chunk-L4WWG3U7.js} +4 -4
  37. package/dist/{chunk-UGGF6IJE.js → chunk-MTOZEYOT.js} +11 -11
  38. package/dist/{chunk-YZA2BV7Q.js → chunk-MYYXPR42.js} +2 -2
  39. package/dist/{chunk-XNBHWXMW.js → chunk-N2Y5LEOQ.js} +2 -2
  40. package/dist/{chunk-6ZLZSD4K.js → chunk-N3LJARDG.js} +15 -15
  41. package/dist/{chunk-2XDEZVXR.cjs → chunk-NLP5AB6W.cjs} +3 -3
  42. package/dist/{chunk-2XDEZVXR.cjs.map → chunk-NLP5AB6W.cjs.map} +1 -1
  43. package/dist/{chunk-NXCCI36U.js → chunk-PZO3WTII.js} +2 -2
  44. package/dist/{chunk-EOCAXPJK.js → chunk-QIM4I2IO.js} +2 -2
  45. package/dist/{chunk-3LX3Z2IU.cjs → chunk-QQXNGBN2.cjs} +77 -77
  46. package/dist/{chunk-3LX3Z2IU.cjs.map → chunk-QQXNGBN2.cjs.map} +1 -1
  47. package/dist/{chunk-XUAR22CX.js → chunk-SFFX26HF.js} +2 -2
  48. package/dist/{chunk-5ESCSCHK.js → chunk-SJMAND23.js} +18 -4
  49. package/dist/chunk-SJMAND23.js.map +1 -0
  50. package/dist/{chunk-EPFU32FJ.js → chunk-TXYE3JUL.js} +5 -5
  51. package/dist/{chunk-O4YVSQM6.js → chunk-VNTU326I.js} +17 -4
  52. package/dist/{chunk-O4YVSQM6.js.map → chunk-VNTU326I.js.map} +1 -1
  53. package/dist/{chunk-W2AYHPSA.js → chunk-VOF2VCUF.js} +10 -11
  54. package/dist/chunk-VOF2VCUF.js.map +1 -0
  55. package/dist/{chunk-L5QXYOFG.js → chunk-WRZDSWMV.js} +2 -2
  56. package/dist/{chunk-PKDOIMVL.js → chunk-WW47MOC6.js} +2 -2
  57. package/dist/{chunk-5WTDJEBF.js → chunk-XNCPKOIP.js} +20 -7
  58. package/dist/{chunk-5WTDJEBF.js.map → chunk-XNCPKOIP.js.map} +1 -1
  59. package/dist/{chunk-GOM2JGBN.cjs → chunk-XXFF4HE4.cjs} +2 -2
  60. package/dist/{chunk-GOM2JGBN.cjs.map → chunk-XXFF4HE4.cjs.map} +1 -1
  61. package/dist/chunks-EMHL6JYG.js +11 -0
  62. package/dist/cli.js +43 -43
  63. package/dist/{formula-XL3CHOWQ.js → formula-4IAJ4J5W.js} +4 -4
  64. package/dist/{formula-XIE3WLFC.cjs → formula-E3VGHFAI.cjs} +9 -9
  65. package/dist/{formula-XIE3WLFC.cjs.map → formula-E3VGHFAI.cjs.map} +1 -1
  66. package/dist/{formula-3GNA32DY.js → formula-NJZUDYQO.js} +3 -3
  67. package/dist/generator-GPT76OML.js +17 -0
  68. package/dist/generator-MIX4R7HL.js +10 -0
  69. package/dist/generator-SUPBH2Q6.cjs +11 -0
  70. package/dist/{generator-WF6B6PSQ.cjs.map → generator-SUPBH2Q6.cjs.map} +1 -1
  71. package/dist/{image-ocr-5XVAC6GR.js → image-ocr-2ZA6RJB2.js} +6 -6
  72. package/dist/{image-ocr-VFC3Q4FM.js → image-ocr-7DKSLHV3.js} +9 -9
  73. package/dist/{image-ocr-CSF647B2.cjs → image-ocr-KOZT553E.cjs} +17 -17
  74. package/dist/{image-ocr-CSF647B2.cjs.map → image-ocr-KOZT553E.cjs.map} +1 -1
  75. package/dist/index.cjs +1105 -1105
  76. package/dist/index.js +9 -9
  77. package/dist/mcp.js +36 -36
  78. package/dist/memo-GFUUEHGA.js +17 -0
  79. package/dist/{model-bundle-MCBVBVU7.js → model-bundle-DFIFP2XF.js} +5 -5
  80. package/dist/{models-ON7Z7IEP.js → models-25SH2DS7.js} +5 -5
  81. package/dist/{parse-worker-v2-POVKDQF5.js → parse-worker-v2-RJ3ED73F.js} +22 -22
  82. package/dist/{parser-2GSL7OHD.cjs → parser-3ODQI4QF.cjs} +157 -157
  83. package/dist/{parser-2GSL7OHD.cjs.map → parser-3ODQI4QF.cjs.map} +1 -1
  84. package/dist/{parser-Z4JFZXTE.js → parser-GBYPD4QF.js} +12 -12
  85. package/dist/{parser-QMELSN43.js → parser-NEYOWPAK.js} +9 -9
  86. package/dist/{pdf-ocr-FB5SXBC6.js → pdf-ocr-5LHY3NXV.js} +6 -6
  87. package/dist/pdf-ocr-76NT4TCS.cjs +36 -0
  88. package/dist/{pdf-ocr-KICQ4Z6K.cjs.map → pdf-ocr-76NT4TCS.cjs.map} +1 -1
  89. package/dist/{pdf-ocr-ALFFH3IC.js → pdf-ocr-N6VQ72SP.js} +9 -9
  90. package/dist/{profile-io-A5DGKHHA.js → profile-io-WCBBMCOR.js} +3 -3
  91. package/dist/{rasterize-MZXDLTQ4.js → rasterize-GD325A5X.js} +3 -3
  92. package/dist/{redact-doc-35SXJXNS.js → redact-doc-R4F5VYUA.js} +21 -21
  93. package/dist/{render-HUNWBMBQ.js → render-7GV7GKZE.js} +12 -12
  94. package/dist/{rewrite-fallback-EWZ2A7FV.js → rewrite-fallback-STVHEDFQ.js} +13 -13
  95. package/dist/seal-XTZXAGHU.js +16 -0
  96. package/dist/{setup-TWETT62G.js → setup-EG7ZQNBB.js} +3 -3
  97. package/dist/{to-hwpx-VUXMHSHY.js → to-hwpx-2UZJV377.js} +7 -7
  98. package/dist/{to-hwpx-XSXRNYWN.js → to-hwpx-XURJVKKH.js} +4 -4
  99. package/dist/to-hwpx-ZTVZ6SRI.cjs +16 -0
  100. package/dist/{to-hwpx-F34ECNAQ.cjs.map → to-hwpx-ZTVZ6SRI.cjs.map} +1 -1
  101. package/dist/visual-C33QKCQ6.js +37 -0
  102. package/dist/{watch-NHVTKLJW.js → watch-NSVI3VIY.js} +22 -22
  103. package/package.json +1 -1
  104. package/dist/chunk-2C5YWTFM.js.map +0 -1
  105. package/dist/chunk-5ESCSCHK.js.map +0 -1
  106. package/dist/chunk-MHQUXIAN.cjs.map +0 -1
  107. package/dist/chunk-N3TSKOKM.cjs.map +0 -1
  108. package/dist/chunk-ST2UWIBG.js.map +0 -1
  109. package/dist/chunk-W2AYHPSA.js.map +0 -1
  110. package/dist/chunk-YXZWHSS7.cjs.map +0 -1
  111. package/dist/chunk-ZKCK6QJA.js.map +0 -1
  112. package/dist/chunks-BETX5XAL.js +0 -11
  113. package/dist/generator-7WYFZTA4.js +0 -17
  114. package/dist/generator-HR2PEYUQ.js +0 -10
  115. package/dist/generator-WF6B6PSQ.cjs +0 -11
  116. package/dist/memo-4LM7X6VB.js +0 -17
  117. package/dist/pdf-ocr-KICQ4Z6K.cjs +0 -36
  118. package/dist/seal-IEPV2HCZ.js +0 -16
  119. package/dist/to-hwpx-F34ECNAQ.cjs +0 -16
  120. package/dist/visual-3QIRJEEB.js +0 -37
  121. /package/dist/{-YTEYPQVO.js.map → -LTYXURUV.js.map} +0 -0
  122. /package/dist/{chunk-PID5JXOD.js.map → chunk-2P7Y3BT3.js.map} +0 -0
  123. /package/dist/{chunk-UZPJUNWR.js.map → chunk-44Y7SP3W.js.map} +0 -0
  124. /package/dist/{chunk-O7VUAKBI.js.map → chunk-4LOXBT7W.js.map} +0 -0
  125. /package/dist/{chunk-2GULNG4H.js.map → chunk-6KXAVROI.js.map} +0 -0
  126. /package/dist/{chunk-43ZKYBLE.js.map → chunk-7LEWA5WH.js.map} +0 -0
  127. /package/dist/{chunk-EESZHYQI.js.map → chunk-ACMWKNEF.js.map} +0 -0
  128. /package/dist/{chunk-UXOY3ZSD.js.map → chunk-AI2YUNVV.js.map} +0 -0
  129. /package/dist/{chunk-ZMDYHLXJ.js.map → chunk-AL6DVHWS.js.map} +0 -0
  130. /package/dist/{chunk-X6BBJLB4.js.map → chunk-C4NF2E7X.js.map} +0 -0
  131. /package/dist/{chunk-J4BY3FPL.js.map → chunk-CAAW52SA.js.map} +0 -0
  132. /package/dist/{chunk-5WGI3CM7.js.map → chunk-CATJO2L2.js.map} +0 -0
  133. /package/dist/{chunk-EVOVHP7N.js.map → chunk-EH744WIF.js.map} +0 -0
  134. /package/dist/{chunk-D2XW3ZPA.js.map → chunk-GFV5RSHS.js.map} +0 -0
  135. /package/dist/{chunk-C76347JP.js.map → chunk-HYACQOK6.js.map} +0 -0
  136. /package/dist/{chunk-AVVS4LUN.js.map → chunk-IM66ER3N.js.map} +0 -0
  137. /package/dist/{chunk-KDJQRKIG.js.map → chunk-JSLRB4XE.js.map} +0 -0
  138. /package/dist/{chunk-QLOBJB2U.js.map → chunk-KR6UDBIV.js.map} +0 -0
  139. /package/dist/{chunk-N3BE55JM.js.map → chunk-L4WWG3U7.js.map} +0 -0
  140. /package/dist/{chunk-UGGF6IJE.js.map → chunk-MTOZEYOT.js.map} +0 -0
  141. /package/dist/{chunk-YZA2BV7Q.js.map → chunk-MYYXPR42.js.map} +0 -0
  142. /package/dist/{chunk-XNBHWXMW.js.map → chunk-N2Y5LEOQ.js.map} +0 -0
  143. /package/dist/{chunk-6ZLZSD4K.js.map → chunk-N3LJARDG.js.map} +0 -0
  144. /package/dist/{chunk-NXCCI36U.js.map → chunk-PZO3WTII.js.map} +0 -0
  145. /package/dist/{chunk-EOCAXPJK.js.map → chunk-QIM4I2IO.js.map} +0 -0
  146. /package/dist/{chunk-XUAR22CX.js.map → chunk-SFFX26HF.js.map} +0 -0
  147. /package/dist/{chunk-EPFU32FJ.js.map → chunk-TXYE3JUL.js.map} +0 -0
  148. /package/dist/{chunk-L5QXYOFG.js.map → chunk-WRZDSWMV.js.map} +0 -0
  149. /package/dist/{chunk-PKDOIMVL.js.map → chunk-WW47MOC6.js.map} +0 -0
  150. /package/dist/{chunks-BETX5XAL.js.map → chunks-EMHL6JYG.js.map} +0 -0
  151. /package/dist/{formula-XL3CHOWQ.js.map → formula-4IAJ4J5W.js.map} +0 -0
  152. /package/dist/{formula-3GNA32DY.js.map → formula-NJZUDYQO.js.map} +0 -0
  153. /package/dist/{generator-7WYFZTA4.js.map → generator-GPT76OML.js.map} +0 -0
  154. /package/dist/{generator-HR2PEYUQ.js.map → generator-MIX4R7HL.js.map} +0 -0
  155. /package/dist/{image-ocr-5XVAC6GR.js.map → image-ocr-2ZA6RJB2.js.map} +0 -0
  156. /package/dist/{image-ocr-VFC3Q4FM.js.map → image-ocr-7DKSLHV3.js.map} +0 -0
  157. /package/dist/{memo-4LM7X6VB.js.map → memo-GFUUEHGA.js.map} +0 -0
  158. /package/dist/{model-bundle-MCBVBVU7.js.map → model-bundle-DFIFP2XF.js.map} +0 -0
  159. /package/dist/{models-ON7Z7IEP.js.map → models-25SH2DS7.js.map} +0 -0
  160. /package/dist/{parse-worker-v2-POVKDQF5.js.map → parse-worker-v2-RJ3ED73F.js.map} +0 -0
  161. /package/dist/{parser-Z4JFZXTE.js.map → parser-GBYPD4QF.js.map} +0 -0
  162. /package/dist/{parser-QMELSN43.js.map → parser-NEYOWPAK.js.map} +0 -0
  163. /package/dist/{pdf-ocr-ALFFH3IC.js.map → pdf-ocr-5LHY3NXV.js.map} +0 -0
  164. /package/dist/{pdf-ocr-FB5SXBC6.js.map → pdf-ocr-N6VQ72SP.js.map} +0 -0
  165. /package/dist/{profile-io-A5DGKHHA.js.map → profile-io-WCBBMCOR.js.map} +0 -0
  166. /package/dist/{rasterize-MZXDLTQ4.js.map → rasterize-GD325A5X.js.map} +0 -0
  167. /package/dist/{redact-doc-35SXJXNS.js.map → redact-doc-R4F5VYUA.js.map} +0 -0
  168. /package/dist/{render-HUNWBMBQ.js.map → render-7GV7GKZE.js.map} +0 -0
  169. /package/dist/{rewrite-fallback-EWZ2A7FV.js.map → rewrite-fallback-STVHEDFQ.js.map} +0 -0
  170. /package/dist/{seal-IEPV2HCZ.js.map → seal-XTZXAGHU.js.map} +0 -0
  171. /package/dist/{setup-TWETT62G.js.map → setup-EG7ZQNBB.js.map} +0 -0
  172. /package/dist/{to-hwpx-VUXMHSHY.js.map → to-hwpx-2UZJV377.js.map} +0 -0
  173. /package/dist/{to-hwpx-XSXRNYWN.js.map → to-hwpx-XURJVKKH.js.map} +0 -0
  174. /package/dist/{visual-3QIRJEEB.js.map → visual-C33QKCQ6.js.map} +0 -0
  175. /package/dist/{watch-NHVTKLJW.js.map → watch-NSVI3VIY.js.map} +0 -0
package/README.md CHANGED
@@ -110,7 +110,7 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
110
110
 
111
111
  ## 검증 결과
112
112
 
113
- **4.22.14 · 2026-10-19 검증**(렌더 배치·PDF 글·표·별표·OCR 은 4.24.24 · 2026-10-30, HWP → HWPX 변환은 4.24.29 · 2026-10-31). 고정 코퍼스와 참조 기준으로 측정한 결과입니다.
113
+ **4.22.14 · 2026-10-19 검증**(렌더 배치·PDF 글·표·별표는 4.24.24 · 2026-10-30, OCR 은 4.24.30 · 2026-10-31, HWP → HWPX 변환은 4.24.29 · 2026-10-31). 고정 코퍼스와 참조 기준으로 측정한 결과입니다.
114
114
 
115
115
  | 대상 | 규모 | 결과 |
116
116
  | --- | --- | --- |
@@ -123,7 +123,7 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
123
123
  | PDF 중첩표 (텍스트층) | 29문서 · 101표 | 구조·칸 내용 **101/101 · 100%** |
124
124
  | 법령 별표 | 272건 · 346표 | HWP **346/346**, PDF **343/346 · 99.13%** |
125
125
  | PDF 전체 | 1,911문서 중 1,729건 채점 | 글 커버리지 **99.80%** |
126
- | OCR | 53문서 · 102쪽 · 67표 | CER **0.0244** · 글자 재현율 **99.32%** · 표 구조 일치 **34/67** |
126
+ | OCR | 53문서 · 102쪽 · 66표 | CER **0.0237** · 글자 재현율 **99.32%** · 표 구조 일치 **34/66** |
127
127
  | opendataloader-bench | PDF 200문서 | 종합 기본값 **0.964** · OCR 끔 **0.939** |
128
128
  | HWPX 렌더 배치 | 한컴 PDF 짝 1,565문서(쪽 수 일치 1,508) · 글 조각 111,480 · 그림 4,300 | 글 위치(±1.5pt) **106,904 · 95.9%** · 그림 위치(±2pt) **4,213 · 98.0%** |
129
129
 
@@ -131,15 +131,15 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
131
131
 
132
132
  ## 최근 업데이트
133
133
 
134
- 최신 배포: **[4.24.29](https://github.com/chrisryugj/kordoc/releases/tag/v4.24.29)** · 2026-10-31
134
+ 최신 배포: **[4.24.30](https://github.com/chrisryugj/kordoc/releases/tag/v4.24.30)** · 2026-10-31
135
135
 
136
136
  | 버전 | 주요 변경 | 수치 변화 |
137
137
  | --- | --- | --- |
138
+ | 4.24.30 | 파서: 채운 누름틀·하이퍼링크가 든 문단의 굵게·밑줄 표지(보도자료 본문 누름틀 강조가 사라지던 것, HWPX·HWP) · PDF 표: 몇 칸에만 걸린 한컴 클립이 선 표 칸을 빼앗던 것 · to-hwpx: 그리기 선 투명도 | OCR 표 정답의 가짜 표가 빠져 34/67 → **34/66**·CER 0.0244 → **0.0237** · patch 굵은 낱말 넣기 잔차 HWPX 80 → **60**/489 · 벤치 지표 그대로 |
138
139
  | 4.24.29 | to-hwpx: 한글이 저장한 꼴로 — 문단 글 방향(textDir)·같은 문단 모양 합치기·홀수 값 여백·탭의 글자 단위·OLE 이름·메모 확장·옛 판 테두리 0번 등 · patch: 새 글에 표시한 강조(원문에 없던 서식도), 한 문단 여러 곳 고칠 때 사이 글 서식 보존, HTML 표 칸 강조 표지가 글자로 박히던 것, HWP 칸 안 중첩 표 칸 · HWP 파서: 위첨자가 든 굵은 문단 강조 | 변환 속성 일치 0.99194 → **0.99214** · 완전 일치 14 → **69**/232 · patch 굵은 낱말 넣기 잔차 HWPX 241 → **121**/265 · HWP 표 칸 끝 붙이기 83 → **93**/93 · HWP·HWPX parse 대조 다른 단위 118 → **98** · 벤치 지표 그대로 |
139
140
  | 4.24.28 | 메모 읽기·달기(`memos`·`kordoc memo`·MCP `add_memo`, #180) · patch: 굵은 글·위첨자 끝에 붙인 글이 서식을 물려받던 것(HWP·HWPX), 글머리표 문단(#179), HWPX 탭·엔티티·PUA 문단과 HWP PUA·강제 줄바꿈 문단·표 칸은 바뀐 자리만 · to-hwpx: 원·네모 겹치기 번호(#178) · HWP 파서: 굵게·기울임·취소선·밑줄 표지 | patch 검증 잔차 HWPX 45 → **3**/540 · HWP 24 → **4**/140·37 → **0**/605(파서 강조 반영 뒤 기준) · HWP 대체본 원본 서식 90 → **94**/98 · HWP·HWPX parse 대조 다른 단위 390 → **118** · 벤치 지표 그대로 |
140
141
  | 4.24.27 | 서식 채우기·도장(`fill_form`·`place_seal`): HWP 5.x 서식도 원본 서식 그대로 · patch: HWP 대체본을 원본 서식으로(서식 그대로 바꾼 HWPX 에 반영), 누름틀 자리에 쓴 값은 누름틀에 채움(HWP·HWPX), 굵은 칸 GFM 표·여러 줄 1열 표·같은 글 문단 짝짓기 | patch 편집 반영 HWPX 539 → **540**/540 · 표 칸 465 → **467**/467 · HWP 132 → **140**/140 · HWP 대체본 원본 서식 0 → **90**/98 · 벤치 지표 그대로 |
141
142
  | 4.24.26 | HWP → HWPX 변환(`kordoc to-hwpx`·MCP `convert_to_hwpx`): HWP 5.x 를 서식 그대로 — 바탕쪽·표·그림·도형·연결 글상자·수식·필드·메모·양식 개체·차트까지 · patch(HWP): 탭·필드가 든 문단도 바뀐 글자만 · 마크다운: 목록 항목 첫머리 표지 이스케이프 | 변환 속성 일치 **0.992** · 글 **264/264**(한글 저장 짝) · 한글 화면 대조 80문서 · patch HWP 123 → **132**/140 · 벤치 지표 그대로 |
142
- | 4.24.25 | patch: 강제 줄바꿈 문단 수정, 좌표가 어긋난 자리(틀 표·제목 상자·첨자 문단)를 원문 글로 찾아 고침, 남은 편집은 원본 서식 대체본(`.rewrite.hwpx`) · 암호 HWPX 렌더 | patch 편집 반영(코퍼스 실험) HWPX 487 → **539**/540 · 표 칸 455 → **465**/467 · HWP 111 → **123**/140 · 벤치 지표 그대로 |
143
143
 
144
144
  이전 버전과 상세 내용은 [변경 이력](CHANGELOG.md)에 있습니다.
145
145
 
@@ -53,26 +53,26 @@ import {
53
53
  usesGaejosikMunche,
54
54
  usesLogicStructure,
55
55
  validateHwpx
56
- } from "./chunk-6ZLZSD4K.js";
56
+ } from "./chunk-N3LJARDG.js";
57
57
  import {
58
58
  blocksToPages
59
- } from "./chunk-L5QXYOFG.js";
59
+ } from "./chunk-WRZDSWMV.js";
60
60
  import {
61
61
  extractClickHereFields,
62
62
  patchHwp,
63
63
  patchHwpx
64
- } from "./chunk-UGGF6IJE.js";
64
+ } from "./chunk-MTOZEYOT.js";
65
65
  import {
66
66
  addMemoHwpx
67
- } from "./chunk-AVVS4LUN.js";
67
+ } from "./chunk-IM66ER3N.js";
68
68
  import {
69
69
  placeSealHwpx
70
- } from "./chunk-EPFU32FJ.js";
71
- import "./chunk-YZA2BV7Q.js";
70
+ } from "./chunk-TXYE3JUL.js";
71
+ import "./chunk-MYYXPR42.js";
72
72
  import {
73
73
  convertToHwpx,
74
74
  hwpToHwpx
75
- } from "./chunk-W2AYHPSA.js";
75
+ } from "./chunk-VOF2VCUF.js";
76
76
  import {
77
77
  DEFAULT_REDACT_RULES,
78
78
  redactMarkdown,
@@ -80,7 +80,7 @@ import {
80
80
  } from "./chunk-3WSNLH4B.js";
81
81
  import {
82
82
  blocksToChunks
83
- } from "./chunk-UZPJUNWR.js";
83
+ } from "./chunk-44Y7SP3W.js";
84
84
  import {
85
85
  blocksToPdf,
86
86
  extractRenderedRegions,
@@ -91,13 +91,13 @@ import {
91
91
  renderHwp5Pages,
92
92
  renderHwpxToSvg,
93
93
  renderSceneToHtml
94
- } from "./chunk-C76347JP.js";
95
- import "./chunk-43ZKYBLE.js";
96
- import "./chunk-NXCCI36U.js";
97
- import "./chunk-ST2UWIBG.js";
94
+ } from "./chunk-HYACQOK6.js";
95
+ import "./chunk-7LEWA5WH.js";
96
+ import "./chunk-PZO3WTII.js";
97
+ import "./chunk-FICCE4LN.js";
98
98
  import "./chunk-VKVDMH7X.js";
99
- import "./chunk-PKDOIMVL.js";
100
- import "./chunk-EOCAXPJK.js";
99
+ import "./chunk-WW47MOC6.js";
100
+ import "./chunk-QIM4I2IO.js";
101
101
  import "./chunk-VQFA55IC.js";
102
102
  import {
103
103
  detectFormat,
@@ -119,7 +119,7 @@ import {
119
119
  markdownToHwpx,
120
120
  normalizeGongmunPreset,
121
121
  placeTotalRow
122
- } from "./chunk-5WTDJEBF.js";
122
+ } from "./chunk-XNCPKOIP.js";
123
123
  import {
124
124
  ValueCursor,
125
125
  applySplices,
@@ -141,20 +141,20 @@ import {
141
141
  measureTextWidth,
142
142
  simulateWrap,
143
143
  simulateWrapKeepWord
144
- } from "./chunk-5WGI3CM7.js";
145
- import "./chunk-EVOVHP7N.js";
144
+ } from "./chunk-CATJO2L2.js";
145
+ import "./chunk-EH744WIF.js";
146
146
  import "./chunk-OFVHQ2TZ.js";
147
147
  import "./chunk-WFKFG2RT.js";
148
- import "./chunk-XUAR22CX.js";
148
+ import "./chunk-SFFX26HF.js";
149
149
  import {
150
150
  blocksToMarkdown,
151
151
  flattenLayoutTables,
152
152
  hasStructuredCellContent
153
- } from "./chunk-XNBHWXMW.js";
153
+ } from "./chunk-N2Y5LEOQ.js";
154
154
  import "./chunk-KFF47XZ7.js";
155
155
  import {
156
156
  VERSION
157
- } from "./chunk-PID5JXOD.js";
157
+ } from "./chunk-2P7Y3BT3.js";
158
158
  export {
159
159
  AGENCY_COMMON_NAME,
160
160
  BUILTIN_TEMPLATES,
@@ -268,4 +268,4 @@ export {
268
268
  usesLogicStructure,
269
269
  validateHwpx
270
270
  };
271
- //# sourceMappingURL=-YTEYPQVO.js.map
271
+ //# sourceMappingURL=-LTYXURUV.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  // src/utils.ts
4
4
  import { format } from "util";
5
- var VERSION = true ? "4.24.29" : "0.0.0-dev";
5
+ var VERSION = true ? "4.24.30" : "0.0.0-dev";
6
6
  function toArrayBuffer(buf) {
7
7
  if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {
8
8
  return buf.buffer;
@@ -172,4 +172,4 @@ export {
172
172
  classifyError,
173
173
  partExtension
174
174
  };
175
- //# sourceMappingURL=chunk-PID5JXOD.js.map
175
+ //# sourceMappingURL=chunk-2P7Y3BT3.js.map
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  assignTableIds,
4
4
  blocksToMarkdown
5
- } from "./chunk-XNBHWXMW.js";
5
+ } from "./chunk-N2Y5LEOQ.js";
6
6
 
7
7
  // src/chunks.ts
8
8
  var LIST_MARKER_RE = /^(?:[□■◇◆○◎●◦ㅇ•▪▸▶※-]|\d{1,3}[.)]|[가나다라마바사아자차카타파하][.)]|\([가나다라마바사아자차카타파하0-9]{1,3}\)|[①-⑳㉮-㉻㈎-㈛])\s/;
@@ -82,4 +82,4 @@ function blocksToChunks(blocks, options) {
82
82
  export {
83
83
  blocksToChunks
84
84
  };
85
- //# sourceMappingURL=chunk-UZPJUNWR.js.map
85
+ //# sourceMappingURL=chunk-44Y7SP3W.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  blocksToMarkdown
3
- } from "./chunk-UXOY3ZSD.js";
3
+ } from "./chunk-AI2YUNVV.js";
4
4
 
5
5
  // src/page-markdown.ts
6
6
  function blocksToPages(blocks, render = blocksToMarkdown) {
@@ -28,4 +28,4 @@ function blocksToPages(blocks, render = blocksToMarkdown) {
28
28
  export {
29
29
  blocksToPages
30
30
  };
31
- //# sourceMappingURL=chunk-O7VUAKBI.js.map
31
+ //# sourceMappingURL=chunk-4LOXBT7W.js.map
@@ -39,12 +39,12 @@ import {
39
39
  sanitizeText,
40
40
  tidyScriptTags,
41
41
  unframeLayoutTables
42
- } from "./chunk-UXOY3ZSD.js";
42
+ } from "./chunk-AI2YUNVV.js";
43
43
  import {
44
44
  KordocError,
45
45
  VERSION,
46
46
  sanitizeHref
47
- } from "./chunk-KDJQRKIG.js";
47
+ } from "./chunk-JSLRB4XE.js";
48
48
 
49
49
  // src/hwp5/to-hwpx/index.ts
50
50
  import JSZip from "jszip";
@@ -1942,7 +1942,6 @@ var FIELD_CLK = cid("%clk");
1942
1942
  var FIELD_UNK = cid("%unk");
1943
1943
  var NO_SPAN_CTRLS = /* @__PURE__ */ new Set([cid("tbl "), cid("gso "), cid("eqed"), cid("form"), cid("ole "), cid("tcps"), cid("tdut"), cid("idxm")]);
1944
1944
  var TEXT_CTRLS = /* @__PURE__ */ new Set([cid("fn "), cid("en "), cid("head"), cid("foot"), cid("tcmt")]);
1945
- var isFieldCtrl = (id) => id >>> 24 === 37;
1946
1945
  var KNOWN_CTRL_IDS = /* @__PURE__ */ new Set([
1947
1946
  CTRL_TBL,
1948
1947
  CTRL_GSO,
@@ -2161,7 +2160,7 @@ function parseParagraph(records, start, end, ctx) {
2161
2160
  }
2162
2161
  return false;
2163
2162
  };
2164
- const noSpan = ctx.plainText || inlined || fieldsApplied || toc.tocEntry || text.includes("\n") || ctrls.some((c) => NO_SPAN_CTRLS.has(c.id) || isFieldCtrl(c.id) || TEXT_CTRLS.has(c.id) && holdsText(c));
2163
+ const noSpan = ctx.plainText || inlined || fieldsApplied || toc.tocEntry || text.includes("\n") || ctrls.some((c) => NO_SPAN_CTRLS.has(c.id) || TEXT_CTRLS.has(c.id) && holdsText(c));
2165
2164
  const spans = !noSpan ? emphasisSpans(state, text) : void 0;
2166
2165
  if (memoAnchors.length) {
2167
2166
  const plain = (t) => resolveLiteralLt(t.replaceAll(LITERAL_DOLLAR_MARK, "$")).replace(/\\</g, "<").replace(/[ \t]+/g, " ").trim();
@@ -3956,7 +3955,7 @@ var SHADOW_TYPES2 = [
3956
3955
  "SHEAR_LEFTTOP",
3957
3956
  "SHEAR_RIGHTTOP"
3958
3957
  ];
3959
- function lineShapeXml(lineColor, width, a, outline) {
3958
+ function lineShapeXml(lineColor, width, a, outline, alpha = 0) {
3960
3959
  return el("hp:lineShape", [
3961
3960
  ["color", color(lineColor)],
3962
3961
  ["width", width],
@@ -3969,18 +3968,17 @@ function lineShapeXml(lineColor, width, a, outline) {
3969
3968
  ["headSz", pick(ARROW_SIZES, bits(a, 22, 4))],
3970
3969
  ["tailSz", pick(ARROW_SIZES, bits(a, 26, 4))],
3971
3970
  ["outlineStyle", pick(OUTLINE_STYLES, outline)],
3972
- ["alpha", 0]
3971
+ ["alpha", alpha]
3973
3972
  ]);
3974
3973
  }
3975
3974
  function drawingStyle(k, ctx) {
3976
3975
  const c = k.rest;
3977
3976
  const lineColor = c.u32(), width = c.i32(), a = c.u32(), outline = c.u8();
3978
- const line = lineShapeXml(lineColor, width, a, outline);
3979
3977
  const fill = fillBrushXml(c, ctx.binRef);
3980
3978
  const sType = c.u32(), sColor = c.u32(), sx = c.i32(), sy = c.i32();
3981
3979
  const instId = c.u32();
3982
- c.u8();
3983
- const sAlpha = c.u8();
3980
+ const lineAlpha = c.u8(), sAlpha = c.u8();
3981
+ const line = lineShapeXml(lineColor, width, a, outline, lineAlpha);
3984
3982
  const shadow = el("hp:shadow", [["type", pick(SHADOW_TYPES2, sType)], ["color", color(sColor)], ["offsetX", sx], ["offsetY", sy], ["alpha", sAlpha]]);
3985
3983
  return { xml: line + fill + shadow, instId };
3986
3984
  }
@@ -5272,7 +5270,7 @@ async function convertToHwpx(input, options) {
5272
5270
  if (format === "hwpx") return { data: bytes, mode: "preserve", warnings: ["\uC774\uBBF8 HWPX \uBB38\uC11C\uC785\uB2C8\uB2E4 \u2014 \uADF8\uB300\uB85C \uB461\uB2C8\uB2E4"] };
5273
5271
  if (format !== "hwp3" && format !== "hwpml") throw new KordocError(`HWP \uBB38\uC11C\uAC00 \uC544\uB2D9\uB2C8\uB2E4 (${format})`);
5274
5272
  const { parse } = await import("./index.js");
5275
- const { markdownToHwpx } = await import("./generator-HR2PEYUQ.js");
5273
+ const { markdownToHwpx } = await import("./generator-MIX4R7HL.js");
5276
5274
  const parsed = await parse(ab, { password: options?.password });
5277
5275
  if (!parsed.success) throw new KordocError(parsed.error ?? "\uBB38\uC11C\uB97C \uC77D\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4");
5278
5276
  return {
@@ -5334,4 +5332,4 @@ export {
5334
5332
  hwpToHwpx,
5335
5333
  convertToHwpx
5336
5334
  };
5337
- //# sourceMappingURL=chunk-2C5YWTFM.js.map
5335
+ //# sourceMappingURL=chunk-64CA5E3N.js.map