kordoc 4.2.8 → 4.3.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 +922 -885
- package/dist/{-SCTT2TBZ.js → -DYHT3HWH.js} +28 -20
- package/dist/{chunk-J2RZ444H.js → chunk-3FFPHTXD.js} +1 -1
- package/dist/chunk-3FFPHTXD.js.map +1 -0
- package/dist/{chunk-IJUAWDOS.js → chunk-4DBCUF3C.js} +38 -7
- package/dist/chunk-4DBCUF3C.js.map +1 -0
- package/dist/{chunk-5RPYBC2Q.js → chunk-6GBLFQMA.js} +1 -1
- package/dist/chunk-6GBLFQMA.js.map +1 -0
- package/dist/{chunk-JP5MNHUK.js → chunk-6RAYTNQT.js} +5 -5
- package/dist/chunk-6RAYTNQT.js.map +1 -0
- package/dist/{chunk-GEPINOL6.js → chunk-6XPXIG57.js} +2 -2
- package/dist/chunk-6XPXIG57.js.map +1 -0
- package/dist/{chunk-WP4VD5T7.js → chunk-7MFO4TKP.js} +4 -3
- package/dist/chunk-7MFO4TKP.js.map +1 -0
- package/dist/{chunk-CELJIGBQ.cjs → chunk-AL34DGS5.cjs} +6 -6
- package/dist/chunk-AL34DGS5.cjs.map +1 -0
- package/dist/{chunk-FS3XQ3ZQ.js → chunk-ARXNKC5D.js} +3 -3
- package/dist/chunk-ARXNKC5D.js.map +1 -0
- package/dist/{chunk-2BTKLDNX.cjs → chunk-AUOEZKJE.cjs} +21 -21
- package/dist/chunk-AUOEZKJE.cjs.map +1 -0
- package/dist/chunk-DCZVOIEO.cjs.map +1 -1
- package/dist/{chunk-7GEBDS6B.js → chunk-DRQUAYNT.js} +4 -3
- package/dist/chunk-DRQUAYNT.js.map +1 -0
- package/dist/{chunk-YNAPK4H6.js → chunk-DRZUJ2RK.js} +1521 -1144
- package/dist/chunk-DRZUJ2RK.js.map +1 -0
- package/dist/{chunk-GKSFNCVP.js → chunk-EFVAY5VE.js} +71 -29
- package/dist/chunk-EFVAY5VE.js.map +1 -0
- package/dist/{chunk-UKEZ46VL.js → chunk-EZHW3RNQ.js} +37 -6
- package/dist/chunk-EZHW3RNQ.js.map +1 -0
- package/dist/chunk-GS7T56RP.cjs.map +1 -1
- package/dist/{chunk-4FTXKIGT.js → chunk-GSMPTZC7.js} +4 -4
- package/dist/chunk-GSMPTZC7.js.map +1 -0
- package/dist/{chunk-OQNFGKRY.cjs → chunk-JFV7QT5T.cjs} +4 -3
- package/dist/chunk-JFV7QT5T.cjs.map +1 -0
- package/dist/{chunk-ROKHZE76.cjs → chunk-LPQWKQQQ.cjs} +44 -13
- package/dist/chunk-LPQWKQQQ.cjs.map +1 -0
- package/dist/{chunk-H7OWEYH2.cjs → chunk-MGGU3ZRK.cjs} +1 -1
- package/dist/chunk-MGGU3ZRK.cjs.map +1 -0
- package/dist/chunk-MOL7MDBG.js +0 -0
- package/dist/{chunk-55QIELGV.js → chunk-NMWXBJ5B.js} +4 -3
- package/dist/chunk-NMWXBJ5B.js.map +1 -0
- package/dist/{chunk-DZIXKL7E.js → chunk-O5EK52TG.js} +1 -1
- package/dist/chunk-O5EK52TG.js.map +1 -0
- package/dist/{chunk-COHHXQSP.js → chunk-SPKBIFSK.js} +2 -2
- package/dist/chunk-SPKBIFSK.js.map +1 -0
- package/dist/{chunk-QZCAIFUW.js → chunk-US4WFSIQ.js} +4 -4
- package/dist/chunk-US4WFSIQ.js.map +1 -0
- package/dist/{chunk-EOVJ27WC.js → chunk-VXMLENCV.js} +15 -11
- package/dist/chunk-VXMLENCV.js.map +1 -0
- package/dist/{chunk-7FCNOKOR.js → chunk-W34QSJFF.js} +1 -1
- package/dist/chunk-W34QSJFF.js.map +1 -0
- package/dist/{chunk-URKX77GB.js → chunk-WFOQFJI4.js} +2 -2
- package/dist/chunk-WFOQFJI4.js.map +1 -0
- package/dist/{chunk-NNDVFNMJ.js → chunk-YNJDNP44.js} +1 -1
- package/dist/chunk-YNJDNP44.js.map +1 -0
- package/dist/{chunk-LM7C6HI2.js → chunk-ZSL6MQVE.js} +1 -1
- package/dist/chunk-ZSL6MQVE.js.map +1 -0
- package/dist/chunks-Q7T4SQGW.js +10 -0
- package/dist/cli.js +75 -39
- package/dist/cli.js.map +1 -1
- package/dist/{formula-SXC6LRRC.js → formula-7ZPC54JO.js} +2 -2
- package/dist/formula-7ZPC54JO.js.map +1 -0
- package/dist/{formula-KSNAEBZ2.js → formula-EQRHSMYW.js} +2 -2
- package/dist/formula-EQRHSMYW.js.map +1 -0
- package/dist/{formula-SB3NHDUM.cjs → formula-IWV5IJ3Y.cjs} +8 -8
- package/dist/formula-IWV5IJ3Y.cjs.map +1 -0
- package/dist/{image-ocr-ANSXR5KJ.js → image-ocr-G2LYTEUH.js} +8 -6
- package/dist/image-ocr-G2LYTEUH.js.map +1 -0
- package/dist/{image-ocr-ORATZW73.js → image-ocr-R44RYDBU.js} +10 -8
- package/dist/image-ocr-R44RYDBU.js.map +1 -0
- package/dist/{image-ocr-GHQ6YKJH.cjs → image-ocr-XEJFXH6M.cjs} +13 -11
- package/dist/image-ocr-XEJFXH6M.cjs.map +1 -0
- package/dist/index.cjs +2017 -1868
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +75 -4
- package/dist/index.d.ts +75 -4
- package/dist/index.js +2139 -1990
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +123 -78
- package/dist/mcp.js.map +1 -1
- package/dist/{models-KA4GLQK5.js → models-6VMAVZR6.js} +3 -3
- package/dist/page-range-737B4EZW.js +0 -0
- package/dist/page-range-P7SDW6LR.cjs.map +1 -1
- package/dist/{parser-BPVTYM5K.js → parser-2G245MMN.js} +6 -6
- package/dist/parser-2G245MMN.js.map +1 -0
- package/dist/{parser-GZDOZCHM.js → parser-W3POOYQQ.js} +8 -8
- package/dist/parser-W3POOYQQ.js.map +1 -0
- package/dist/{parser-KTNIUF2N.cjs → parser-W3ZGQUCQ.cjs} +25 -25
- package/dist/parser-W3ZGQUCQ.cjs.map +1 -0
- package/dist/pdf-ocr-3GDTJSHF.js +15 -0
- package/dist/pdf-ocr-N7IU23UV.cjs +13 -0
- package/dist/pdf-ocr-N7IU23UV.cjs.map +1 -0
- package/dist/pdf-ocr-U7MEGNBZ.js +12 -0
- package/dist/{profile-io-I2TH44EO.js → profile-io-72R3B7KO.js} +3 -3
- package/dist/{rasterize-QBA43YAQ.js → rasterize-GNJQVURE.js} +2 -2
- package/dist/rasterize-GNJQVURE.js.map +1 -0
- package/dist/{redact-7ILEAUTS.js → redact-W5K3ILQH.js} +2 -2
- package/dist/render-6OW6U4L4.js +10 -0
- package/dist/seal-GTNLVBJX.js +10 -0
- package/dist/{setup-GUQT5ELJ.js → setup-I4I75QJU.js} +1 -1
- package/dist/setup-I4I75QJU.js.map +1 -0
- package/dist/{watch-7V6X7LHV.js → watch-2ADAJLIJ.js} +12 -14
- package/dist/watch-2ADAJLIJ.js.map +1 -0
- package/package.json +101 -98
- package/templates//352/260/204/354/235/264/352/270/260/354/225/210/353/254/270_/354/204/234/354/213/235.hwpx +0 -0
- package/templates//352/260/204/354/235/264/352/270/260/354/225/210/353/254/270_/354/230/210/354/213/234/352/260/222.json +9 -0
- package/templates//354/235/274/353/260/230/352/270/260/354/225/210/353/254/270_/354/204/234/354/213/235.hwpx +0 -0
- package/templates//354/235/274/353/260/230/352/270/260/354/225/210/353/254/270_/354/230/210/354/213/234/352/260/222.json +25 -0
- package/dist/chunk-2BTKLDNX.cjs.map +0 -1
- package/dist/chunk-4FTXKIGT.js.map +0 -1
- package/dist/chunk-55QIELGV.js.map +0 -1
- package/dist/chunk-5RPYBC2Q.js.map +0 -1
- package/dist/chunk-7FCNOKOR.js.map +0 -1
- package/dist/chunk-7GEBDS6B.js.map +0 -1
- package/dist/chunk-CELJIGBQ.cjs.map +0 -1
- package/dist/chunk-COHHXQSP.js.map +0 -1
- package/dist/chunk-DZIXKL7E.js.map +0 -1
- package/dist/chunk-EOVJ27WC.js.map +0 -1
- package/dist/chunk-FS3XQ3ZQ.js.map +0 -1
- package/dist/chunk-GEPINOL6.js.map +0 -1
- package/dist/chunk-GKSFNCVP.js.map +0 -1
- package/dist/chunk-H7OWEYH2.cjs.map +0 -1
- package/dist/chunk-IJUAWDOS.js.map +0 -1
- package/dist/chunk-J2RZ444H.js.map +0 -1
- package/dist/chunk-JP5MNHUK.js.map +0 -1
- package/dist/chunk-LM7C6HI2.js.map +0 -1
- package/dist/chunk-NNDVFNMJ.js.map +0 -1
- package/dist/chunk-OQNFGKRY.cjs.map +0 -1
- package/dist/chunk-QZCAIFUW.js.map +0 -1
- package/dist/chunk-ROKHZE76.cjs.map +0 -1
- package/dist/chunk-TCJRGFYY.js +0 -280
- package/dist/chunk-TCJRGFYY.js.map +0 -1
- package/dist/chunk-UKEZ46VL.js.map +0 -1
- package/dist/chunk-URKX77GB.js.map +0 -1
- package/dist/chunk-WP4VD5T7.js.map +0 -1
- package/dist/chunk-YNAPK4H6.js.map +0 -1
- package/dist/chunks-KKYJDJT7.js +0 -10
- package/dist/detect-FX2ZHKZP.js +0 -26
- package/dist/formula-KSNAEBZ2.js.map +0 -1
- package/dist/formula-SB3NHDUM.cjs.map +0 -1
- package/dist/formula-SXC6LRRC.js.map +0 -1
- package/dist/image-ocr-ANSXR5KJ.js.map +0 -1
- package/dist/image-ocr-GHQ6YKJH.cjs.map +0 -1
- package/dist/image-ocr-ORATZW73.js.map +0 -1
- package/dist/parser-BPVTYM5K.js.map +0 -1
- package/dist/parser-GZDOZCHM.js.map +0 -1
- package/dist/parser-KTNIUF2N.cjs.map +0 -1
- package/dist/pdf-ocr-6XKLXZTF.cjs +0 -13
- package/dist/pdf-ocr-6XKLXZTF.cjs.map +0 -1
- package/dist/pdf-ocr-HWPNMKKC.js +0 -12
- package/dist/pdf-ocr-W2PA2K3U.js +0 -15
- package/dist/rasterize-QBA43YAQ.js.map +0 -1
- package/dist/render-MDJDKKNH.js +0 -10
- package/dist/seal-Z52JR2GX.js +0 -10
- package/dist/seal-Z52JR2GX.js.map +0 -1
- package/dist/setup-GUQT5ELJ.js.map +0 -1
- package/dist/watch-7V6X7LHV.js.map +0 -1
- /package/dist/{-SCTT2TBZ.js.map → -DYHT3HWH.js.map} +0 -0
- /package/dist/{chunks-KKYJDJT7.js.map → chunks-Q7T4SQGW.js.map} +0 -0
- /package/dist/{detect-FX2ZHKZP.js.map → models-6VMAVZR6.js.map} +0 -0
- /package/dist/{models-KA4GLQK5.js.map → pdf-ocr-3GDTJSHF.js.map} +0 -0
- /package/dist/{pdf-ocr-HWPNMKKC.js.map → pdf-ocr-U7MEGNBZ.js.map} +0 -0
- /package/dist/{pdf-ocr-W2PA2K3U.js.map → profile-io-72R3B7KO.js.map} +0 -0
- /package/dist/{profile-io-I2TH44EO.js.map → redact-W5K3ILQH.js.map} +0 -0
- /package/dist/{redact-7ILEAUTS.js.map → render-6OW6U4L4.js.map} +0 -0
- /package/dist/{render-MDJDKKNH.js.map → seal-GTNLVBJX.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
parseFormatProfileJson
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WFOQFJI4.js";
|
|
5
5
|
import {
|
|
6
6
|
BODY_FONTS,
|
|
7
7
|
BULLET2_CHARS,
|
|
8
8
|
H2_MARKERS,
|
|
9
9
|
buildGongmunOptions
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6GBLFQMA.js";
|
|
11
11
|
import {
|
|
12
|
+
BUILTIN_TEMPLATES,
|
|
12
13
|
PRESET_ALIAS,
|
|
14
|
+
detectFormat,
|
|
15
|
+
detectZipFormat,
|
|
16
|
+
extractClickHereFields,
|
|
13
17
|
extractFormFields,
|
|
14
18
|
fillFormFields,
|
|
15
19
|
fillHwpx,
|
|
@@ -20,35 +24,33 @@ import {
|
|
|
20
24
|
lintGongmunText,
|
|
21
25
|
markdownToHwpx,
|
|
22
26
|
parse,
|
|
27
|
+
readBuiltinTemplate,
|
|
28
|
+
resolveBuiltinTemplate,
|
|
23
29
|
unknownFontWarnings
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import {
|
|
28
|
-
detectFormat,
|
|
29
|
-
detectZipFormat
|
|
30
|
-
} from "./chunk-TCJRGFYY.js";
|
|
30
|
+
} from "./chunk-DRZUJ2RK.js";
|
|
31
|
+
import "./chunk-W34QSJFF.js";
|
|
32
|
+
import "./chunk-ZSL6MQVE.js";
|
|
31
33
|
import "./chunk-MOL7MDBG.js";
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-NMWXBJ5B.js";
|
|
35
|
+
import "./chunk-O5EK52TG.js";
|
|
36
|
+
import "./chunk-SPKBIFSK.js";
|
|
35
37
|
import {
|
|
36
38
|
blocksToMarkdown
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
39
|
+
} from "./chunk-GSMPTZC7.js";
|
|
40
|
+
import "./chunk-VXMLENCV.js";
|
|
41
|
+
import "./chunk-EFVAY5VE.js";
|
|
40
42
|
import {
|
|
41
43
|
VERSION,
|
|
42
44
|
sanitizeError,
|
|
43
45
|
toArrayBuffer
|
|
44
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-DRQUAYNT.js";
|
|
45
47
|
|
|
46
48
|
// src/cli.ts
|
|
47
49
|
import { readFileSync, writeFileSync, mkdirSync, statSync } from "fs";
|
|
48
50
|
import { basename, dirname, resolve, extname } from "path";
|
|
49
51
|
import { Command } from "commander";
|
|
50
52
|
var program = new Command();
|
|
51
|
-
program.name("kordoc").description("\uBAA8\uB450 \uD30C\uC2F1\uD574\uBC84\uB9AC\uACA0\uB2E4 \u2014 HWP, HWPX, PDF, XLSX, DOCX, \uC774\uBBF8\uC9C0(PNG/JPG/WebP) \u2192 Markdown").version(VERSION).argument("<files...>", "\uBCC0\uD658\uD560 \uD30C\uC77C \uACBD\uB85C (HWP, HWPX, PDF, XLSX, DOCX, PNG/JPG/WebP \u2014 \uC774\uBBF8\uC9C0\uB294 OCR \uC790\uB3D9 \uC801\uC6A9)").option("-o, --output <path>", "\uCD9C\uB825 \uD30C\uC77C \uACBD\uB85C (\uB2E8\uC77C \uD30C\uC77C \uC2DC)").option("-d, --out-dir <dir>", "\uCD9C\uB825 \uB514\uB809\uD1A0\uB9AC (\uB2E4\uC911 \uD30C\uC77C \uC2DC)").option("-p, --pages <range>", "\uD398\uC774\uC9C0/\uC139\uC158 \uBC94\uC704 (\uC608: 1-3, 1,3,5)").option("--format <type>", "\uCD9C\uB825 \uD615\uC2DD: markdown (\uAE30\uBCF8), json, chunks (RAG\uC6A9 \uAD6C\uC870 \uCCAD\uD06C JSON \u2014 \uD5E4\uB529\xB7\uAC1C\uC870\uC2DD \uC704\uACC4 breadcrumb + \uD45C \uB3C5\uB9BD \uCCAD\uD06C)", "markdown").option("--no-header-footer", "PDF \uBA38\uB9AC\uAE00/\uBC14\uB2E5\uAE00 \uC790\uB3D9 \uC81C\uAC70 \uB044\uAE30 (\uAE30\uBCF8: \uC81C\uAC70\uD568)").option("--formula-ocr", "PDF \uC218\uC2DD OCR \uD65C\uC131\uD654 (MFD+MFR ONNX, \uCCAB \uC0AC\uC6A9 \uC2DC \uBAA8\uB378 ~155MB \uC790\uB3D9 \uB2E4\uC6B4\uB85C\uB4DC)").option("--ocr", "\uC2A4\uCE94/\uC774\uBBF8\uC9C0 PDF \uD14D\uC2A4\uD2B8 OCR (\uB0B4\uC7A5 PP-OCRv5 korean, \uCCAB \uC0AC\uC6A9 \uC2DC \uBAA8\uB378 ~18MB \uC790\uB3D9 \uB2E4\uC6B4\uB85C\uB4DC \u2014 OCR \uD544\uC694 \uD398\uC774\uC9C0\uB9CC \uC778\uC2DD)").option("--ocr-force", "\uC804 \uD398\uC774\uC9C0 \uAC15\uC81C OCR (\uD14D\uC2A4\uD2B8\uCE35\uC774 \uC788\uC5B4\uB3C4 \uBB34\uC2DC\uD558\uACE0 \uC7AC\uC778\uC2DD)").option("--dedupe-headers", "HWP5 \uB808\uC774\uC544\uC6C3 \uD45C \uD398\uC774\uC9C0 \uBC18\uBCF5 \uB7EC\uB2DD \uD5E4\uB354 \uC911\uBCF5 \uC81C\uAC70 (\uAE30\uBCF8 off \u2014 \uBD99\uC784\uBCC4 \uC7AC\uBC88\uD638 \uC624\uC0AD\uC81C \uC8FC\uC758)").option("--keep-empty-cols", "\uD45C \uC624\uB978\uCABD \uB05D \uBE48 \uC5F4(\uC11C\uC2DD \uC785\uB825\uB780) \uBCF4\uC874 (#47, \uAE30\uBCF8 off: \uD6C4\uD589 \uBE48 \uC5F4 \uD2B8\uB9BC)").option("--inline-images", "\uC774\uBBF8\uC9C0\uB97C base64 data URI \uB85C \uB9C8\uD06C\uB2E4\uC6B4\uC5D0 \uC778\uB77C\uC778 (BMP\u2192PNG \uC555\uCD95, HWP5 \uC804\uC6A9 \u2014 \uC778\uB77C\uC778\uB41C \uACBD\uC6B0\uB9CC \uD30C\uC77C \uBBF8\uC800\uC7A5, \uADF8 \uC678 \uD3EC\uB9F7\uC740 \uC800\uC7A5 \uC720\uC9C0)").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (files, opts) => {
|
|
53
|
+
program.name("kordoc").description("\uBAA8\uB450 \uD30C\uC2F1\uD574\uBC84\uB9AC\uACA0\uB2E4 \u2014 HWP, HWPX, PDF, XLSX, DOCX, \uC774\uBBF8\uC9C0(PNG/JPG/WebP) \u2192 Markdown").version(VERSION).argument("<files...>", "\uBCC0\uD658\uD560 \uD30C\uC77C \uACBD\uB85C (HWP, HWPX, PDF, XLSX, DOCX, PNG/JPG/WebP \u2014 \uC774\uBBF8\uC9C0\uB294 OCR \uC790\uB3D9 \uC801\uC6A9)").option("-o, --output <path>", "\uCD9C\uB825 \uD30C\uC77C \uACBD\uB85C (\uB2E8\uC77C \uD30C\uC77C \uC2DC)").option("-d, --out-dir <dir>", "\uCD9C\uB825 \uB514\uB809\uD1A0\uB9AC (\uB2E4\uC911 \uD30C\uC77C \uC2DC)").option("-p, --pages <range>", "\uD398\uC774\uC9C0/\uC139\uC158 \uBC94\uC704 (\uC608: 1-3, 1,3,5)").option("--format <type>", "\uCD9C\uB825 \uD615\uC2DD: markdown (\uAE30\uBCF8), json, chunks (RAG\uC6A9 \uAD6C\uC870 \uCCAD\uD06C JSON \u2014 \uD5E4\uB529\xB7\uAC1C\uC870\uC2DD \uC704\uACC4 breadcrumb + \uD45C \uB3C5\uB9BD \uCCAD\uD06C)", "markdown").option("--no-header-footer", "PDF \uBA38\uB9AC\uAE00/\uBC14\uB2E5\uAE00 \uC790\uB3D9 \uC81C\uAC70 \uB044\uAE30 (\uAE30\uBCF8: \uC81C\uAC70\uD568)").option("--formula-ocr", "PDF \uC218\uC2DD OCR \uD65C\uC131\uD654 (MFD+MFR ONNX, \uCCAB \uC0AC\uC6A9 \uC2DC \uBAA8\uB378 ~155MB \uC790\uB3D9 \uB2E4\uC6B4\uB85C\uB4DC)").option("--ocr", "\uC2A4\uCE94/\uC774\uBBF8\uC9C0 PDF \uD14D\uC2A4\uD2B8 OCR (\uB0B4\uC7A5 PP-OCRv5 korean, \uCCAB \uC0AC\uC6A9 \uC2DC \uBAA8\uB378 ~18MB \uC790\uB3D9 \uB2E4\uC6B4\uB85C\uB4DC \u2014 OCR \uD544\uC694 \uD398\uC774\uC9C0\uB9CC \uC778\uC2DD)").option("--ocr-force", "\uC804 \uD398\uC774\uC9C0 \uAC15\uC81C OCR (\uD14D\uC2A4\uD2B8\uCE35\uC774 \uC788\uC5B4\uB3C4 \uBB34\uC2DC\uD558\uACE0 \uC7AC\uC778\uC2DD)").option("--dedupe-headers", "HWP5 \uB808\uC774\uC544\uC6C3 \uD45C \uD398\uC774\uC9C0 \uBC18\uBCF5 \uB7EC\uB2DD \uD5E4\uB354 \uC911\uBCF5 \uC81C\uAC70 (\uAE30\uBCF8 off \u2014 \uBD99\uC784\uBCC4 \uC7AC\uBC88\uD638 \uC624\uC0AD\uC81C \uC8FC\uC758)").option("--keep-empty-cols", "\uD45C \uC624\uB978\uCABD \uB05D \uBE48 \uC5F4(\uC11C\uC2DD \uC785\uB825\uB780) \uBCF4\uC874 (#47, \uAE30\uBCF8 off: \uD6C4\uD589 \uBE48 \uC5F4 \uD2B8\uB9BC)").option("--keep-empty-paragraphs", "\uBE48 \uBB38\uB2E8 \uBCF4\uC874 \u2014 \uBCF8\uBB38\uC740 \uBE48 paragraph \uBE14\uB85D, \uD45C \uC140\uC740 \uBE48 \uC904\uB85C (#57, \uAE30\uBCF8 off: \uBE48 \uBB38\uB2E8 \uC81C\uAC70)").option("--inline-images", "\uC774\uBBF8\uC9C0\uB97C base64 data URI \uB85C \uB9C8\uD06C\uB2E4\uC6B4\uC5D0 \uC778\uB77C\uC778 (BMP\u2192PNG \uC555\uCD95, HWP5 \uC804\uC6A9 \u2014 \uC778\uB77C\uC778\uB41C \uACBD\uC6B0\uB9CC \uD30C\uC77C \uBBF8\uC800\uC7A5, \uADF8 \uC678 \uD3EC\uB9F7\uC740 \uC800\uC7A5 \uC720\uC9C0)").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (files, opts) => {
|
|
52
54
|
const validFormats = ["markdown", "json", "chunks"];
|
|
53
55
|
if (!validFormats.includes(opts.format)) {
|
|
54
56
|
process.stderr.write(`[kordoc] \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uD615\uC2DD: ${opts.format} (markdown, json, chunks)
|
|
@@ -87,6 +89,7 @@ program.name("kordoc").description("\uBAA8\uB450 \uD30C\uC2F1\uD574\uBC84\uB9AC\
|
|
|
87
89
|
else if (opts.ocr) parseOptions.ocr = true;
|
|
88
90
|
if (opts.dedupeHeaders) parseOptions.dedupeRunningHeaders = true;
|
|
89
91
|
if (opts.keepEmptyCols) parseOptions.keepTrailingEmptyCols = true;
|
|
92
|
+
if (opts.keepEmptyParagraphs) parseOptions.keepEmptyParagraphs = true;
|
|
90
93
|
if (opts.inlineImages) parseOptions.inlineImages = true;
|
|
91
94
|
if (!opts.silent) {
|
|
92
95
|
parseOptions.onProgress = (current, total) => {
|
|
@@ -117,7 +120,7 @@ program.name("kordoc").description("\uBAA8\uB450 \uD30C\uC2F1\uD574\uBC84\uB9AC\
|
|
|
117
120
|
2
|
|
118
121
|
);
|
|
119
122
|
} else if (opts.format === "chunks") {
|
|
120
|
-
const { blocksToChunks } = await import("./chunks-
|
|
123
|
+
const { blocksToChunks } = await import("./chunks-Q7T4SQGW.js");
|
|
121
124
|
output = JSON.stringify(blocksToChunks(result.blocks), null, 2);
|
|
122
125
|
} else {
|
|
123
126
|
output = markdown;
|
|
@@ -164,7 +167,7 @@ program.command("watch <dir>").description("\uB514\uB809\uD1A0\uB9AC \uAC10\uC2D
|
|
|
164
167
|
if (command.getOptionValueSource("format") === "default" && program.getOptionValueSource("format") === "cli") {
|
|
165
168
|
opts.format = rootOpts.format;
|
|
166
169
|
}
|
|
167
|
-
const { watchDirectory } = await import("./watch-
|
|
170
|
+
const { watchDirectory } = await import("./watch-2ADAJLIJ.js");
|
|
168
171
|
await watchDirectory({
|
|
169
172
|
dir,
|
|
170
173
|
outDir: opts.outDir,
|
|
@@ -174,7 +177,7 @@ program.command("watch <dir>").description("\uB514\uB809\uD1A0\uB9AC \uAC10\uC2D
|
|
|
174
177
|
silent: opts.silent
|
|
175
178
|
});
|
|
176
179
|
});
|
|
177
|
-
program.command("fill
|
|
180
|
+
program.command("fill [file]").description("\uC11C\uC2DD \uBB38\uC11C\uC758 \uBE48\uCE78\uC744 \uCC44\uC6CC\uC11C \uCD9C\uB825 \u2014 kordoc fill \uC2E0\uCCAD\uC11C.hwpx -f '\uC131\uBA85=\uD64D\uAE38\uB3D9,\uC804\uD654=010-1234-5678' -o \uACB0\uACFC.hwpx / \uB0B4\uC7A5 \uAE30\uC548\uBB38 \uC11C\uC2DD\uC740 kordoc fill --template gian").option("-f, --fields <pairs>", "\uCC44\uC6B8 \uD544\uB4DC (key=value \uC27C\uD45C \uAD6C\uBD84 \uB610\uB294 JSON)").option("-j, --json <path>", "\uCC44\uC6B8 \uD544\uB4DC JSON \uD30C\uC77C \uACBD\uB85C").option("-o, --output <path>", "\uCD9C\uB825 \uD30C\uC77C \uACBD\uB85C (\uD655\uC7A5\uC790\uB85C \uD3EC\uB9F7 \uACB0\uC815: .md, .hwpx)").option("--format <type>", "\uCD9C\uB825 \uD3EC\uB9F7: hwpx-preserve (\uAE30\uBCF8, \uC6D0\uBCF8 \uC2A4\uD0C0\uC77C \uBCF4\uC874), hwpx, markdown", "hwpx-preserve").option("--formats <json>", `\uD544\uB4DC\uBCC4 \uAC12 \uC11C\uC2DD JSON (\uB77C\uBCA8\u2192\uD3EC\uB9F7) \u2014 \uC608: '{"\uB0A0\uC9DC":"yy.mm.dd","\uC8FC\uBBFC\uB4F1\uB85D\uBC88\uD638":"rrn:masked"}'`).option("--template <name>", "\uB0B4\uC7A5 \uD45C\uC900 \uC11C\uC2DD \uC0AC\uC6A9 (\uD30C\uC77C \uACBD\uB85C \uBD88\uD544\uC694): gian(\uC77C\uBC18\uAE30\uC548\uBB38) | gian-simple(\uAC04\uC774\uAE30\uC548\uBB38). \uC704\uCE58 \uC778\uC790 'templates:\uC77C\uBC18\uAE30\uC548\uBB38' \uD45C\uAE30\uB3C4 \uB3D9\uC77C").option("--list-templates", "\uB0B4\uC7A5 \uD45C\uC900 \uC11C\uC2DD \uBAA9\uB85D + \uB204\uB984\uD2C0 \uD544\uB4DC \uB098\uC5F4").option("--require-unique", "\uD55C \uD0A4\uAC00 \uC11C\uC2DD\uC758 2\uACF3 \uC774\uC0C1\uC5D0 \uB9E4\uCE6D\uB418\uBA74 \uCC44\uC6B0\uC9C0 \uC54A\uACE0 \uAC70\uBD80 (\uBC18\uBCF5 \uB77C\uBCA8 \uC591\uC2DD \uC624\uC5FC \uBC29\uC9C0)").option("--mask", "\uCC44\uC6B4 \uAC12 \uBBF8\uB178\uCD9C \u2014 \uCD9C\uB825 \uD30C\uC77C \uC5C6\uC774 markdown\uC744 stdout\uC73C\uB85C \uB0BC \uB54C \uBCF8\uBB38 \uB300\uC2E0 \uC548\uB0B4\uB9CC \uD45C\uC2DC").option("--dry-run", "\uCC44\uC6B0\uC9C0 \uC54A\uACE0 \uC11C\uC2DD \uD544\uB4DC \uBAA9\uB85D\uB9CC \uCD9C\uB825").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (file, opts, command) => {
|
|
178
181
|
try {
|
|
179
182
|
const rootOpts = program.opts();
|
|
180
183
|
opts.output ??= rootOpts.output;
|
|
@@ -182,16 +185,44 @@ program.command("fill <template>").description("\uC11C\uC2DD \uBB38\uC11C\uC758
|
|
|
182
185
|
if (command.getOptionValueSource("format") === "default" && program.getOptionValueSource("format") === "cli") {
|
|
183
186
|
opts.format = rootOpts.format;
|
|
184
187
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
188
|
+
if (opts.listTemplates) {
|
|
189
|
+
const list = [];
|
|
190
|
+
for (const t of BUILTIN_TEMPLATES) {
|
|
191
|
+
const fields = await extractClickHereFields(readBuiltinTemplate(t));
|
|
192
|
+
list.push({ id: t.id, aliases: t.aliases, title: t.title, fields: fields.map((f) => f.name) });
|
|
193
|
+
}
|
|
194
|
+
process.stdout.write(JSON.stringify(list, null, 2) + "\n");
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const templateName = opts.template ?? (file && /^templates?:/i.test(file) ? file : void 0);
|
|
198
|
+
let arrayBuffer;
|
|
199
|
+
let inputName;
|
|
200
|
+
if (templateName) {
|
|
201
|
+
const t = resolveBuiltinTemplate(templateName);
|
|
202
|
+
if (!t) {
|
|
203
|
+
process.stderr.write(`[kordoc] \uC54C \uC218 \uC5C6\uB294 \uB0B4\uC7A5 \uD15C\uD50C\uB9BF: ${templateName} (\uC0AC\uC6A9 \uAC00\uB2A5: ${BUILTIN_TEMPLATES.map((x) => `${x.id}(${x.aliases[0]})`).join(", ")})
|
|
204
|
+
`);
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
|
207
|
+
arrayBuffer = readBuiltinTemplate(t);
|
|
208
|
+
inputName = t.file;
|
|
209
|
+
} else if (file) {
|
|
210
|
+
const absPath = resolve(file);
|
|
211
|
+
const fileSize = statSync(absPath).size;
|
|
212
|
+
if (fileSize > 500 * 1024 * 1024) {
|
|
213
|
+
process.stderr.write(`[kordoc] \uD30C\uC77C\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4 (${(fileSize / 1024 / 1024).toFixed(1)}MB)
|
|
214
|
+
`);
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
arrayBuffer = toArrayBuffer(readFileSync(absPath));
|
|
218
|
+
inputName = basename(absPath);
|
|
219
|
+
} else {
|
|
220
|
+
process.stderr.write(`[kordoc] \uC11C\uC2DD \uD30C\uC77C \uACBD\uB85C \uB610\uB294 --template \uC744 \uC9C0\uC815\uD574\uC8FC\uC138\uC694 (\uBAA9\uB85D: kordoc fill --list-templates)
|
|
189
221
|
`);
|
|
190
222
|
process.exit(1);
|
|
223
|
+
return;
|
|
191
224
|
}
|
|
192
|
-
|
|
193
|
-
const arrayBuffer = toArrayBuffer(buffer);
|
|
194
|
-
if (!opts.silent) process.stderr.write(`[kordoc] ${basename(absPath)} \uD30C\uC2F1 \uC911...
|
|
225
|
+
if (!opts.silent) process.stderr.write(`[kordoc] ${inputName} \uD30C\uC2F1 \uC911...
|
|
195
226
|
`);
|
|
196
227
|
if (opts.dryRun) {
|
|
197
228
|
const result2 = await parse(arrayBuffer, { keepTrailingEmptyCols: true });
|
|
@@ -201,12 +232,17 @@ program.command("fill <template>").description("\uC11C\uC2DD \uBB38\uC11C\uC758
|
|
|
201
232
|
process.exit(1);
|
|
202
233
|
}
|
|
203
234
|
const formInfo2 = extractFormFields(result2.blocks);
|
|
204
|
-
|
|
235
|
+
const clickHereFields = detectFormat(arrayBuffer) === "hwpx" ? await extractClickHereFields(arrayBuffer) : [];
|
|
236
|
+
if (formInfo2.fields.length === 0 && clickHereFields.length === 0) {
|
|
205
237
|
process.stderr.write(`[kordoc] \uC11C\uC2DD \uD544\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
|
|
206
238
|
`);
|
|
207
239
|
process.exit(1);
|
|
208
240
|
}
|
|
209
|
-
process.stdout.write(JSON.stringify(
|
|
241
|
+
process.stdout.write(JSON.stringify(
|
|
242
|
+
clickHereFields.length > 0 ? { ...formInfo2, clickHereFields } : formInfo2,
|
|
243
|
+
null,
|
|
244
|
+
2
|
|
245
|
+
) + "\n");
|
|
210
246
|
return;
|
|
211
247
|
}
|
|
212
248
|
let values = {};
|
|
@@ -353,7 +389,7 @@ program.command("fill <template>").description("\uC11C\uC2DD \uBB38\uC11C\uC758
|
|
|
353
389
|
});
|
|
354
390
|
program.command("seal <file>").description('\uB3C4\uC7A5/\uC11C\uBA85 \uC774\uBBF8\uC9C0\uB97C \uC575\uCEE4 \uBB38\uAD6C \uC704\uC5D0 \uBD80\uC720 \uBC30\uCE58 (\uD45C/\uD398\uC774\uC9C0 \uBD88\uD655\uC7A5) \u2014 kordoc seal \uC2E0\uCCAD\uC11C.hwpx --image \uB3C4\uC7A5.png --anchor "(\uC778)" -o \uACB0\uACFC.hwpx').requiredOption("--image <path>", "\uB3C4\uC7A5/\uC11C\uBA85 \uC774\uBBF8\uC9C0 (\uD22C\uBA85 \uBC30\uACBD PNG \uAD8C\uC7A5)").option("--anchor <text>", "\uC575\uCEE4 \uBB38\uAD6C", "(\uC778)").option("-n, --occurrence <num>", "\uAC19\uC740 \uC575\uCEE4\uAC00 \uC5EC\uB7FF\uC77C \uB54C 0-based \uC120\uD0DD", "0").option("--size-mm <num>", "\uB3C4\uC7A5 \uD55C \uBCC0 \uD06C\uAE30 mm (\uAE30\uBCF8: \uC904\uB192\uC774\xD71.6, 7~18 \uD074\uB7A8\uD504)").option("--mode <mode>", "overlap(\uBB38\uAD6C \uC704 \uACB9\uCE68) | right(\uC624\uB978\uCABD \uC606) | auto", "auto").option("--dx <mm>", "x \uBBF8\uC138\uC870\uC815 mm", "0").option("--dy <mm>", "y \uBBF8\uC138\uC870\uC815 mm", "0").option("-o, --output <path>", "\uCD9C\uB825 \uACBD\uB85C (\uAE30\uBCF8: <\uC785\uB825>.sealed.hwpx)").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (file, opts) => {
|
|
355
391
|
try {
|
|
356
|
-
const { placeSealHwpx, detectFormat: detectFormat2 } = await import("./-
|
|
392
|
+
const { placeSealHwpx, detectFormat: detectFormat2 } = await import("./-DYHT3HWH.js");
|
|
357
393
|
const rootOpts = program.opts();
|
|
358
394
|
const output = opts.output ?? rootOpts.output;
|
|
359
395
|
const silent = opts.silent ?? rootOpts.silent;
|
|
@@ -431,7 +467,7 @@ program.command("seal <file>").description('\uB3C4\uC7A5/\uC11C\uBA85 \uC774\uBB
|
|
|
431
467
|
});
|
|
432
468
|
program.command("patch <original> <edited>").description("\uC11C\uC2DD \uBCF4\uC874 \uB77C\uC6B4\uB4DC\uD2B8\uB9BD \uD328\uCE58 \u2014 \uD3B8\uC9D1\uB41C \uB9C8\uD06C\uB2E4\uC6B4\uC744 \uC6D0\uBCF8 HWPX/HWP\uC5D0 in-place \uBC18\uC601 (kordoc patch \uC6D0\uBCF8.hwpx \uD3B8\uC9D1.md -o \uCD9C\uB825.hwpx). \uBBF8\uC801\uC6A9(skip) \uD3B8\uC9D1\uC774 \uC788\uC73C\uBA74 exit 2").option("-o, --output <path>", "\uCD9C\uB825 \uACBD\uB85C (\uAE30\uBCF8: <\uC6D0\uBCF8>.patched.hwpx|.hwp)").option("--no-verify", "\uD328\uCE58 \uD6C4 \uC7AC\uD30C\uC2F1 \uC790\uB3D9 \uAC80\uC99D \uC0DD\uB7B5").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (original, edited, opts) => {
|
|
433
469
|
try {
|
|
434
|
-
const { patchHwpx, patchHwp, detectFormat: detectFormat2 } = await import("./-
|
|
470
|
+
const { patchHwpx, patchHwp, detectFormat: detectFormat2 } = await import("./-DYHT3HWH.js");
|
|
435
471
|
const rootOpts = program.opts();
|
|
436
472
|
const output = opts.output ?? rootOpts.output;
|
|
437
473
|
const silent = opts.silent ?? rootOpts.silent;
|
|
@@ -472,7 +508,7 @@ program.command("patch <original> <edited>").description("\uC11C\uC2DD \uBCF4\uC
|
|
|
472
508
|
});
|
|
473
509
|
program.command("validate <file>").description("HWPX \uAD6C\uC870 \uAC80\uC99D \u2014 ZIP\xB7mimetype\xB7\uD544\uC218 \uD30C\uC77C\xB7XML \uC6F0\uD3FC\uB4DC\xB7secCnt\xB7manifest \uCC38\uC870 (\uD55C\uCEF4\uB3C5\uC2A4 \uAC70\uBD80 \uC694\uC778 \uC0AC\uC804 \uCC28\uB2E8)").option("--json", "\uACB0\uACFC\uB97C JSON\uC73C\uB85C stdout\uC5D0 \uCD9C\uB825").action(async (file, opts) => {
|
|
474
510
|
try {
|
|
475
|
-
const { validateHwpx } = await import("./-
|
|
511
|
+
const { validateHwpx } = await import("./-DYHT3HWH.js");
|
|
476
512
|
const buf = new Uint8Array(readFileSync(resolve(file)));
|
|
477
513
|
const result = await validateHwpx(buf);
|
|
478
514
|
if (opts.json) {
|
|
@@ -651,7 +687,7 @@ program.command("lint <file>").description("\uACF5\uBB38\uC11C \uD45C\uAE30\uBC9
|
|
|
651
687
|
}
|
|
652
688
|
});
|
|
653
689
|
program.command("redact <files...>").description("\uAC1C\uC778\uC815\uBCF4 \uC11C\uC2DD \uBCF4\uC874 \uB9C8\uC2A4\uD0B9 \u2014 \uC8FC\uBBFC\uBC88\uD638\xB7\uC804\uD654\xB7\uC774\uBA54\uC77C\xB7\uCE74\uB4DC\xB7\uACC4\uC88C\uB97C \uD0D0\uC9C0\uD574 HWPX/HWP\uB294 \uC6D0\uBCF8 \uC11C\uC2DD \uADF8\uB300\uB85C patch, \uADF8 \uC678 \uD3EC\uB9F7\uC740 \uB9C8\uC2A4\uD0B9\uB41C \uB9C8\uD06C\uB2E4\uC6B4 \uCD9C\uB825. \uC790\uB3D9 \uAC80\uCD9C \uBCF4\uC870 \uB3C4\uAD6C\uC774\uBBC0\uB85C \uACB0\uACFC\uB294 \uBC18\uB4DC\uC2DC \uC0AC\uB78C\uC774 \uCD5C\uC885 \uD655\uC778\uD558\uC138\uC694 (\uC774\uBBF8\uC9C0 \uC548 \uD14D\uC2A4\uD2B8\uB294 \uD0D0\uC9C0 \uBD88\uAC00)").option("--rules <csv>", "\uC801\uC6A9 \uB8F0 (\uAE30\uBCF8: rrn,phone,email,card,account \u2014 passport,driver\uB294 opt-in)").option("--mask-char <ch>", "\uB9C8\uC2A4\uD06C \uBB38\uC790 1\uAE00\uC790 (\uAE30\uBCF8: \u25CF)").option("-o, --output <path>", "\uCD9C\uB825 \uACBD\uB85C (\uB2E8\uC77C \uD30C\uC77C \uC2DC)").option("-d, --out-dir <dir>", "\uCD9C\uB825 \uB514\uB809\uD1A0\uB9AC (\uB2E4\uC911 \uD30C\uC77C \uC2DC)").option("--dry-run", "\uD0D0\uC9C0 \uB9AC\uD3EC\uD2B8\uB9CC \uCD9C\uB825, \uD30C\uC77C \uBBF8\uC0DD\uC131").option("--json", "\uB9AC\uD3EC\uD2B8\uB97C JSON\uC73C\uB85C stdout \uCD9C\uB825").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (files, opts) => {
|
|
654
|
-
const { redactMarkdown, DEFAULT_REDACT_RULES, patchHwpx, patchHwp } = await import("./-
|
|
690
|
+
const { redactMarkdown, DEFAULT_REDACT_RULES, patchHwpx, patchHwp } = await import("./-DYHT3HWH.js");
|
|
655
691
|
const rootOpts = program.opts();
|
|
656
692
|
const output = opts.output ?? rootOpts.output;
|
|
657
693
|
const silent = opts.silent ?? rootOpts.silent;
|
|
@@ -735,12 +771,12 @@ program.command("redact <files...>").description("\uAC1C\uC778\uC815\uBCF4 \uC11
|
|
|
735
771
|
}
|
|
736
772
|
if (opts.json) process.stdout.write(JSON.stringify(files.length === 1 ? jsonReports[0] ?? null : jsonReports, null, 2) + "\n");
|
|
737
773
|
});
|
|
738
|
-
program.command("render <file>").description("\uB808\uC774\uC544\uC6C3 \uBCF4\uC874 \uB80C\uB354 \u2014 \uD55C\uCEF4 \uC800\uC7A5
|
|
774
|
+
program.command("render <file>").description("\uB808\uC774\uC544\uC6C3 \uBCF4\uC874 \uB80C\uB354 \u2014 HWPX\uB97C SVG\uB85C (\uC804\uCCB4 \uD398\uC774\uC9C0 \uC138\uB85C \uC2A4\uD0DD). \uD55C\uCEF4 \uC800\uC7A5\uBCF8\uC740 \uC870\uD310 \uCE90\uC2DC \uADF8\uB300\uB85C, \uCE90\uC2DC \uC5C6\uB294 \uC0DD\uC131\uBCF8\xB7\uD3B8\uC9D1\uBCF8\uC740 \uC21C\uC218 TS \uC870\uD310(reflow, \uAE30\uBCF8 \uCF2C) \u2014 kordoc render \uBB38\uC11C.hwpx -o \uBB38\uC11C.svg").option("-o, --output <path>", "\uCD9C\uB825 SVG \uACBD\uB85C (\uAE30\uBCF8: <\uC785\uB825>.svg)").option("--highlight <terms>", "\uAC80\uC0C9\uC5B4 \uD615\uAD11\uD39C (\uC27C\uD45C \uAD6C\uBD84)").option("--no-reflow", "\uC21C\uC218 TS \uC870\uD310 \uB044\uAE30 (\uC870\uD310 \uCE90\uC2DC \uC5C6\uB294 \uBB38\uC11C\uAC00 \uBE48 \uD398\uC774\uC9C0\uB85C \uB098\uC62C \uC218 \uC788\uC74C)").option("--reflow-mode <mode>", "reflow \uC904\uBC14\uAFC8 \uBAA8\uB4DC: keep(\uC5B4\uC808) | charAll(\uAE00\uC790)", "keep").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (file, opts) => {
|
|
739
775
|
try {
|
|
740
776
|
const rootOpts = program.opts();
|
|
741
777
|
const output = opts.output ?? rootOpts.output;
|
|
742
778
|
const silent = opts.silent ?? rootOpts.silent;
|
|
743
|
-
const { renderHwpxToSvg } = await import("./render-
|
|
779
|
+
const { renderHwpxToSvg } = await import("./render-6OW6U4L4.js");
|
|
744
780
|
const absPath = resolve(file);
|
|
745
781
|
const buffer = readFileSync(absPath);
|
|
746
782
|
const highlights = opts.highlight ? String(opts.highlight).split(",") : void 0;
|
|
@@ -762,7 +798,7 @@ program.command("render <file>").description("\uB808\uC774\uC544\uC6C3 \uBCF4\uC
|
|
|
762
798
|
});
|
|
763
799
|
program.command("render-worker").description("persistent \uB80C\uB354 \uC6CC\uCEE4 \u2014 stdin NDJSON \uC694\uCCAD \u2192 \uC870\uD310 SVG \uD30C\uC77C \uCD9C\uB825 (\uD504\uB85C\uC138\uC2A4 \uC720\uC9C0, \uCF5C\uB4DC\uC2A4\uD0C0\uD2B8 \uC81C\uAC70)").action(async () => {
|
|
764
800
|
const { createInterface } = await import("readline");
|
|
765
|
-
const { renderHwpxToSvg } = await import("./render-
|
|
801
|
+
const { renderHwpxToSvg } = await import("./render-6OW6U4L4.js");
|
|
766
802
|
const rl = createInterface({ input: process.stdin });
|
|
767
803
|
const write = (o) => void process.stdout.write(JSON.stringify(o) + "\n");
|
|
768
804
|
write({ ready: true, version: VERSION });
|
|
@@ -807,12 +843,12 @@ program.command("mcp").description("MCP \uC11C\uBC84 \uC2E4\uD589 (Claude / Curs
|
|
|
807
843
|
await startMcpServer();
|
|
808
844
|
});
|
|
809
845
|
program.command("setup").description("\uB300\uD654\uD615 \uC124\uCE58 \uB9C8\uBC95\uC0AC \u2014 AI \uD074\uB77C\uC774\uC5B8\uD2B8 \uC790\uB3D9 \uB4F1\uB85D (Mac/Win/Linux)").action(async () => {
|
|
810
|
-
const { runSetup } = await import("./setup-
|
|
846
|
+
const { runSetup } = await import("./setup-I4I75QJU.js");
|
|
811
847
|
await runSetup();
|
|
812
848
|
});
|
|
813
849
|
program.command("check-formula-models").description("PDF \uC218\uC2DD OCR \uBAA8\uB378(MFD + MFR + tokenizer, ~155MB) \uC0C1\uD0DC \uD655\uC778 \u2014 \uC5C6\uAC70\uB098 SHA \uBD88\uC77C\uCE58\uBA74 \uB2E4\uC6B4\uB85C\uB4DC").option("--status-only", "\uC0C1\uD0DC\uB9CC JSON \uC73C\uB85C \uCD9C\uB825 (\uB2E4\uC6B4\uB85C\uB4DC \uC548 \uD568)").action(async (opts) => {
|
|
814
850
|
try {
|
|
815
|
-
const { getFormulaModelStatus, ensureFormulaModels, getFormulaModelsDir } = await import("./formula-
|
|
851
|
+
const { getFormulaModelStatus, ensureFormulaModels, getFormulaModelsDir } = await import("./formula-7ZPC54JO.js");
|
|
816
852
|
const dir = getFormulaModelsDir();
|
|
817
853
|
if (opts.statusOnly) {
|
|
818
854
|
const status = await getFormulaModelStatus();
|
|
@@ -866,7 +902,7 @@ program.command("check-formula-models").description("PDF \uC218\uC2DD OCR \uBAA8
|
|
|
866
902
|
});
|
|
867
903
|
program.command("check-ocr-models").description("\uD14D\uC2A4\uD2B8 OCR \uBAA8\uB378(PP-OCRv5 korean det+rec, ~18MB) \uC0C1\uD0DC \uD655\uC778 \u2014 \uC5C6\uAC70\uB098 SHA \uBD88\uC77C\uCE58\uBA74 \uB2E4\uC6B4\uB85C\uB4DC").option("--status-only", "\uC0C1\uD0DC\uB9CC JSON \uC73C\uB85C \uCD9C\uB825 (\uB2E4\uC6B4\uB85C\uB4DC \uC548 \uD568)").action(async (opts) => {
|
|
868
904
|
try {
|
|
869
|
-
const { getOcrModelStatus, ensureOcrModels, getOcrModelsDir } = await import("./models-
|
|
905
|
+
const { getOcrModelStatus, ensureOcrModels, getOcrModelsDir } = await import("./models-6VMAVZR6.js");
|
|
870
906
|
const dir = getOcrModelsDir();
|
|
871
907
|
if (opts.statusOnly) {
|
|
872
908
|
const status = await getOcrModelStatus();
|