.hwp,.hwpx,.hwpml문서를 Markdown으로 변환- 문서를 JSON으로 구조화해
blocks,metadata까지 AI에 넘기기 - 폴더 단위 배치 변환
watch로 폴더를 감시하며 새 문서를 계속 변환- 두 버전 문서 비교
- HWPX 양식 필드 추출
- Markdown을 다시 HWPX로 역변환
- Node.js 18+
- CLI를 한 번만 쓸 때:
npx --yes --package kordoc --package pdfjs-dist kordoc --help - 반복 실행용 전역 설치:
npm install -g kordoc pdfjs-dist - Node API 예시를 따라갈 로컬 작업 디렉터리:
npm init -y && npm install kordoc pdfjs-dist - 현재 배포된
kordocCLI는 시작 시pdfjs-dist를 바로 불러오므로 PDF를 안 다뤄도 함께 설치해야 한다 import { markdownToHwpx } from "kordoc"같은 ESM 예시는 전역NODE_PATH가 아니라 로컬 설치 기준으로 실행해야 한다
이 스킬의 기본 경로는 항상 kordoc 이다.
- 문서 읽기/변환 →
kordoc - 구조화 JSON 추출 →
kordoc --format json - 연속 입력 폴더 처리 →
kordoc watch - 양식 필드 추출 →
parse()+extractFormFields() - 역변환 →
markdownToHwpx() - 문서 비교 →
compare()
이 스킬은 단일한 kordoc 경로를 표준 흐름으로 유지한다.
kordoc이 없으면 설치한다..hwp/.hwpx/.hwpml을 Markdown 또는 JSON으로 변환한다.- 표·이미지·메타데이터가 필요하면 JSON의
blocks/metadata를 확인한다. - 반복 입력 폴더는
watch, 양식 문서는extractFormFields, 편집 roundtrip은markdownToHwpx경로로 이어간다. - 결과 파일 생성 여부와 구조를 확인한다.
npx --yes --package kordoc --package pdfjs-dist kordoc 보고서.hwp -o 보고서.mdnpx --yes --package kordoc --package pdfjs-dist kordoc 검토서.hwpx --format json > 검토서.jsonnpx --yes --package kordoc --package pdfjs-dist kordoc ./문서함/* -d ./변환결과npx --yes --package kordoc --package pdfjs-dist kordoc 보고서.hwp --pages 1-3npx --yes --package kordoc --package pdfjs-dist kordoc watch ./문서함아래 Node API 예시는 package.json이 있는 로컬 작업 디렉터리에서:
npm init -y
npm install kordoc pdfjs-dist이미 package.json이 있으면 npm install kordoc pdfjs-dist만 추가로 실행하면 된다.
node --input-type=module - <<'EOF'
import { parse, extractFormFields } from "kordoc";
const result = await parse("신청서.hwpx");
if (!result.success) {
console.error(result.error);
process.exit(1);
}
console.log(JSON.stringify(extractFormFields(result.blocks), null, 2));
EOFnode --input-type=module - <<'EOF'
import { markdownToHwpx } from "kordoc";
import { writeFileSync } from "node:fs";
const hwpx = await markdownToHwpx("# 제목\n\n본문\n\n| 항목 | 값 |\n| --- | --- |\n| 성명 | 홍길동 |");
writeFileSync("출력.hwpx", Buffer.from(hwpx));
EOFnode --input-type=module - <<'EOF'
import { compare } from "kordoc";
import { readFileSync } from "node:fs";
const before = readFileSync("이전버전.hwp");
const after = readFileSync("최신버전.hwpx");
const diff = await compare(before, after);
console.log(diff.stats);
EOF- Markdown 출력: 제목/본문/표가 기대한 순서로 정리됐는지 확인한다.
- JSON 출력:
success,blocks,metadata가 있는지 확인한다. - 이미지/표 구조:
blocks안image,table타입이 필요한 만큼 잡혔는지 확인한다. - 배치 처리: 입력 개수와 출력 개수가 크게 어긋나지 않는지 확인한다.
- 양식 필드 추출:
extractFormFields(result.blocks)결과가 비어 있지 않은지 확인한다. - 역변환: 생성된
.hwpx가 열리고 기본 서식/테이블이 유지되는지 확인한다. - 문서 비교:
diff.stats의 added / removed / modified 값이 입력 변화와 맞는지 확인한다.
- 손상된 문서나 일부 특수 양식은 경고가 섞일 수 있다.
- 이미지 기반 PDF는 OCR provider가 없으면 품질이 제한될 수 있다.
- 양식 필드 추출은 템플릿 라벨 품질에 따라 일부 필드가 인식되지 않을 수 있다.
- 공문서 자동화 목적이면 Markdown만 보는 것보다 JSON
blocks를 같이 확인하는 편이 안전하다. - 현재 배포본 기준으로 문서화된 CLI 명령은 기본 변환과
watch이며, 양식 처리와 비교는 Node API 예시를 기준으로 잡는 편이 안전하다.