49 lines
6.8 KiB
Markdown
49 lines
6.8 KiB
Markdown
# 문서 뷰어(미리보기) 확장자별 지원 사양 및 기술 사유 분석
|
|
|
|
본 문서는 본 프로젝트의 문서 미리보기 시스템에서 **지원 가능한 파일 확장자 목록과 구현 방식**, 그리고 **일부 포맷이 미리보기가 불가능하거나 제한적인 기술적 사유**를 체계적으로 정리한 기술 문서입니다.
|
|
|
|
---
|
|
|
|
## 1. 지원 가능한 확장자 및 뷰잉 방식 (Supported Formats)
|
|
시스템에서 감지 및 렌더링이 가능한 확장자는 크게 **(1) 웹 브라우저 직접 렌더링 방식**, **(2) 서버 측 PDF 변환 폴백 방식**, **(3) 전문 뷰어 연동 방식**으로 분류됩니다.
|
|
|
|
### 1.1 문서 및 도면 파일 (Document & CAD)
|
|
| 확장자 | 브라우저 직접 뷰잉 방식 | 서버 PDF 변환 뷰잉 | 미리보기 지원 상태 및 특이사항 |
|
|
| :--- | :--- | :--- | :--- |
|
|
| **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) 및 악성코드 실행 방지를 위해 보안상 원천 차단됩니다. <br> * **플랫폼 독립성**: 브라우저 샌드박스 환경에서는 로컬 머신의 커널에 직접 액세스하여 실행 프로그램을 실행할 수 없습니다. |
|
|
| **압축 파일** | `rar, 7z, tar, gz, alz, egg` | * **압축 알고리즘 독점성**: `.zip`을 제외한 `.rar`, `.7z` 등은 압축 및 해제 알고리즘이 브라우저 JavaScript 단에서 처리하기에 라이브러리가 매우 무겁거나, 유료 라이선스 제약(독점 포맷)이 있습니다. <br> * **성능 저하**: 클라이언트 브라우저 메모리 상에서 기가바이트 단위의 대용량 압축 파일을 직접 해제하여 트리 구조를 빌드하는 것은 브라우저 탭 다운을 유발합니다. |
|
|
| **데이터베이스** | `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` | * **시스템 자원**: 폰트 데이터는 글꼴 메타데이터의 모음이므로 독립적인 시각적 형태를 브라우저 캔버스 상에 프리뷰할 논리적 근거가 부재합니다. |
|