Skip to content

HWP 썸네일 자동 추출 + data-hwp-thumbnail 연동 #86

@edwardkim

Description

@edwardkim

개요

HWP 파일 내장 미리보기 이미지(PrvImage)를 자동 추출하여, 웹 관리자가 최소 코드로 방문자에게 HWP 문서 미리보기를 제공할 수 있도록 한다.

배경

  • HWP 파일의 CFB 컨테이너에 PrvImage 스트림(BMP/GIF)이 내장되어 있음
  • 파서에 PreviewPreviewImage 구조가 이미 구현됨 (src/model/document.rs)
  • Chrome/Edge 확장 프로그램이 data-hwp-thumbnail 속성을 지원함
  • 현재 WASM API에 썸네일 추출 기능 미노출

목표

웹 관리자가 아래 한 줄만으로 HWP 미리보기를 제공할 수 있어야 한다:

<a href="doc.hwp" data-hwp="true">문서.hwp</a>

확장 프로그램이:

  1. HWP 파일을 부분 다운로드 (Range 요청)
  2. PrvImage 스트림 추출
  3. 호버 시 썸네일 자동 표시

서버 측 처리 없이, 클라이언트 사이드 WASM으로 완결.

구현 범위

WASM API

  • extractThumbnail(data: Uint8Array) → { format, base64, width, height }
  • 전체 파서를 거치지 않고 CFB의 PrvImage 스트림만 빠르게 추출
  • BMP → PNG 변환 (브라우저 호환성)

Chrome 확장 프로그램

  • data-hwp="true" 링크 호버 시 썸네일 자동 표시
  • Range 요청으로 CFB 헤더 + PrvImage 스트림만 부분 다운로드
  • 캐싱 (동일 URL 재요청 방지)

CLI

  • rhwp thumbnail sample.hwp → PNG 파일 추출
  • rhwp thumbnail sample.hwp --base64 → base64 출력 (웹 임베드용)

웹 관리자 시나리오

최소 (확장 프로그램 자동)

<a href="doc.hwp" data-hwp="true">문서.hwp</a>
<!-- 확장이 자동으로 썸네일 추출 + 호버 미리보기 -->

사전 생성 (서버 측)

<a href="doc.hwp" data-hwp="true" data-hwp-thumbnail="/thumbs/doc.webp">문서.hwp</a>
<!-- 미리 생성된 썸네일 사용 (더 빠름) -->

배치 생성 도구

# 폴더 내 모든 HWP에서 썸네일 일괄 추출
for f in *.hwp; do rhwp thumbnail "$f" -o "thumbs/${f%.hwp}.webp"; done

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions