크라우니 오피스 Phase 2 — 내보내기 4종(MD·RTF·DOCX·PDF)
개요
spec/오피스-개발계획.md Phase 2 "내보내기" 항목 완결. 기존 HTML 내보내기(⌘⇧E)에 이어
Markdown·RTF·DOCX·PDF 4종을 crowny-word 엔진 이식으로 연결. File > 내보내기 서브메뉴로 5종
전체 노출. 앱 번들·crowny-browser.m·crowny-shell.m·Makefile 기존 타깃 무수정.
무엇을 했는지
한선씨 정본 — bundle/office/bridge/내보내기.한선 (신규, ~1080줄, 111함수)
- HTML 파서(신규 로직): 블록나누기(html) → 블록튜플배열. 블록튜플 = FS(글자변환1)로 구분한
- MD: 마크다운왕복.한선 스타일(헤딩#, 목록-/N., 인용>, 표|---|) 직접 조립 + 런상태를MD적용()으로
* _ \ [ ]` 이스케이프.
- RTF: RTF내보내기.한선 저수준 조각(RTF헤더/색테이블수집/RTF이스케이프/굵게기울임런변환/
- DOCX: DOCX파일.한선(CRC32/ZIP store/XML 조립) + DOCX조각.한선(표XML기초) 이식.
- PDF: PDF텍스트.한선(옥텟이스케이프/PDF객체/xref/트레일러/다중페이지분할) 이식, 텍스트 전용
- CLI 규약:
CROWNY_OFFICE_EXPORT_MODE(md|rtf|docx|pdf) + TITLE_FILE/HTML_FILE(입력) +
네이티브 — native/crowny-ai-content.m / crowny-ai-main.m
- content.m:
caOfficeExportBridgeSrc/EnsureBridgeToau/RunVMStage(문서저장.한선 브릿지와 별도
caExportOfficeDocumentFormat:ext:label:(공용 구현, kCAOfficeExtractJS 재사용)
+ 4개 공개 셀렉터(caExportOfficeDocumentMarkdown/RTF/DOCX/PDF).
- main.m: File > 내보내기 서브메뉴(HTML 기존 ⌘⇧E 유지 + Markdown/RTF/DOCX/PDF 4종 신규) +
실측 검증
cc -fsyntax-only -fobjc-arc -DCROWNY_HYBRIDcontent.m/main.m 각각 통과.make ai— 에러 0 · 경고 0. 458K 바이너리. 3초 생존 확인.- 한선씨 정본 자체시험 30/30 PASS(hanseonc_high 컴파일 → crownyc run).
- CLI 모드로 실제 픽스처(제목·H1·굵게+기울임·UL·OL·인용·표·HR·특수문자) 4포맷 전부 "OK" +
.md: cat으로 # 제목/**굵게**/| 표 | 확인
- .rtf: file → "Rich Text Format data, version 1, ANSI", textutil -convert txt로 왕복
- .docx: file → "Microsoft Word 2007+", unzip -l로 5개 내부파일(Content_Types/document.xml
등) 확인, xmllint --noout로 document.xml/styles.xml/Content_Types.xml 전부 XML-VALID,
textutil -convert txt로 실제 텍스트 추출 성공(헤딩·굵게·목록·표·HR 전부 보존)
- .pdf: file → "PDF document, version 1.4, 1 pages", qlmanage -t로 Quick Look 썸네일
생성 성공(시스템 PDF 렌더러로 실제 렌더 확인)
- 회귀 하니스: 27/27 PASS(bundle/office/bridge/회귀실행.sh, 무변경 확인).
관련 파일
/Users/ef/crownybrowser/bundle/office/bridge/내보내기.한선(신규)/Users/ef/crownybrowser/native/crowny-ai-content.m(CAOfficeIO 카테고리 확장)/Users/ef/crownybrowser/native/crowny-ai-main.m(File>내보내기 서브메뉴)- 원본 엔진(무수정):
/Users/ef/crowny-word/도구/{마크다운왕복,RTF내보내기,DOCX파일,DOCX조각,PDF텍스트}.한선
잔여 이슈
- 표 셀 내부 서식(굵게/기울임)·중첩 목록·이미지 삽입은 1단계 범위 밖(문서화된 한계) — 후속 심화.
- 전체 마우스 조작 GUI E2E(File>내보내기 메뉴 클릭)는 미실시 — 이 데스크톱이 다세션 공유
- 크라우니코드: lookup MISS(신규 도메인) → learn 1건 등록(오피스내보내기_HTML블록파서_4포맷조립).