6.8 KiB
6.8 KiB
문서 뷰어(미리보기) 확장자별 지원 사양 및 기술 사유 분석
본 문서는 본 프로젝트의 문서 미리보기 시스템에서 지원 가능한 파일 확장자 목록과 구현 방식, 그리고 일부 포맷이 미리보기가 불가능하거나 제한적인 기술적 사유를 체계적으로 정리한 기술 문서입니다.
1. 지원 가능한 확장자 및 뷰잉 방식 (Supported Formats)
시스템에서 감지 및 렌더링이 가능한 확장자는 크게 (1) 웹 브라우저 직접 렌더링 방식, (2) 서버 측 PDF 변환 폴백 방식, (3) 전문 뷰어 연동 방식으로 분류됩니다.
1.1 문서 및 도면 파일 (Document & CAD)
| 확장자 | 브라우저 직접 뷰잉 방식 | 서버 PDF 변환 뷰잉 | 미리보기 지원 상태 및 특이사항 |
|---|---|---|---|
| 자체 PDF.js 뷰어로 즉시 출력 | (변환 불필요) | [상시 지원] 표준 문서 포맷으로 100% 원본 렌더링 지원 | |
| hwp, hwpx | hwp.js 라이브러리로 직접 뷰잉 |
LibreOffice PDF 변환본 로드 | [상시 지원] 직접 뷰잉 도중 레이아웃 겹침 발생 시 상단 "PDF로 보기" 버튼을 눌러 원본 고정밀 보기 지원 |
| docx | docx-preview 라이브러리로 직접 뷰잉 |
OfficeToPDF PDF 변환본 로드 | [상시 지원] 직접 뷰잉 도중 서식 누락 발생 시 상단 "PDF로 보기" 버튼을 눌러 원본 고정밀 보기 지원 |
| xlsx, xls, xlsm | Luckysheet/LuckyExcel로 시트 뷰잉 |
OfficeToPDF PDF 변환본 로드 | [상시 지원] 직접 시트 뷰잉 시 도형(Shapes)이 안 보일 때 상단 "PDF로 보기" 버튼을 눌러 원본 고정밀 보기 지원 |
| doc | 직접 뷰잉 불가 (이진 포맷 한계) | OfficeToPDF PDF 변환본 로드 | [상시 지원] 백엔드에서 PDF로 즉시 자동 변환하여 고해상도 미리보기 화면을 출력함 |
| ppt, pptx | 직접 뷰잉 불가 (웹 파서 미비) | OfficeToPDF PDF 변환본 로드 | [상시 지원] 백엔드에서 PDF로 즉시 자동 변환하여 고해상도 미리보기 화면을 출력함 |
| dwg, dxf | 직접 뷰잉 불가 (CAD 도면 엔진 필요) | DwgToPdfSwigConverter 로드 | [상시 지원] 백엔드에서 PDF로 즉시 자동 변환하여 고해상도 미리보기 화면을 출력함 |
| grm | 직접 뷰잉 불가 | 서버 PDF 변환본 로드 | [상시 지원] 백엔드에서 PDF로 즉시 자동 변환하여 고해상도 미리보기 화면을 출력함 |
1.2 미디어 및 기타 포맷 (Media & Others)
| 분류 | 확장자 | 브라우저 렌더링 방식 | 상세 설명 |
|---|---|---|---|
| 이미지 | png, jpg, jpeg, webp, gif |
<img> 태그 렌더링 |
브라우저 표준 그래픽 렌더링 사용. 이미지 메타데이터가 파노라마(panorama)인 경우 별도의 3D 파노라마 뷰어(pannellum) 연동 |
| 동영상 | mp4, mov, webm |
<video> 태그 렌더링 |
HTML5 표준 비디오 코덱 플레이어 사용 |
| 텍스트 | txt, log, md |
<pre> 태그 렌더링 |
인코딩 감지 후 플레인 텍스트 렌더링 (마크다운은 스타일링 적용) |
| 3D 모델 | glb, gltf, obj, stl, fbx, 3dm |
Three.js 3D 뷰어 연동 |
WebGL 기반의 3D 객체 직접 렌더링 및 회전/스케일 제어 지원 |
| 공간 정보 | gsim |
GSIM 전용 뷰어 웹앱 연동 | 별도 마운트된 GSIM 엔진 프레임 내부 렌더링 |
| BIM 모델 | ifc |
IFC 뷰어 전용 iframe 연동 | web-ifc-three 기반의 BIM 모델링 구조 브라우저 직접 렌더링 |
| 기타 | zip |
폴더/파일 트리 렌더링 | 압축을 풀지 않고 내부 디렉토리 아키텍처를 JSON으로 트리 뷰잉 |
| 링크 | url |
iframe 또는 새 창 이동 | 등록된 외부 URL 리다이렉트 처리 |
| 웹문서 | html |
iframe 렌더링 | HTML 샌드박스 프레임 내부 렌더링 |
2. 미리보기 미지원 확장자 및 기술 사유 (Unsupported Formats)
아래 확장자들은 미리보기가 불가능하며 오직 파일 다운로드만 지원됩니다. 그 구체적인 기술 사유는 다음과 같습니다.
| 파일 분류 | 대상 확장자 (예시) | 미리보기 미지원 기술 사유 |
|---|---|---|
| 실행 파일 | exe, msi, bat, sh, cmd, com |
* 보안 위험: 웹 브라우저 내에서 OS 실행 파일을 구동하는 것은 크로스 사이트 스크립팅(XSS) 및 악성코드 실행 방지를 위해 보안상 원천 차단됩니다. * 플랫폼 독립성: 브라우저 샌드박스 환경에서는 로컬 머신의 커널에 직접 액세스하여 실행 프로그램을 실행할 수 없습니다. |
| 압축 파일 | rar, 7z, tar, gz, alz, egg |
* 압축 알고리즘 독점성: .zip을 제외한 .rar, .7z 등은 압축 및 해제 알고리즘이 브라우저 JavaScript 단에서 처리하기에 라이브러리가 매우 무겁거나, 유료 라이선스 제약(독점 포맷)이 있습니다. * 성능 저하: 클라이언트 브라우저 메모리 상에서 기가바이트 단위의 대용량 압축 파일을 직접 해제하여 트리 구조를 빌드하는 것은 브라우저 탭 다운을 유발합니다. |
| 데이터베이스 | db, sqlite, mdb, sql, accdb |
* 연결 세션성: DB 파일은 전용 DBMS(엔진)가 백그라운드에서 구동되어 인덱스 쿼리를 수행해야 구조 열람이 가능합니다. 브라우저에서 바이너리 파일 그 자체를 텍스트나 그림처럼 단순 뷰잉하는 것은 논리적으로 불가능합니다. |
| 오디오 파일 | mp3, wav, ogg, flac, m4a |
* 기획적 요구 부재: 시스템이 문서 관리 및 3D 모델 협업 중심이므로 오디오 플레이어 탑재의 우선순위가 배제되어 있으며, 필요 시 브라우저 내장 플레이어로 다운로드 대체가 가능합니다. |
| 소스 코드 | java, py, cpp, cs, go, ts, js, css |
* 텍스트로 뷰잉 가능 여부: .txt와 동일하게 텍스트 에디터 방식으로 보여줄 수 있으나, 현재 시스템은 개발자용 IDE 환경이 아닌 일반 비즈니스 문서용이므로 코딩 확장자들은 다운로드 전용으로 제한됩니다. |
| 대용량 원시 그래픽 | psd, ai, eps, indd, tiff |
* 독점 그래픽 포맷: Adobe사 등의 전용 디자인 툴에서 쓰이는 포맷으로, 웹 표준 이미지 태그(<img>)가 인식하지 못하며, 클라이언트 단의 JS 파싱 라이브러리가 존재하지 않거나 극도로 불안정합니다. |
| 폰트 파일 | ttf, otf, woff, eot |
* 시스템 자원: 폰트 데이터는 글꼴 메타데이터의 모음이므로 독립적인 시각적 형태를 브라우저 캔버스 상에 프리뷰할 논리적 근거가 부재합니다. |