logo
HWPJS
  • 가이드
  • API
  • 명세서
  • 로드맵
  • 백로그
    API 레퍼런스
    toJson
    toMarkdown
    fileHeader
    Previous pagetoMarkdown

    #fileHeader

    HWP 파일의 FileHeader만 추출하여 JSON 형식으로 반환하는 함수입니다.

    #시그니처

    function fileHeader(data: Buffer): string

    #매개변수

    #data: Buffer

    HWP 파일의 바이트 배열입니다 (Buffer 또는 Uint8Array).

    예제:

    import { readFileSync } from 'fs';
    const fileBuffer = readFileSync('./document.hwp');
    const data = new Uint8Array(fileBuffer);

    #반환값

    #string

    FileHeader 정보를 담은 JSON 문자열입니다.

    FileHeader에는 다음 정보가 포함됩니다:

    • 시그니처 (signature)
    • 버전 정보 (version)
    • 압축 여부 (is_compressed)
    • 암호화 여부 (is_encrypted)
    • 기타 문서 속성

    #예제

    #기본 사용법

    Web
    React Native
    Node.js
    // buffer-polyfill을 먼저 import한 후
    import * as hwpjs from '@ohah/hwpjs';
    
    // 파일 입력에서 HWP 파일 읽기
    const fileInput = document.querySelector('input[type="file"]');
    fileInput.addEventListener('change', async (e) => {
      const file = (e.target as HTMLInputElement).files?.[0];
      if (!file) return;
    
      const arrayBuffer = await file.arrayBuffer();
      const data = new Uint8Array(arrayBuffer);
    
      // FileHeader 추출
      const headerString = hwpjs.fileHeader(data);
      const header = JSON.parse(headerString);
    
      console.log('버전:', header.version);
      console.log('압축 여부:', header.is_compressed);
      console.log('암호화 여부:', header.is_encrypted);
    });
    import { Hwpjs } from '@ohah/hwpjs';
    import RNFS from 'react-native-fs';
    import { Platform } from 'react-native';
    
    // 파일 경로 설정
    const filePath = Platform.OS === 'ios' 
      ? `${RNFS.MainBundlePath}/document.hwp`
      : `${RNFS.DocumentDirectoryPath}/document.hwp`;
    
    // 파일을 base64로 읽기
    const fileData = await RNFS.readFile(filePath, 'base64');
    
    // base64를 number[]로 변환
    const numberArray = [...Uint8Array.from(atob(fileData), (c) => c.charCodeAt(0))];
    
    // FileHeader 추출
    const result = Hwpjs.fileHeader(numberArray);
    const header = JSON.parse(result);
    
    console.log('버전:', header.version);
    console.log('압축 여부:', header.is_compressed);
    console.log('암호화 여부:', header.is_encrypted);
    import { readFileSync } from 'fs';
    import { fileHeader } from '@ohah/hwpjs';
    
    const fileBuffer = readFileSync('./document.hwp');
    const result = fileHeader(fileBuffer);
    const header = JSON.parse(result);
    
    console.log('버전:', header.version);
    console.log('압축 여부:', header.is_compressed);
    console.log('암호화 여부:', header.is_encrypted);

    #에러 처리

    Web
    React Native
    Node.js
    import * as hwpjs from '@ohah/hwpjs';
    
    try {
      const arrayBuffer = await file.arrayBuffer();
      const data = new Uint8Array(arrayBuffer);
      const result = hwpjs.fileHeader(data);
      const header = JSON.parse(result);
      console.log('FileHeader:', header);
    } catch (error) {
      console.error('FileHeader 추출 실패:', error);
    }
    import { Hwpjs } from '@ohah/hwpjs';
    import RNFS from 'react-native-fs';
    import { Platform } from 'react-native';
    
    try {
      const filePath = Platform.OS === 'ios' 
        ? `${RNFS.MainBundlePath}/document.hwp`
        : `${RNFS.DocumentDirectoryPath}/document.hwp`;
      const fileData = await RNFS.readFile(filePath, 'base64');
      const numberArray = [...Uint8Array.from(atob(fileData), (c) => c.charCodeAt(0))];
      const result = Hwpjs.fileHeader(numberArray);
      const header = JSON.parse(result);
      console.log('FileHeader:', header);
    } catch (error) {
      console.error('FileHeader 추출 실패:', error);
    }
    import { readFileSync } from 'fs';
    import { fileHeader } from '@ohah/hwpjs';
    
    try {
      const fileBuffer = readFileSync('./document.hwp');
      const result = fileHeader(fileBuffer);
      const header = JSON.parse(result);
      console.log('FileHeader:', header);
    } catch (error) {
      console.error('FileHeader 추출 실패:', error);
    }

    #에러

    HWP 파일 형식이 올바르지 않거나 FileHeader를 읽을 수 없는 경우 에러가 발생합니다.

    • HWP 파일 형식이 올바르지 않은 경우
    • 파일이 손상된 경우
    • FileHeader 스트림을 읽을 수 없는 경우

    #참고

    이 함수는 전체 문서를 파싱하지 않고 FileHeader만 빠르게 추출합니다. 문서의 메타데이터만 필요한 경우에 유용합니다.