네이티브 XFA 스칼라 값 프로퍼티
이벤트 호스트는 프로퍼티 접근이나 getElement로 실제 네이티브 폼 값 컨테이너와 스칼라 리프를 만듭니다. field 값 프로퍼티, 바인딩된 데이터 값, 위젯 읽기는 같은 현재 값을 공유합니다
스칼라 생성
지원되는 스칼라 자식은 boolean, date, dateTime, decimal, float, integer, text, time이고 선택된 값 클래스 하나의 occurrence 하나입니다
const field = xfa.form.resolveNode("main.row[1].input");
const leaf = field.value.getElement("text", 0);
leaf.value = "updated";
field.dataNode.value = "from-data";
if (leaf.value !== "from-data") throw new Error("Value synchronization failed");
없는 스칼라 프로퍼티를 읽으면 네이티브 폼 노드가 실체화되고 field의 현재 유효 값으로 콘텐츠가 초기화됩니다. 반복 접근은 같은 라이브 프로퍼티 객체를 반환합니다
Value는 기본적으로 공통 프로토타입 속성, override=0, 빈 relevant 속성을 갖습니다. 지원되는 스칼라 클래스는 공통 프로토타입 속성과 빈 name을 노출합니다
one-of 검사는 표준 값 선택 전부를 포함하므로, 기존 image, exData, 그래픽 값 선택 옆에 스칼라를 만들 수 없습니다
즉시·네이티브 동기화
스칼라 리프의 value와 rawValue 접근자는 소유 field를 프록시합니다. 바인딩된 dataValue.value는 rawValue 접근자의 쓰기 가능한 별칭입니다
field, 스칼라, 데이터 쓰기는 같은 스크립트 안에서 서로의 읽기를 갱신합니다. 같은 바인딩된 데이터 값을 공유하는 다른 field도 포함입니다
네이티브 발행은 dataset 값과 기존에 실체화된 스칼라 폼 리프를 갱신합니다. 인터랙티브 위젯 커밋과 계산 결과도 바인딩된 field의 실체화된 값 프로퍼티를 동기화합니다. hidden과 invisible 별칭도 포함입니다
타입화된 스칼라 콘텐츠는 공급된 텍스트 그대로 유지됩니다. 정규 date, time, 숫자 문자열도 포함입니다. 이 단계는 자동 숫자 강제 변환이나 새 Picture 서식을 도입하지 않습니다
숨은 별칭 동기화는 실제 반복 데이터 scope를 따르고 실체화되지 않은 프로퍼티를 유지합니다
인스턴스, 식별자와 트랜잭션
한 반복 occurrence에서 값 프로퍼티를 만들고 편집해도 다른 occurrence는 유지됩니다. 스크립트 객체는 스칼라 프로퍼티 참조를 붙잡고 이후 이벤트에서 쓸 수 있습니다
새 반복 인스턴스는 독립적인 네이티브 값 노드를 받습니다. 새로 만든 인스턴스에 대한 데이터 쓰기는 트랜잭션이 저장되기 전에 실제 실체화된 스칼라 리프를 갱신합니다
엔진 오류, 네이티브 값 예산 실패, 충돌하는 값 선택은 field 데이터, 실체화된 값 리프, 공유 별칭을 포함해 정확한 네이티브 XDP 바이트를 복원합니다
네이티브 동기화 스캔은 이벤트 연산과 경과 시간 예산에 참여합니다. 과도한 작업은 트랜잭션을 거부하고 스냅샷을 복원합니다
저장된 PDF 출력
XFA AcroForm 변환은 네이티브 field 값과 생성 appearance를 위해 저장된 스칼라 값을 소비합니다. 반복 첫 인스턴스 값은 그대로입니다
저장 결과 집중 검수는 변환 전에 네이티브 XDP를 다시 열고, 독립 pypdf와 MuPDF 검사는 타입화 폼 리프, dataset 값, 네이티브 field, 실제 보이는 appearance 텍스트를 들여다봅니다
남은 통합 과제
네이티브 exData XML은 없는 값 생성, 실제 외부 XML 임포트, 즉시 스크립트 직렬화, 저장된 리치 draw 소비를 지원합니다
draw·캡션 스칼라 소비자는 생성된 인스턴스별 값과 명시적 빈 재정의를 지원합니다
이미지·그래픽 값 생성은 실제 draw 소비자와 함께 네이티브 image, arc, line, rectangle 자식을 지원합니다
완전한 스칼라 서식 검증, 리치 위젯 appearance, Unicode appearance 임베딩은 별도 구현 과제로 남아 있습니다