@cosogi/rhwp-core
v0.7.12
Published
Unofficial fork package for rhwp WASM document tooling
Maintainers
Readme
@cosogi/rhwp-core
Unofficial fork package for rhwp-based document tooling. This package is not published by, endorsed by, or affiliated with the upstream rhwp maintainers.
This package is built from the c0sogi/rhwp fork and keeps the upstream MIT license. Use it when you need the forked WASM API surface before it is available from upstream packages.
Install
npm install @cosogi/rhwp-coreBrowser Usage
import init, { HwpDocument } from '@cosogi/rhwp-core';
globalThis.measureTextWidth = (font, text) => {
const canvas = globalThis.__rhwpCanvas ??= document.createElement('canvas');
const ctx = canvas.getContext('2d');
ctx.font = font;
return ctx.measureText(text).width;
};
await init({ module_or_path: '/rhwp_bg.wasm' });
const doc = new HwpDocument(hwpBytes);
console.log(doc.pageCount());Node Smoke Usage
Node does not provide Canvas text measurement by default, so callers must provide globalThis.measureTextWidth before using layout-dependent APIs.
import { readFileSync } from 'node:fs';
import { createRequire } from 'node:module';
import init, { HwpDocument } from '@cosogi/rhwp-core';
globalThis.measureTextWidth ??= (_font, text) =>
Array.from(text).reduce((sum, ch) => sum + (ch.charCodeAt(0) > 0x7f ? 14 : 7), 0);
const require = createRequire(import.meta.url);
const wasmPath = require.resolve('@cosogi/rhwp-core/rhwp_bg.wasm');
await init({ module_or_path: readFileSync(wasmPath) });
const doc = new HwpDocument(readFileSync('sample.hwp'));
console.log(doc.pageCount());
console.log(JSON.parse(doc.getPageTextContext(0, 200)));Fork-Specific APIs
The current fork build includes APIs useful for LLM/MCP workflows:
getPageTextContext(page, maxChars)searchPageText(query, page, caseSensitive, contextChars)getPageMemos(page)searchPageMemos(query, page, caseSensitive, contextChars)
Source
- Fork repository: https://github.com/c0sogi/rhwp
- Upstream project: https://github.com/edwardkim/rhwp
