자동 XFA 네이티브 PDF 생성
유닛: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF는 입력 PDF나 준비된 field 슬롯 없이 XDP 바이트와 애플리케이션이 공급한 TrueType 폰트로 새 네이티브 PDF를 직접 만듭니다
어댑터는 기존 XFA 바인딩, 반복 인스턴스, 페이지 매김 레이아웃 콜백을 소비하고 실제 임베디드 폰트 appearance 스트림으로 네이티브 페이지와 AcroForm 객체 그래프를 만듭니다
텍스트, 숫자, date, password field, 푸시 버튼, 콤보·리스트 선택, 체크박스·라디오 그룹, 정적 텍스트, rectangle, line, arc, 인라인 PNG·JPEG 이미지 draw가 소비됩니다. 서명과 추가 draw 소비자에는 어댑터 통합이 더 필요합니다
선택·Boolean 생성은 별개의 표시 값과 export 값, 편집 가능·다중 선택 동작, 네이티브 appearance 상태, 독립적인 반복 라디오 그룹을 유지합니다
Boolean 스타일과 캡션은 실제 벡터 마커, 크기, 외곽선 색과 두께, Unicode 캡션 영역, 세 번째 체크박스 상태를 소비합니다
네이티브 그래픽과 이미지는 실제 벡터 경로, PNG 샘플 형식과 투명성, baseline 또는 progressive JPEG, 물리 aspect, 아핀 배치를 소비합니다
password는 네이티브 field 값을 유지하면서 가려진 appearance를 씁니다. 문서 전체 Editable과 유효한 XFA readOnly 접근이 네이티브 field 플래그를 정합니다
XFA 포인트 좌표는 왼쪽 위 원점을 쓰며 네이티브 위젯 사각형과 draw 이동으로 한 번 변환됩니다. 별개의 반복 occurrence는 레이아웃 엔진에서 서로 다른 네이티브 field 이름을 받습니다
네이티브 /AP, /DR, /DA 리소스는 공급된 폰트와 유효한 크기, 색, 정렬로 생성됩니다. 공급된 페이스가 모든 field에 쓰이므로, 이 단계에서 typeface 선택과 여러 스타일 페이스는 애플리케이션 책임입니다
문서가 수명 주기나 상호작용 이벤트를 요구한다면 TXFAWidgetRuntime으로 이벤트를 실행하고 생성 전에 결과 XDP를 저장하세요. 어댑터의 ScriptOptions가 플래트닝 엔진의 calculate·validate 처리를 통제합니다
준비와 한도
TXFAHeadlessPDFOptions는 XDP와 폰트 바이트, 출력·객체 바이트, 객체·페이지 수, field, 집계 UTF-16 글리프 유닛을 묶습니다
객체, 페이지, 글리프 예산은 대응하는 할당 전에 검사합니다. 임베딩 검사는 폰트·이미지 스트림 집계를 묶고, 이미지 디코더는 작업 버퍼를 묶으며, 네이티브 직렬화는 객체와 후보 전체 바이트 한도를 강제합니다
취소는 그래프 생성, appearance 생성, 직렬화 전 과정에서 검사합니다. 모든 준비 실패는 대상 스트림의 위치, 길이, 기존 바이트를 그대로 둡니다
후보 전체는 대상에 WriteBuffer를 한 번 호출하기 전에 메모리에서 준비됩니다. 대상 I/O 오류는 전파되고 호출자 스트림 동작에 따라 부분 쓰기를 남길 수 있습니다
출력은 서명 없는 새 문서입니다. 임포트된 암호화, 기존 서명, 소스 리비전의 보존은 네이티브 문서 임포트·리비전 API 몫입니다
검수
Tests/Linux/XFAHeadlessCreationTests.pas는 리더 UI를 열지 않고 실제 반복·페이지 매김·전역 읽기 전용 문서, 이벤트로 변경된 saved-XDP 문서, 스타일 적용된 Unicode draw 문서를 만듭니다
Tests/Linux/Verify-XFAHeadlessCreation.py는 pypdf로 네이티브 값, field 플래그, 페이지 소유, /AP, 임베디드 폰트 리소스를 독립적으로 검증하고, MuPDF로 실제 텍스트와 렌더 appearance 픽셀을 검사합니다
Tests/Linux/XFAHeadlessChoiceTests.pas와 Verify-XFAHeadlessChoice.py는 실제 선택 값과 플래그, 라디오 부모와 반복 scope 식별자, 예약된 export 상태, 런타임 저장/다시 읽기와 롤백, 렌더 선택 픽셀을 더합니다
TXFAHeadlessPDFResult는 실제 네이티브 그래프와 직렬화 카운트를 보고합니다