GitHub ↗
← 모든 프로젝트
개인 도구 · 테스트

HWP 웹 에디터

맥북·윈도우를 새로 설치할 때 한글을 다시 설치하는 번거로움에서 시작한 개인용 테스트 도구. rhwp 오픈소스를 활용해 브라우저에서 HWP/HWPX 열기와 기본 사용 흐름을 구성했습니다.

개인 프로젝트오픈소스 활용ReactTypeScriptViteHWPHWPXWebAssemblyAI-assisted DevelopmentCodex
오픈 한글 에디터의 새 문서·기존 문서 열기 시작 화면
01 / PROBLEM & GOALS

문제/목표 — 왜 만들었는가

한글 설치 없이 기본 문서 작업을 해보고 싶어서

새로 설치한 맥북·윈도우 환경에서 한글을 다시 설치하는 번거로움이 출발점이었습니다. 브라우저에서 기본 문서 작업을 해보자는 생각으로 오픈소스 에디터를 활용해 개인용 도구를 만들었습니다.

프로젝트 성격
개인용 · 포트폴리오·테스트
사용 환경
브라우저 · React · TypeScript · Vite
오픈소스
rhwp / @rhwp/editor · MIT

기존 문제

운영체제를 새로 설치할 때마다 한글을 설치해야 하는 번거로움이 있었습니다. 간단한 문서를 위해 별도 프로그램을 설치하지 않고 사용할 방법을 찾고 싶었습니다.

사용자가 필요로 한 것

브라우저에서 파일을 선택하고 기본 문서 작업을 해본 뒤 결과를 HWP 파일로 저장하는 간단한 흐름이 필요했습니다.

목표

설치 부담 없이 기본 작업 시도

맥·윈도우에서 별도 한글 프로그램 설치 없이 브라우저로 문서를 열고 기본 작업을 해보는 흐름을 구성했습니다.

직접 쓸 수 있는 도구

오픈소스 에디터를 간단한 시작 화면과 파일 열기·저장 UI로 연결해 개인용 도구로 만들었습니다.

내가 맡은 역할

개인용 포트폴리오·테스트 프로젝트로 화면과 파일 처리 흐름을 구성했습니다. rhwp 오픈소스의 문서 엔진을 활용하고 React 기반 시작 화면, 파일 열기, 로딩 표시, 저장과 에디터 수명 관리를 연결했습니다.

기본 기능을 사용해보는 개인용 도구입니다. 문서 엔진·파서·렌더러는 rhwp 오픈소스를 활용했으며 한글 프로그램의 모든 기능이나 모든 문서의 호환성을 구현했다는 의미는 아닙니다.

02 / SOLUTION & IMPLEMENTATION

해결/구현 — 어떻게 만들었는가

전체 아키텍처

사용자는 React 화면에서 파일을 선택합니다. File API가 파일을 ArrayBuffer로 읽어 @rhwp/editor의 loadFile에 전달하고 로컬 studio iframe의 rhwp WebAssembly 엔진이 문서를 처리합니다. 저장 버튼은 exportHwp로 바이트를 받아 Blob과 다운로드 링크로 파일을 저장합니다. 화면과 파일 흐름은 본인 구현이며 문서 엔진은 rhwp 오픈소스를 활용합니다.
React 화면과 오픈소스 문서 엔진 연결

앱의 파일 열기·저장 코드 기준 구조입니다. 자체 문서 포맷 엔진을 개발한 프로젝트로 표현하지 않습니다.

크게 보기 ↗
이미지의 텍스트 설명

사용자는 React 화면에서 파일을 선택합니다. File API가 파일을 ArrayBuffer로 읽어 @rhwp/editor의 loadFile에 전달하고 로컬 studio iframe의 rhwp WebAssembly 엔진이 문서를 처리합니다. 저장 버튼은 exportHwp로 바이트를 받아 Blob과 다운로드 링크로 파일을 저장합니다. 화면과 파일 흐름은 본인 구현이며 문서 엔진은 rhwp 오픈소스를 활용합니다.

직접 구성한 React 화면

새 문서 진입과 파일 선택 화면, 현재 파일명, 저장·닫기 버튼과 로딩 표시를 구성했습니다.

