Loading...
Loading...
Edit HWP documents — insert/delete text, replace-all, create tables, set cell text — with the k-skill-rhwp CLI that wraps the @rhwp/core WASM engine (rhwp by Edward Kim).
npx skill4agent add nomadamas/k-skill rhwp-editk-skill-rhwp.hwp@rhwp/coreinsertTextdeleteTextreplaceAllcreateTablesetCellTexthwprhwp-advancedhwp#196markdownToHwpxrhwp-advancedrhwpexport-svg --debug-overlaydump-pagesir-diffrhwp-advancedrhwpk-skill-rhwpnpx --yes k-skill-rhwp --helpnpm install -g k-skill-rhwpnpm install k-skill-rhwpk-skill-rhwp@rhwp/core@^0.7.3rhwprhwp-advanced--section N --paragraph N --offset N--section N --parent-paragraph N --control N --cell N [--cell-paragraph N]--text "..."--query "..."--replacement "..."create-table--rows N --cols N--case-sensitive--no-replaceset-cell-text--format svg|htmlrender| 작업 | 기본 경로 |
|---|---|
| 본문 문단에 텍스트 삽입 | |
| 본문 문단에서 텍스트 삭제 | |
| 단순 전체 치환(같은 서식 유지, 본문 문단만) | |
| 치환 대상 위치 사전 조회(본문 문단만) | |
| 표 셀 안의 텍스트 확인 | |
| 빈 표 삽입 | |
| 표 셀 내용 교체/채우기 | |
| 빈 HWP 생성 | |
| 구조 파악(섹션/문단 수·길이) | |
| 페이지 SVG/HTML 미리보기 | |
ok: truecharOffsetparaIdxcontrolIdxbytesWrittenoutputPathk-skill-rhwp info <input>sourceFormatsectionCountparagraphCountlengthk-skill-rhwp search <input> --query "2025"--output# 빈 문서 만들기
npx k-skill-rhwp create-blank ./out/blank.hwp
# 본문 첫 문단 앞에 제목 삽입
npx k-skill-rhwp insert-text ./in.hwp ./out/with-title.hwp \
--section 0 --paragraph 0 --offset 0 \
--text "2026년 오픈소스 AI·SW 지원사업 신청서"
# 2025 → 2026 일괄 치환
npx k-skill-rhwp replace-all ./in.hwp ./out/2026.hwp \
--query 2025 --replacement 2026
# 3행 4열 표 삽입(본문 2번째 문단 끝)
npx k-skill-rhwp create-table ./in.hwp ./out/with-table.hwp \
--section 0 --paragraph 1 --offset 0 --rows 3 --cols 4
# 방금 만든 표의 (0,0) 셀에 "합계" 삽입
# - create-table 결과의 paraIdx / controlIdx 를 그대로 재사용
npx k-skill-rhwp set-cell-text ./out/with-table.hwp ./out/with-cell.hwp \
--section 0 --parent-paragraph <paraIdx> --control <controlIdx> \
--cell 0 --text "합계"k-skill-rhwp info <output>paragraphs[].lengthparagraphCountk-skill-rhwp render <output> --page 0 --format htmlconst { insertText, getDocumentInfo } = require("k-skill-rhwp");
await insertText({
input: "./in.hwp",
output: "./out.hwp",
section: 0,
paragraph: 0,
offset: 0,
text: "안녕하세요"
});
console.log(await getDocumentInfo("./out.hwp"));@rhwp/coreglobalThis.measureTextWidthnode-canvasok === truebytesWritteninfoparaIdxcontrolIdxset-cell-textk-skill-rhwp info <output>sectionCountparagraphCountlength.hwpsection/paragraph/offset렌더링 오류: 구역 인덱스 0 범위 초과infok-skill-rhwp render <output>convertToEditablek-skill-rhwprhwp-advancedrhwp convert@rhwp/core--text=$'...'searchreplace-allsearchTextk-skill-rhwp replace-allsearchfound:falsereplace-alllist-paragraphsinfoset-cell-textreplace-all--replacement\n\rinsert-textaaaaaaaaaaaaa--case-sensitiveString.prototype.toLowerCase()İireplace-allcase-insensitive matching is unsafe because case folding changes the UTF-16 length--case-sensitive2025 → 2026@rhwp/corek-skill-rhwphwprhwp-advanced