kordoc 4.12.2 → 4.13.0
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.
- package/README.md +32 -1
- package/dist/{-EZH6NKTE.js → -UZDRUWTX.js} +43 -22
- package/dist/{chunk-FBLMVHDK.js → chunk-27QN27I3.js} +2 -2
- package/dist/{chunk-MUYU4JI5.js → chunk-2B45S7FM.js} +2 -2
- package/dist/{chunk-LD2K4K5V.js → chunk-2RREQZ44.js} +1662 -652
- package/dist/chunk-2RREQZ44.js.map +1 -0
- package/dist/{chunk-OEYECZGV.js → chunk-3ABHPKYA.js} +10 -6
- package/dist/chunk-3ABHPKYA.js.map +1 -0
- package/dist/{chunk-QM2RSJ2S.js → chunk-3MCFJIN2.js} +5 -5
- package/dist/{chunk-JCMBQC5N.js → chunk-5VHLKNCE.js} +2 -2
- package/dist/{chunk-FVBR7SC3.js → chunk-6JXMIX3G.js} +2 -2
- package/dist/chunk-6JXMIX3G.js.map +1 -0
- package/dist/{chunk-5RPYBC2Q.js → chunk-6NLXGGNH.js} +37 -6
- package/dist/chunk-6NLXGGNH.js.map +1 -0
- package/dist/{chunk-2B7OIEJJ.js → chunk-AGBFCFQY.js} +10 -6
- package/dist/chunk-AGBFCFQY.js.map +1 -0
- package/dist/{rasterize-NRWP2C6L.js → chunk-BQLZOQES.js} +22 -6
- package/dist/chunk-BQLZOQES.js.map +1 -0
- package/dist/{chunk-ONNAHSPV.cjs → chunk-CKMK42FV.cjs} +18 -14
- package/dist/chunk-CKMK42FV.cjs.map +1 -0
- package/dist/{chunk-T7GRHAIW.cjs → chunk-COUGOFT3.cjs} +1 -1
- package/dist/chunk-COUGOFT3.cjs.map +1 -0
- package/dist/{chunk-2LO525TL.js → chunk-F3FEIYI7.js} +2 -2
- package/dist/{chunk-Q6ETEJFK.js → chunk-GWFX5ZD7.js} +11 -7
- package/dist/chunk-GWFX5ZD7.js.map +1 -0
- package/dist/{chunk-2HBYWA5X.js → chunk-H5JWPWQP.js} +2 -2
- package/dist/{chunk-N3DLQ2YH.js → chunk-HG5LXXCC.js} +1 -1
- package/dist/chunk-HG5LXXCC.js.map +1 -0
- package/dist/{chunk-KX7IYCCZ.js → chunk-IEJR23OA.js} +3 -3
- package/dist/{chunk-7XUXSDH5.js → chunk-ILDTN72S.js} +10 -6
- package/dist/chunk-ILDTN72S.js.map +1 -0
- package/dist/{chunk-QBCMFNHS.js → chunk-L3CEPNQS.js} +2 -2
- package/dist/{chunk-XXDZ2KTW.js → chunk-LP5RTYFM.js} +2 -2
- package/dist/{chunk-2LKYJ4G3.cjs → chunk-MCD45IHO.cjs} +6 -6
- package/dist/{chunk-2LKYJ4G3.cjs.map → chunk-MCD45IHO.cjs.map} +1 -1
- package/dist/{chunk-V5BUPZ6I.cjs → chunk-OJV7HNGJ.cjs} +13 -9
- package/dist/chunk-OJV7HNGJ.cjs.map +1 -0
- package/dist/{chunk-DBGEUDBY.js → chunk-OSLJ3A6D.js} +2 -2
- package/dist/{chunk-2LPBIW2B.cjs → chunk-S2VKZKUX.cjs} +3 -3
- package/dist/{chunk-2LPBIW2B.cjs.map → chunk-S2VKZKUX.cjs.map} +1 -1
- package/dist/{chunk-IOJX4Q63.js → chunk-T7AFLXGA.js} +786 -19
- package/dist/chunk-T7AFLXGA.js.map +1 -0
- package/dist/{chunk-UL2MDA5C.js → chunk-TA2LEFOF.js} +3 -3
- package/dist/{chunk-62IU4NV3.cjs → chunk-TAYCQE6K.cjs} +2 -2
- package/dist/{chunk-62IU4NV3.cjs.map → chunk-TAYCQE6K.cjs.map} +1 -1
- package/dist/{chunk-ONQHGZTS.js → chunk-XVIJLHCW.js} +1 -1
- package/dist/chunk-XVIJLHCW.js.map +1 -0
- package/dist/chunks-G3GK536Y.js +10 -0
- package/dist/cli.js +187 -38
- package/dist/cli.js.map +1 -1
- package/dist/{formula-6RQX4NMJ.js → formula-3T7HQA4O.js} +4 -4
- package/dist/{formula-NW33S4TA.js → formula-FWVAOSIK.js} +3 -3
- package/dist/{formula-NBEO6CFC.cjs → formula-YALEMZMF.cjs} +9 -9
- package/dist/{formula-NBEO6CFC.cjs.map → formula-YALEMZMF.cjs.map} +1 -1
- package/dist/{image-ocr-SO56VETS.js → image-ocr-2M7K3CE5.js} +8 -8
- package/dist/{image-ocr-V4KY373B.cjs → image-ocr-4EUZIF6M.cjs} +12 -12
- package/dist/{image-ocr-V4KY373B.cjs.map → image-ocr-4EUZIF6M.cjs.map} +1 -1
- package/dist/{image-ocr-CAVU2TNZ.js → image-ocr-X3I2HUK2.js} +6 -6
- package/dist/index.cjs +2349 -576
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +305 -12
- package/dist/index.d.ts +305 -12
- package/dist/index.js +1980 -207
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +109 -35
- package/dist/mcp.js.map +1 -1
- package/dist/{model-bundle-EIJF34DR.js → model-bundle-XXYZ6ELQ.js} +5 -5
- package/dist/{models-6V4CPQXC.js → models-APDSXJW7.js} +5 -5
- package/dist/{parser-OMT25WH2.cjs → parser-4KE2FR5F.cjs} +60 -39
- package/dist/parser-4KE2FR5F.cjs.map +1 -0
- package/dist/{parser-OBHNXEQM.js → parser-T5R4YVZS.js} +32 -11
- package/dist/parser-T5R4YVZS.js.map +1 -0
- package/dist/{parser-GIREMEPD.js → parser-XKSOS6GY.js} +32 -11
- package/dist/parser-XKSOS6GY.js.map +1 -0
- package/dist/pdf-ocr-JZKCEKWX.cjs +14 -0
- package/dist/{pdf-ocr-TFYVK4FI.cjs.map → pdf-ocr-JZKCEKWX.cjs.map} +1 -1
- package/dist/pdf-ocr-X62B7YDV.js +13 -0
- package/dist/pdf-ocr-YDJQEGDS.js +16 -0
- package/dist/{profile-io-PZVMM66V.js → profile-io-Y24GOHWM.js} +3 -3
- package/dist/rasterize-QCOBWHAG.js +13 -0
- package/dist/render-DHFQQCSV.js +38 -0
- package/dist/seal-UTHFQPLO.js +10 -0
- package/dist/seal-UTHFQPLO.js.map +1 -0
- package/dist/{setup-V55AJP6H.js → setup-UWX3KH3G.js} +3 -3
- package/dist/visual-DF2KSPEC.js +19 -0
- package/dist/visual-DF2KSPEC.js.map +1 -0
- package/dist/{watch-7CQSMDDP.js → watch-4ZUTMC3Q.js} +15 -13
- package/dist/{watch-7CQSMDDP.js.map → watch-4ZUTMC3Q.js.map} +1 -1
- package/package.json +1 -1
- package/dist/chunk-2B7OIEJJ.js.map +0 -1
- package/dist/chunk-5RPYBC2Q.js.map +0 -1
- package/dist/chunk-7XUXSDH5.js.map +0 -1
- package/dist/chunk-FVBR7SC3.js.map +0 -1
- package/dist/chunk-IOJX4Q63.js.map +0 -1
- package/dist/chunk-LD2K4K5V.js.map +0 -1
- package/dist/chunk-N3DLQ2YH.js.map +0 -1
- package/dist/chunk-OEYECZGV.js.map +0 -1
- package/dist/chunk-ONNAHSPV.cjs.map +0 -1
- package/dist/chunk-ONQHGZTS.js.map +0 -1
- package/dist/chunk-Q6ETEJFK.js.map +0 -1
- package/dist/chunk-T7GRHAIW.cjs.map +0 -1
- package/dist/chunk-V5BUPZ6I.cjs.map +0 -1
- package/dist/chunks-TT7ZE5QQ.js +0 -10
- package/dist/parser-GIREMEPD.js.map +0 -1
- package/dist/parser-OBHNXEQM.js.map +0 -1
- package/dist/parser-OMT25WH2.cjs.map +0 -1
- package/dist/pdf-ocr-IRXQ5GBM.js +0 -13
- package/dist/pdf-ocr-SL4GCOGS.js +0 -16
- package/dist/pdf-ocr-TFYVK4FI.cjs +0 -14
- package/dist/rasterize-NRWP2C6L.js.map +0 -1
- package/dist/render-V5ZPTZQ7.js +0 -10
- package/dist/seal-LVG2DGAB.js +0 -10
- /package/dist/{-EZH6NKTE.js.map → -UZDRUWTX.js.map} +0 -0
- /package/dist/{chunk-FBLMVHDK.js.map → chunk-27QN27I3.js.map} +0 -0
- /package/dist/{chunk-MUYU4JI5.js.map → chunk-2B45S7FM.js.map} +0 -0
- /package/dist/{chunk-QM2RSJ2S.js.map → chunk-3MCFJIN2.js.map} +0 -0
- /package/dist/{chunk-JCMBQC5N.js.map → chunk-5VHLKNCE.js.map} +0 -0
- /package/dist/{chunk-2LO525TL.js.map → chunk-F3FEIYI7.js.map} +0 -0
- /package/dist/{chunk-2HBYWA5X.js.map → chunk-H5JWPWQP.js.map} +0 -0
- /package/dist/{chunk-KX7IYCCZ.js.map → chunk-IEJR23OA.js.map} +0 -0
- /package/dist/{chunk-QBCMFNHS.js.map → chunk-L3CEPNQS.js.map} +0 -0
- /package/dist/{chunk-XXDZ2KTW.js.map → chunk-LP5RTYFM.js.map} +0 -0
- /package/dist/{chunk-DBGEUDBY.js.map → chunk-OSLJ3A6D.js.map} +0 -0
- /package/dist/{chunk-UL2MDA5C.js.map → chunk-TA2LEFOF.js.map} +0 -0
- /package/dist/{chunks-TT7ZE5QQ.js.map → chunks-G3GK536Y.js.map} +0 -0
- /package/dist/{formula-6RQX4NMJ.js.map → formula-3T7HQA4O.js.map} +0 -0
- /package/dist/{formula-NW33S4TA.js.map → formula-FWVAOSIK.js.map} +0 -0
- /package/dist/{image-ocr-SO56VETS.js.map → image-ocr-2M7K3CE5.js.map} +0 -0
- /package/dist/{image-ocr-CAVU2TNZ.js.map → image-ocr-X3I2HUK2.js.map} +0 -0
- /package/dist/{model-bundle-EIJF34DR.js.map → model-bundle-XXYZ6ELQ.js.map} +0 -0
- /package/dist/{models-6V4CPQXC.js.map → models-APDSXJW7.js.map} +0 -0
- /package/dist/{pdf-ocr-IRXQ5GBM.js.map → pdf-ocr-X62B7YDV.js.map} +0 -0
- /package/dist/{pdf-ocr-SL4GCOGS.js.map → pdf-ocr-YDJQEGDS.js.map} +0 -0
- /package/dist/{profile-io-PZVMM66V.js.map → profile-io-Y24GOHWM.js.map} +0 -0
- /package/dist/{render-V5ZPTZQ7.js.map → rasterize-QCOBWHAG.js.map} +0 -0
- /package/dist/{seal-LVG2DGAB.js.map → render-DHFQQCSV.js.map} +0 -0
- /package/dist/{setup-V55AJP6H.js.map → setup-UWX3KH3G.js.map} +0 -0
package/README.md
CHANGED
|
@@ -89,6 +89,37 @@ MCP 등록 대신 스킬(SKILL.md) 형태로 쓰려면:
|
|
|
89
89
|
|
|
90
90
|
---
|
|
91
91
|
|
|
92
|
+
## v4.13.0 변경사항
|
|
93
|
+
|
|
94
|
+
공문서 생성 엔진을 다시 설계했습니다(v5). 서울 정보소통광장 결재문서 **629건을 전수 실측**해 위계·글꼴·들여쓰기·골격을 스킴 하나에 박고, 기안문·보고서·계획서·통지·회의록 생성을 새 엔진으로 갈아탔습니다. 어떤 형태의 마크다운(`#/##/###`, 리스트, □ ㅇ - 1. 가. 명시 부호)을 던져도 같은 위계로 나옵니다.
|
|
95
|
+
|
|
96
|
+
- **📐 위계 = 실결재 그대로**: 개조식형 □ HY견고딕 17pt 굵게(0타) → ㅇ 한컴돋움 15pt 굵게(1타) → - 휴먼명조 14pt(3타) → ㆍ, ※ 한컴돋움 14. 법정형 굴림체 12pt 160%, `1.` 0타 → `가.` 2타 → `1)` 4타(2타 계단), 내어쓰기는 부호폭+1타. 표는 한컴돋움 12(헤더 굵게·#DFE6F7). 근거는 `docs/gongmunseo-reference.md` 2.8.
|
|
97
|
+
- **📏 □·제목은 절대 두 줄로 안 꺾입니다**: 장평 → 자간 → 글자 크기 순으로 줄여 한 줄에 담고(실측 관행), 그래도 안 되면 경고합니다. 표 셀도 12→11→10pt 자동 축소.
|
|
98
|
+
- **📋 기안문 두문표·결문표**: 실결재 표 그대로 — 슬로건·기관명(굴림 20 굵게 자간띄움)·수신/(경유)/제목, 발신명의·회색 띠·결재선(직위/성명/일자)·협조자·시행/접수·주소·전화/전송/이메일/공개구분. 수신이 '내부결재'면 발신명의 생략. `--doc-head "org=광진구,slogan=…,to=…,title=…"` `--doc-foot "sender=…,drafter=주무관 홍길동,…,zip=…"`.
|
|
99
|
+
- **📑 보고서(서울 실무 보고서형)**: 제목표(HY헤드라인M 25 굵게, 상 0.4mm/하 0.15mm) + 담당자 행(`--report-info`) + 요약박스(`--summary` 또는 제목 직후 `>`) + `Ⅰ. Ⅱ.` 장(h2) + □/ㅇ/- 본문. `--cover --dept 스마트도시과 --doc-info "docNum=…"` 로 표지(문서정보표·결재선·파랑 띠 제목·기관명).
|
|
100
|
+
- **✍️ 실무 디테일**: `출처:`/`자료:`/`근거:` 줄은 자동으로 ※ 참고(13pt 작은 글씨), 둘째 줄이 한 줄의 20% 이내로 삐져나온 항목은 자간을 줄여(Shift+Alt+N 관행) 한 줄에 담고, 줄바꿈은 실결재 76%가 쓰는 글자 단위+양쪽정렬(어절 유지는 긴 어절 앞 줄이 벌어져 기각, 영문·숫자는 단어 유지), 법령 코드 `(282791)`·KOSIS 표 ID `DT_…`·"○○ MCP 조회" 같은 내부 식별자는 자동 제거. 보고서는 제목 직후 인용문(`>`) 한 문장("…하고자 함", 부호 없이 3줄 이내)이 요약박스가 됩니다(없거나 넘치면 경고).
|
|
101
|
+
- **⚙️ 기본값 변경**: 기안문 본문 굴림체 12(함초롬바탕은 `--font myeongjo`), 보고서·계획서 여백 13/13/18/18·줄간격 180%·2단계 부호 ㅇ(중앙부처 개조식만 ○), h2는 장(`--h2-marker roman|number|box|none`). 개조식(`개조식` 프리셋)·보도자료는 종전 그대로.
|
|
102
|
+
- **🏷️ 장 제목 띠 표**: 보고서·계획서의 `## 장 제목`이 로마자 채움 칸 + 제목 칸(밑줄) 표로 나옵니다(계획서 실결재 37~39% 관행). 종전 `Ⅰ. 제목` 텍스트는 `--h2-marker roman`. 맥 한컴에서 글꼴 칸이 비고 스타일이 영문명으로 뜨던 산출물 결함도 수정(7개 언어 글꼴 슬롯 통일·`langID`).
|
|
103
|
+
- **📊 표 열폭은 중요도 순**: `비고`·`근거`·`참고`·`담당`·`연락처` 열과 내용 열이 있는 표의 마지막 열은 25% 이내로 좁게(실결재 462표에서 비고 열 중앙값 21%), `내용`·`사항`·`실적`·`계획`류 열은 넓게(중앙값 51%) 왼쪽 정렬. 긴 근거 텍스트가 최광열을 차지하고 내용이 두 줄로 꺾이던 결함. 요약박스는 문단 좌우 여백 1000(실측 55%)으로 글자가 테두리에 붙지 않습니다.
|
|
104
|
+
- **📊 코퍼스**: `bench/corpus-gen/opengov-2609/` 7종 필터 280건 추가(계획·결과보고·방침·안내·회의·2024·2022).
|
|
105
|
+
- **💰 금액 한글 병기 자동 계산**: `금113,560원` 처럼 한글 병기가 빠진 금액은 경고와 함께 `금113,560원(금일십일만삼천오백육십원)` 실제 값을 제안합니다(규정 시행규칙 제2조). 하이픈 날짜 `2026-07-18` 도 잡아서 `2026. 7. 18.` 로 바꿔 줍니다(URL·파일명·표 셀은 제외).
|
|
106
|
+
- **🔣 항목 부호 확장**: `❑ ❏ ㅁ`(대항목)·`◎`(중항목)·`ㅡ ‣ ▪ ▫`(세부) 도 □/ㅇ/- 와 같은 위계로 읽습니다.
|
|
107
|
+
- **🖼️ 렌더 통합 계층 (#75)**: `renderDocument(파일, { format: "svg"|"html"|"png"|"jpeg"|"pdf", pages: "2-4" })` 하나로 페이지별 SVG·자급자족 레이아웃 HTML·페이지별 PNG/JPEG·PDF(Chromium 필요)를 냅니다. 렌더 결과에는 문단·표·이미지·도형의 **페이지 로컬 pt bbox 와 결정적 id**(`RenderScene.regions`, SVG `data-kordoc-id`)가 붙고, `extractRenderedRegions()` / `kordoc crop 문서.hwpx --target table -d ./regions` 로 그 영역을 실배율로 잘라냅니다. `kordoc render --format png --pages 2-4 -d ./pages`, MCP `render_document` 의 `pages`, `crop_regions`. HWP5 렌더는 후속.
|
|
108
|
+
- **🧭 표 분류·시각 추출 (#76)**: `parse(파일, { classifyTables: true })` 로 표마다 `semantic-table`(데이터표) / `non-tabular-layout`(표를 캔버스로 쓴 조직도·연락망) / `uncertain` 분류가 붙습니다(휴리스틱, 네트워크·LLM 없음, 중첩표 독립 분류). `extractTables(파일)` / `kordoc tables 문서.hwpx --visual non-tabular-and-uncertain -d ./tables` 는 분류 + 렌더 영역 + crop 을 한 번에 — 조직도는 이미지로, 데이터표는 구조로 넘기는 멀티모달 파이프라인용. 병합 없는 단순 표의 셀 이미지가 마크다운에서 사라지던 결함도 함께 수정.
|
|
109
|
+
|
|
110
|
+
## v4.12.3 변경사항
|
|
111
|
+
|
|
112
|
+
공문서 작성 쪽 라운드. 실결재 기안문 206건·보고서 337건의 항목부호 단계별 글꼴을 실측해 **위계 폰트 옵션**을 넣고, 표기법 검수의 쌍점·날짜 룰 오탐을 법정 서식 근거로 좁혔습니다. 별표 코퍼스 3차(183쌍)를 더해 게이트 모수는 hwpx ~1,390·pdf ~950·hwp쌍 ~860 입니다.
|
|
113
|
+
|
|
114
|
+
- **🔤 위계 폰트 `levels`**: 항목부호 단계(0~7)마다 글꼴·크기·굵기를 지정합니다 — `--levels "0=HY견고딕/17/bold,1=한컴돋움/15/bold,2=휴먼명조/14"`, MCP `levels`. 실측: 법정 8단계(1. 가. 1))는 본문과 동일이 90% 라 기본값은 그대로이고, 전자결재 기안문의 □/ㅇ/- 계열은 □ HY견고딕 +2~3pt 굵게 · ㅇ 한컴돋움 굵게 · - 휴먼명조가 지배 관행입니다(`docs/gongmunseo-reference.md` 2.7). 내어쓰기 폭도 그 단계 글자 크기로 맞춥니다. 미지정이면 산출물 불변.
|
|
115
|
+
- **📝 표기법 룰 좁힘**: `COLON_SPACE` 는 표 셀을 건너뜁니다 — 법정 별지서식 자체가 "성 명 :" 라벨 셀을 쓰므로(서식 595건의 표 셀 801건 전부 라벨) 규칙 대상이 아닙니다. 본문의 "일 시 : 값"(기안문 206건 중 100건, 414건)은 편람상 위반이라 그대로 경고합니다. HTML 태그·마크다운 강조 닫힘 뒤 쌍점("성명:</td>", "과정:** 붙임") 오탐도 제거. `DATE_NO_SPACE` 는 법제처 연혁 표기(`<개정 2012.2.14>`·`삭제 <2016.2.29.>`·`[시행일:2017.9.8.]`)를 제외합니다(서식 156건 → 10건). 기안문의 문서번호 인용 "○○과-123(2026.7.1.)호"(103건)는 편람 날짜 표기 위반이라 유지.
|
|
116
|
+
- **📄 PDF 가운뎃점**: 한컴 PDF 가 가운뎃점(ㆍ)을 조합형 아래아(U+119E)로 내던 것을 되돌립니다(별지서식 573쌍 실측 340자·41문서).
|
|
117
|
+
- **📄 PDF 1×1 표 줄 보존**: 선서문 안쪽 상자처럼 중첩표 없는 1×1 표는 줄마다 문단으로 내어 "선 서 나는 헌법을 …" 처럼 제목 줄이 본문에 붙지 않습니다(표 셀 줄바꿈 보존 정책과 정합).
|
|
118
|
+
- **📄 PDF 제목 아래 틀**: 테두리 없는 1칸 틀(별표 1×1 프레임·선서문 바깥 틀)을 "페이지 반복 클립" 으로 가르려던 가설은 반증됐고(본문 영역 클립은 쪽마다 좌표가 다르고 별표는 1쪽), 대신 **제목 아래(윗변 ≥ 20%)·본문 폭(≥ 60%)·위에 글이 있는** 컨테이너를 틀로 봅니다. 채용공고 2단 상자는 폭 조건으로 제외(pdf-table-gt 게이트 유지).
|
|
119
|
+
- **🖋️ HWP 결재 기호 하나 더**: 한컴 PDF 실렌더로 확인한 네모 안 "인"(U+F00E1, HWP5 A0E1)을 "(인)" 으로 냅니다. HWP5 하이픈 제어문자(0x18)는 한컴이 그리지 않으므로("60g/㎡") 더 이상 "-" 를 내지 않습니다.
|
|
120
|
+
- **📊 별표 코퍼스 3차**: `licbyl-byl2/` 183쌍(seed 20260907). 하위 30건 분해 — 1×1 틀 PDF 미감지 8 · HWP 레이아웃 해체 vs PDF 1열 유지 15 · 구조 차 7(수식 셀·쪽 경계 셀 분할·줄바꿈, 파서 결함 없음). HWP↔PDF 셀 일치 별표 0.728 → 0.746, 3차 0.772 → 0.787, 서식 0.965 유지.
|
|
121
|
+
|
|
122
|
+
|
|
92
123
|
## v4.12.2 변경사항
|
|
93
124
|
|
|
94
125
|
별지서식 라운드 2. 코퍼스를 서식 279쌍·별표 90쌍 더 모아(총 1,995파일) HWP·HWPX·PDF 세 파서가 **같은 IR 모양**을 내도록 맞췄습니다. HWP↔PDF 셀 텍스트 일치 0.927 → 0.965, PDF 표 GT cellExact 0.945 → 0.980 을 실측했고 게이트 플로어를 그 수치로 올렸습니다.
|
|
@@ -371,7 +402,7 @@ rhwp 최신 devel(v0.8.3~0.8.4)을 훑어 kordoc 의 HWP3 디코더에 반영했
|
|
|
371
402
|
|
|
372
403
|
## v3.10.0 변경사항
|
|
373
404
|
|
|
374
|
-
- **🖼️ 레이아웃 보존 렌더**: `kordoc render 문서.hwpx -o 문서.svg` / `renderHwpxToSvg(buffer)` — 한컴이 저장한 조판 캐시(줄 좌표·셀 그리드·개체 앵커)를 SVG 절대배치로 그려 원본 레이아웃을 재현합니다. run별 글자 크기/굵기/색/장평/자간, 문단 정렬, 셀 배경·테두리, 병합 셀, 인라인 개체, 이미지 크롭까지. 한컴 저장본 전용(1페이지).
|
|
405
|
+
- **🖼️ 레이아웃 보존 렌더**: `kordoc render 문서.hwpx -o 문서.svg` / `renderHwpxToSvg(buffer)` (v4.13.0: `renderDocument` 로 HTML·PNG·JPEG·PDF·페이지 선택·영역 crop) — 한컴이 저장한 조판 캐시(줄 좌표·셀 그리드·개체 앵커)를 SVG 절대배치로 그려 원본 레이아웃을 재현합니다. run별 글자 크기/굵기/색/장평/자간, 문단 정렬, 셀 배경·테두리, 병합 셀, 인라인 개체, 이미지 크롭까지. 한컴 저장본 전용(1페이지).
|
|
375
406
|
- **🔧 uint32 음수 좌표**: `vertOffset="4294967103"`(= −193) 같은 uint32 저장 음수를 올바르게 해석합니다.
|
|
376
407
|
- **🔧 셀 내부 COLUMN 기준계**: 셀 안 개체의 `horzRelTo="COLUMN"`을 셀 영역 기준으로 해석합니다 (사진이 페이지 왼쪽으로 튀던 문제).
|
|
377
408
|
|
|
@@ -5,15 +5,16 @@ import {
|
|
|
5
5
|
PRESET_ALIAS,
|
|
6
6
|
ValueCursor,
|
|
7
7
|
blocksToPages,
|
|
8
|
-
|
|
8
|
+
chooseTableRepresentation,
|
|
9
|
+
classifyTable,
|
|
10
|
+
classifyTableTree,
|
|
11
|
+
collectTableBlocks,
|
|
9
12
|
compare,
|
|
10
|
-
detectFormat,
|
|
11
|
-
detectOle2Format,
|
|
12
|
-
detectZipFormat,
|
|
13
13
|
diffBlocks,
|
|
14
14
|
extractClickHereFields,
|
|
15
15
|
extractFormFields,
|
|
16
16
|
extractFormSchema,
|
|
17
|
+
extractTables,
|
|
17
18
|
fillForm,
|
|
18
19
|
fillFormFields,
|
|
19
20
|
fillHwpx,
|
|
@@ -23,16 +24,11 @@ import {
|
|
|
23
24
|
hwpxToProfile,
|
|
24
25
|
incompatibleGongmunWarnings,
|
|
25
26
|
inferFieldType,
|
|
26
|
-
isHwpxFile,
|
|
27
27
|
isKnownFont,
|
|
28
28
|
isLabelCell,
|
|
29
|
-
isOldHwpFile,
|
|
30
|
-
isPdfFile,
|
|
31
|
-
isZipFile,
|
|
32
29
|
lintGongmunText,
|
|
33
30
|
lintMuncheText,
|
|
34
31
|
markdownToHwpx,
|
|
35
|
-
markdownToPdf,
|
|
36
32
|
muncheLintWarnings,
|
|
37
33
|
normalizeGongmunPreset,
|
|
38
34
|
openHwpxDocument,
|
|
@@ -51,22 +47,20 @@ import {
|
|
|
51
47
|
patchHwpxBlocks,
|
|
52
48
|
readBuiltinTemplate,
|
|
53
49
|
readBuiltinTemplateSample,
|
|
54
|
-
renderHtml,
|
|
55
50
|
resolveBuiltinTemplate,
|
|
56
51
|
unknownFontWarnings,
|
|
57
52
|
usesGaejosikMunche,
|
|
58
53
|
validateHwpx
|
|
59
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-2RREQZ44.js";
|
|
60
55
|
import "./chunk-7FCNOKOR.js";
|
|
61
|
-
import "./chunk-
|
|
62
|
-
import "./chunk-MOL7MDBG.js";
|
|
56
|
+
import "./chunk-HG5LXXCC.js";
|
|
63
57
|
import {
|
|
64
58
|
applySplices,
|
|
65
59
|
buildParagraphSplices,
|
|
66
60
|
buildRangeSplices,
|
|
67
61
|
placeSealHwpx,
|
|
68
62
|
scanSectionXml
|
|
69
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-IEJR23OA.js";
|
|
70
64
|
import {
|
|
71
65
|
DEFAULT_REDACT_RULES,
|
|
72
66
|
redactMarkdown,
|
|
@@ -74,24 +68,41 @@ import {
|
|
|
74
68
|
} from "./chunk-DZIXKL7E.js";
|
|
75
69
|
import {
|
|
76
70
|
blocksToChunks
|
|
77
|
-
} from "./chunk-
|
|
78
|
-
import {
|
|
79
|
-
blocksToMarkdown
|
|
80
|
-
} from "./chunk-Q6ETEJFK.js";
|
|
71
|
+
} from "./chunk-OSLJ3A6D.js";
|
|
81
72
|
import {
|
|
82
73
|
SPACE_EM_FIXED,
|
|
83
74
|
SPACE_EM_FONT,
|
|
75
|
+
blocksToPdf,
|
|
84
76
|
charWidthEm1000,
|
|
77
|
+
detectFormat,
|
|
78
|
+
detectOle2Format,
|
|
79
|
+
detectZipFormat,
|
|
80
|
+
extractRenderedRegions,
|
|
85
81
|
fitRatioForFewerLines,
|
|
82
|
+
isHwpxFile,
|
|
83
|
+
isOldHwpFile,
|
|
84
|
+
isPdfFile,
|
|
85
|
+
isZipFile,
|
|
86
|
+
markdownToPdf,
|
|
86
87
|
measureTextWidth,
|
|
88
|
+
renderDocument,
|
|
89
|
+
renderDocumentToScene,
|
|
90
|
+
renderHtml,
|
|
87
91
|
renderHwpxToSvg,
|
|
92
|
+
renderSceneToHtml,
|
|
88
93
|
simulateWrap,
|
|
89
94
|
simulateWrapKeepWord
|
|
90
|
-
} from "./chunk-
|
|
91
|
-
import "./chunk-
|
|
95
|
+
} from "./chunk-T7AFLXGA.js";
|
|
96
|
+
import "./chunk-MOL7MDBG.js";
|
|
97
|
+
import "./chunk-6JXMIX3G.js";
|
|
98
|
+
import {
|
|
99
|
+
blocksToMarkdown,
|
|
100
|
+
hasStructuredCellContent
|
|
101
|
+
} from "./chunk-GWFX5ZD7.js";
|
|
102
|
+
import "./chunk-BQLZOQES.js";
|
|
92
103
|
import {
|
|
93
104
|
VERSION
|
|
94
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-27QN27I3.js";
|
|
95
106
|
export {
|
|
96
107
|
BUILTIN_TEMPLATES,
|
|
97
108
|
DEFAULT_REDACT_RULES,
|
|
@@ -109,6 +120,10 @@ export {
|
|
|
109
120
|
buildParagraphSplices,
|
|
110
121
|
buildRangeSplices,
|
|
111
122
|
charWidthEm1000,
|
|
123
|
+
chooseTableRepresentation,
|
|
124
|
+
classifyTable,
|
|
125
|
+
classifyTableTree,
|
|
126
|
+
collectTableBlocks,
|
|
112
127
|
compare,
|
|
113
128
|
detectFormat,
|
|
114
129
|
detectOle2Format,
|
|
@@ -117,6 +132,8 @@ export {
|
|
|
117
132
|
extractClickHereFields,
|
|
118
133
|
extractFormFields,
|
|
119
134
|
extractFormSchema,
|
|
135
|
+
extractRenderedRegions,
|
|
136
|
+
extractTables,
|
|
120
137
|
fillForm,
|
|
121
138
|
fillFormFields,
|
|
122
139
|
fillHwpx,
|
|
@@ -124,6 +141,7 @@ export {
|
|
|
124
141
|
fitRatioForFewerLines,
|
|
125
142
|
formatFillValue,
|
|
126
143
|
gongmunLintWarnings,
|
|
144
|
+
hasStructuredCellContent,
|
|
127
145
|
hwpxToProfile,
|
|
128
146
|
incompatibleGongmunWarnings,
|
|
129
147
|
inferFieldType,
|
|
@@ -159,8 +177,11 @@ export {
|
|
|
159
177
|
readBuiltinTemplateSample,
|
|
160
178
|
redactMarkdown,
|
|
161
179
|
redactText,
|
|
180
|
+
renderDocument,
|
|
181
|
+
renderDocumentToScene,
|
|
162
182
|
renderHtml,
|
|
163
183
|
renderHwpxToSvg,
|
|
184
|
+
renderSceneToHtml,
|
|
164
185
|
resolveBuiltinTemplate,
|
|
165
186
|
scanSectionXml,
|
|
166
187
|
simulateWrap,
|
|
@@ -169,4 +190,4 @@ export {
|
|
|
169
190
|
usesGaejosikMunche,
|
|
170
191
|
validateHwpx
|
|
171
192
|
};
|
|
172
|
-
//# sourceMappingURL=-
|
|
193
|
+
//# sourceMappingURL=-UZDRUWTX.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
// src/utils.ts
|
|
4
|
-
var VERSION = true ? "4.
|
|
4
|
+
var VERSION = true ? "4.13.0" : "0.0.0-dev";
|
|
5
5
|
function toArrayBuffer(buf) {
|
|
6
6
|
if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {
|
|
7
7
|
return buf.buffer;
|
|
@@ -123,4 +123,4 @@ export {
|
|
|
123
123
|
safeMax,
|
|
124
124
|
classifyError
|
|
125
125
|
};
|
|
126
|
-
//# sourceMappingURL=chunk-
|
|
126
|
+
//# sourceMappingURL=chunk-27QN27I3.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/utils.ts
|
|
2
|
-
var VERSION = true ? "4.
|
|
2
|
+
var VERSION = true ? "4.13.0" : "0.0.0-dev";
|
|
3
3
|
function toArrayBuffer(buf) {
|
|
4
4
|
if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {
|
|
5
5
|
return buf.buffer;
|
|
@@ -121,4 +121,4 @@ export {
|
|
|
121
121
|
safeMax,
|
|
122
122
|
classifyError
|
|
123
123
|
};
|
|
124
|
-
//# sourceMappingURL=chunk-
|
|
124
|
+
//# sourceMappingURL=chunk-2B45S7FM.js.map
|