Search

hwp, hwpx

subtitle
Tags
Created
2025/11/17
2 more properties
요소 관련 설명 92p
pic 요소 180p (AbstractComponentType 10.9.5)
cdn.hancom.com hwp 문서 형식

HWPDocument

import DocInfo from './docInfo' import HWPHeader from './header' import Section from './section' class HWPDocument { header: HWPHeader info: DocInfo sections: Section[] constructor( header: HWPHeader, info: DocInfo, sections: Section[], ) { this.header = header this.info = info this.sections = sections } } export default HWPDocument
JavaScript
복사
header, info, sections로 구분

FileHeader

import HWPVersion from './version' interface Properties { /** 압축 여부 */ compressed: boolean /** 암호 설정 여부 */ encrypted: boolean /** 배포용 문서 여부 */ distribution: boolean /** 스크립트 저장 여부 */ script: boolean /** DRM 보안 문서 여부 */ drm: boolean /** XMLTemplate 스토리지 존재 여부 */ hasXmlTemplateStorage: boolean /** 문서 이력 관리 존재 여부 */ vcs: boolean /** 전자 서명 정보 존재 여부 */ hasElectronicSignatureInfomation: boolean /** 공인 인증서 암호화 여부 */ certificateEncryption: boolean /** 전자 서명 예비 저장 여부 */ prepareSignature: boolean /** 공인 인증서 DRM 보안 문서 여부 */ certificateDRM: boolean /** CCL 문서 여부 */ ccl: boolean /** 모바일 최적화 여부 */ mobile: boolean /** 개인 정보 보안 문서 여부 */ isPrivacySecurityDocument: boolean /** 변경 추적 문서 여부 */ trackChanges: boolean /** 공공누리(KOGL) 저작권 문서 */ kogl: boolean /** 비디오 컨트롤 포함 여부 */ hasVideoControl: boolean /** 차례 필드 컨트롤 포함 여부 */ hasOrderFieldControl: boolean } /** * @see https://github.com/hahnlee/hwp.js/blob/master/docs/hwp/5.0/FileHeader.md */ class HWPHeader { version: HWPVersion signature: string properties: Properties constructor(version: HWPVersion, signature: string, properties: Properties) { this.version = version this.signature = signature this.properties = properties } } export default HWPHeader
JavaScript
복사
version, signature, properties 등으로 구성

version

hwp.js에서 정해둔 SUPPORTED_VERSION과 비교했을 때 메이저, 마이너 버전이 다르면 파일이 호환되지 않는다.
it('should return correct compatible', () => { const targetVersion = new HWPVersion(5, 3, 0, 0) const highMajorVersion = new HWPVersion(6, 0, 1, 2) expect(highMajorVersion.isCompatible(targetVersion)).toEqual(false) const sameMajorAndHigerMinorVersion = new HWPVersion(5, 4, 1, 7) expect(sameMajorAndHigerMinorVersion.isCompatible(targetVersion)).toEqual(false) const sameMajorAndSameMinorVersion = new HWPVersion(5, 3, 1, 7) expect(sameMajorAndSameMinorVersion.isCompatible(targetVersion)).toEqual(true) const sameMajorAndLowerMinorVersion = new HWPVersion(5, 1, 2, 4) expect(sameMajorAndLowerMinorVersion.isCompatible(targetVersion)).toEqual(true) const lowerMajorVersion = new HWPVersion(3, 0, 0, 0) expect(lowerMajorVersion.isCompatible(targetVersion)).toEqual(false) })
JavaScript
복사
0xMMnnPPrr의 형태(예 5.0.3.0)
MM: 문서 형식의 구조가 완전히 바뀌는 것을 나타냄. 숫자가 다르면 구 버전과 호환 불가능.
nn: 큰 구조는 동일하나, 큰 변화가 있는 것을 나타냄. 숫자가 다르면 구 버전과 호환 불가능.
PP: 구조는 동일, Record가 추가되었거나, 하위 버전에서 호환되지 않는 정보가 추가된 것을 나타냄. 숫자가 달라도 구 버전과 호환 가능.
rr: Record에 정보들이 추가된 것을 나타냄. 숫자가 달라도 구 버전과 호환 가능.