•
•
◦
요소 관련 설명 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에 정보들이 추가된 것을 나타냄. 숫자가 달라도 구 버전과 호환 가능.
_(1).jpeg&blockId=0e552736-74f0-4f5a-89e1-328d4931ca7c)