ICEPDF — 아크로벳을 닮은 PDF 에디터, AI와 0에서 1.0까지 2026.06.12

하루 만에 0에서 설치파일까지 — 엔진을 먼저 검증하고 뷰어를 세우다 (ICEPDF #2 구현)

엔진이 되는지 15가지를 먼저 시험하고, 뷰어·편집·변환을 붙여 127MB 단일 설치파일까지. 증거 기반으로 끝낸 첫 버전.

계획만으로는 아무것도 안 된다. 가장 먼저 한 일은 "엔진이 정말 내가 원하는 걸 다 해주는가"를 코드로 확인하는 것이었다.

1단계: 엔진 스파이크 — 믿지 말고 검증하라

mupdf.js로 ICEPDF가 의존할 모든 동작을 미리 시험하는 작은 스크립트를 짰다. 렌더링, 텍스트 선택, 형광펜 주석, 빈 페이지 삽입, 다른 PDF에서 페이지 가져오기, 책갈피 쓰기, 이미지 삽입, 저장, 그리고 저장한 파일을 다시 열어 그 모든 게 살아있는지까지. 한글 추출도 포함했다.

결과는 15개 검증 중 1개만 빼고 통과. 막힌 하나(PDFPage.insertImage가 없음)는 곧 대안을 찾았다 — 이미지는 'Stamp 주석 + 이미지 지정' 방식으로 넣으면 됐다. 이렇게 시작 전에 막다른 길을 미리 걸러내는 게 핵심이었다.

2단계: 뷰어와 편집을 세우다

엔진이 확인됐으니 화면을 올렸다. 문서 작업은 백그라운드 스레드에서 돌리고, 화면은 React로 그린다. 연속 스크롤 뷰어, 줌, 썸네일 사이드바, 텍스트 선택, 형광펜, 페이지 삽입/삭제, 책갈피 트리, 이미지 삽입까지 한 번에 붙였다.

ICEPDF 메인 화면 — 툴바, 썸네일 사이드바, 뷰어

PPT처럼 여러 페이지를 한눈에 보는 그리드 뷰도 넣었다. 크기 슬라이더로 키우고, 더블클릭하면 그 페이지로 이동한다.

PPT식 그리드 미리보기

3단계: 변환 — PDF를 한글로

kordoc으로 PDF를 마크다운으로 뽑고, 다시 HWPX(한글)로 변환하는 파이프라인을 연결했다. 텍스트와 표가 한글 문서로 넘어간다.

4단계: 단일 설치파일

electron-builder로 NSIS 설치파일을 만들었다. 처음엔 490MB짜리 OCR 의존성이 통째로 딸려와 286MB가 됐는데, 안 쓰는 모듈을 빌드 후처리에서 잘라내 127MB까지 줄였다.

증거 기반으로 끝내기

"될 것 같다"가 아니라 실행 결과로 확인했다. 빌드된 앱을 자동으로 띄워 문서 열기→선택→형광펜→페이지 편집→저장→재열기까지 검사하는 e2e 테스트가 13개 전부 통과, 실제 한국어 PDF 변환도 통과. 그렇게 하루 작업으로 0에서 설치 가능한 첫 버전이 나왔다.

물론 진짜 시작은 여기부터였다. 직접 써보니 고칠 게 쏟아졌다. 다음 글은 그 피드백을 반영한 기록이다.

ICEPDF — 아크로벳을 닮은 PDF 에디터, AI와 0에서 1.0까지 프로젝트로