네이티브 XFA 부재 프로퍼티 생성
유닛: HPDFXFAEventScript, HPDFXFARuntime과 HPDFXFA로 통합
이벤트 접근
JavaScript 폼 노드는 getElement(className, occurrence=0)을 노출합니다. 없는 지원 프로퍼티는 스키마 기본값으로 만들어지고, 반복 접근은 같은 라이브 프로퍼티 핸들을 반환합니다
field.font나 draw.para 같은 직접 프로퍼티 접근은 지원되는 자식이 없을 때 occurrence 0을 만듭니다
const label = xfa.form.resolveNode("main.row[1].label");
const font = label.getElement("font", 0);
font.typeface = "Helvetica";
font.size = "18pt";
font.fill.color.value = "0,128,255";
label.para.hAlign = "right";
label.border.getElement("edge", 3).thickness = "0.25pt";
occurrence 인자는 스키마 카디널리티 안의 음수가 아닌 정수여야 합니다. edge[3]을 요청하면 앞의 빠진 edge occurrence들이 만들어지고 각자 스키마 기본값을 받습니다
지원되는 생성 경로
| 부모 클래스 | 지원되는 자식과 최대 occurrence 수 |
|---|---|
| field | assist, bind, border, calculate, caption, desc, extras, font, format, keep, margin, para, traversal, ui, validate와 value: 각 하나; items: 둘 |
| draw | assist, border, caption, desc, extras, font, keep, margin, para, traversal, ui와 value: 각 하나 |
| ui | extras와 picture: 각 하나; UI Property Overrides에서 기술한 상호 배타적 위젯 선택 하나 |
| passwordEdit, choiceList, checkButton | border, extras, margin: 각 하나 |
| font | extras와 fill: 각 하나 |
| para | hyphenation: 하나 |
| border | edge와 corner: 각 넷; extras, fill, margin: 각 하나 |
| caption | extras, font, margin, para, value: 각 하나 |
| margin | extras: 하나 |
| fill | color와 extras: 각 하나; linear, pattern, radial, solid, stipple: 상호 배타적 자식 하나 |
| textEdit | border, comb, extras, margin: 각 하나 |
| edge와 corner | color와 extras: 각 하나 |
목록에 없는 자식 클래스는 getElement에서 null을 반환합니다. 잘못된 occurrence와 충돌하는 fill 선택 자식은 이벤트 트랜잭션을 실패시킵니다
메타데이터 컨테이너 생성은 새로 저장된 스크립트를 실행하지 않습니다. event, calculate, validate 동작은 기존 런타임 실행 모델을 따릅니다
네이티브 영속성과 식별자
생성과 이후 쓰기는 선택된 반복 occurrence 아래에 실제 네이티브 form packet 노드를 발행합니다. 템플릿과 다른 occurrence는 원래 값을 유지합니다
다음 이벤트는 저장된 네이티브 form packet에서 폼 전용 프로퍼티 바인딩을 다시 만들므로, 직접 접근과 SOM 해석 모두 만들어진 계층을 봅니다
유지된 스크립트 객체 참조는 성공한 트랜잭션과 인스턴스 삽입 후에도 네이티브 프로퍼티를 계속 가리킵니다. 인스턴스가 제거된 뒤 참조에 쓰면 실패하고 트랜잭션을 복원합니다
반복 프로토타입을 클론하면 폼 전용 프로퍼티 구조도 클론되고, 새 프로퍼티 속성에는 다른 occurrence의 재정의 대신 스키마 기본값이 쓰입니다
엔진 실패와 네이티브 변경 실패는 네이티브 바이트, 프로퍼티 노드, datasets, 스크립트 상태, 인스턴스 순서를 복원합니다. 생성은 노드, 연산, 깊이, 바이트, 값 예산을 공유합니다
유효 소비자와 저장된 PDF 출력
field와 리치 draw 소비자는 실제 레이아웃과 플래트닝 중에 생성된 font, fill/color, 문단, border/edge 프로퍼티를 읽습니다. 이후 이벤트와 저장된 XDP 다시 읽기도 이 값을 유지합니다
THotPDF.AutoFormAppearances=True이면 XFA 텍스트 field는 유효한 스타일이 적용된 뒤 네이티브 appearance를 생성합니다. 지원되는 표준 폰트 패밀리, 포인트 크기, 텍스트 색, 정렬, solid border 색과 폭이 포함됩니다
AutoFormAppearances는 명시적 문서 옵션으로 남습니다. 기본값 False는 여전히 리더의 appearance 생성에 의존합니다
생성과 서식 소비자 범위는 별개입니다. 추가 value 자식 클래스와 위젯 스키마, 일반 스키마 클래스, 프로퍼티 제거/부모 재지정, 더 풍부한 위젯 텍스트, Unicode appearance 임베딩은 진행 중인 구현 과제로 남아 있습니다
관련 API
네이티브 XFA Property DOM, XFA 프로퍼티 스키마 기본값, TXFAEventAction, TXFAEventBinding