rhwp 에디터 임베드

@rhwp/editor의 createEditor를 사용하고 프로젝트의 studio 페이지를 iframe으로 연결합니다. 문서 처리·편집 기능은 오픈소스 엔진을 활용합니다.

파일과 에디터 수명 관리

ArrayBuffer 파일 전달, exportHwp 결과의 Blob 다운로드, 파일 입력 초기화와 destroy 호출을 연결했습니다.

기술 선택 이유

rhwp · @rhwp/editor

기본적인 HWP/HWPX 처리를 처음부터 구현하는 대신 Edward Kim의 MIT 라이선스 rhwp 오픈소스를 활용했습니다. 문서 엔진의 역할과 본인의 UI·연동 작업을 구분합니다.

React · TypeScript · Vite

파일명·로딩·에디터 표시 상태와 버튼 동작을 구성하고 Vite로 로컬 웹 화면을 실행합니다.

File API · Blob · WebAssembly

앱은 파일을 ArrayBuffer로 읽어 전달하고 저장 결과를 Blob으로 내려받습니다. 문서 처리는 임베드한 오픈소스의 WebAssembly 엔진을 사용합니다.

DB · API · 인프라 구조

정적 studio 자산

studio HTML·JavaScript·WASM과 관련 자산을 프로젝트에 포함하고 임베드 URL로 연결합니다.

브라우저 파일 처리

앱 코드에는 로컬 파일 선택과 에디터 전달, HWP 다운로드 흐름이 있습니다. 별도 서버 DB를 사용하는 구조로 소개하지 않습니다.

핵심 처리 흐름

  1. 01. 파일 선택 또는 에디터 진입

    시작 화면에서 문서를 선택하거나 에디터 화면으로 이동합니다.

  2. 02. 오픈소스 에디터 초기화

    createEditor로 studio iframe을 연결하고 준비된 에디터 인스턴스를 관리합니다.

  3. 03. 문서 데이터 전달

    파일을 ArrayBuffer로 읽고 loadFile에 파일명과 데이터를 전달합니다.

  4. 04. 저장과 닫기

    exportHwp 결과를 Blob 다운로드로 연결하고 닫기·해제 시 에디터 인스턴스를 정리합니다.

내가 직접 구현한 것

개인 불편에서 출발한 도구 기획

OS 재설치 후 한글을 다시 설치하는 번거로움을 기본적인 웹 문서 도구로 해결해보려 했습니다.

화면과 사용 흐름 구현

문서 선택·시작 화면·파일명·로딩 표시·저장·닫기 UI를 구성했습니다.

오픈소스 연동

rhwp 에디터 임베드와 파일 API, 다운로드·에디터 수명 관리를 연결했습니다. 문서 엔진 개발은 오픈소스의 기여입니다.

03 / RESULTS & VALIDATION

결과/검증 — 그래서 무엇이 좋아졌는가

직접 사용해보는 웹 도구 구성

오픈소스를 활용해 기본 문서 흐름을 시험할 수 있는 개인용 도구를 만들었습니다.

기본 기능 중심의 구현 범위

완성된 한글 대체 제품이 아니라 포트폴리오와 개인 테스트를 위한 도구입니다. 복잡한 문서의 조판·서식·편집 호환성은 추가 검증이 필요합니다.

검증 방법과 근거

앱 코드와 rhwp 임베드 API를 확인하고 임시 로컬 환경에서 시작 화면과 문서 에디터 화면을 실행해 확인했습니다. 캡처에는 오픈소스에 포함된 기능 확인용 샘플 문서를 사용하며 개인 문서는 사용하지 않습니다. rhwp 제공 샘플 HWP를 열고 HWP로 다운로드한 뒤 저장한 파일을 다시 여는 흐름을 확인했습니다. 모든 문서 형식이나 편집 기능의 호환성을 검증한 것은 아닙니다.

실행 화면

오픈 한글 에디터의 새 문서와 기존 문서 열기 버튼
시작 화면 · 문서 선택

React · Vite 앱 직접 실행 화면

rhwp 에디터를 임베드한 HWP 웹 에디터
오픈소스 에디터 연동 화면

로컬 실행 · rhwp 제공 기능 테스트 샘플 문서