이식 가능한 XFA 비밀번호 appearance
Unit: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF는 XFA passwordEdit 필드를 PDF 비밀번호 플래그와 임베드 폰트 마스크 appearance를 가진 네이티브 텍스트 위젯으로 Windows와 Linux에서 소비합니다
appearance는 Unicode 스칼라 값마다 하나의 별표를 담습니다. UTF-16 서러게이트 쌍으로 표현되는 보충 문자는 별표 하나를 만들고, 결합 마크와 ZWJ는 각자 자기 별표를 기여합니다
네이티브 /V는 완전한 작성 Unicode 값을 유지합니다. appearance 마스킹은 암호화를 제공하지 않고 그 값을 PDF에서 제거하지도 않습니다
예를 들어 A😀B는 별표 세 개를, é는 결합 악센트가 별도 스칼라이므로 두 개를 만듭니다
한도와 취소
어댑터는 스칼라를 세는 동안 취소를 검사하고, 마스크 문자열을 할당하기 전에 남은 집계 글리프 예산을 검사합니다
TXFAHeadlessPDFResult.GlyphUnits는 비밀번호 appearance에 대해 실제 생성된 별표를 셉니다. 일반 텍스트와 다른 appearance 소비자에 대한 기존 UTF-16 회계는 바뀌지 않습니다
남은 MaxGlyphs 예산이 2이면 보충 문자 두 개가 들어가고, 1이면 마스크 할당 전에 실패합니다
원본 값은 여전히 입력과 객체 바이트 한도의 대상이고, 모든 필드가 집계 appearance 예산을 공유합니다
준비, 예산, 취소 실패는 호출자의 대상 위치, 길이, 기존 바이트를 바꾸지 않습니다. 대상 쓰기 오류는 스트림 자체의 부분 쓰기 동작을 따릅니다
검증
Tests/Linux/XFAHeadlessPasswordTests.pas와 Windows, Linux 비밀번호 러너가 정확한 예산, 취소 경계, 스트림 보존, 재시도 동작을 검증합니다
독립 검증기는 네이티브 값, 플래그, 실제 AP CID 시퀀스, ToUnicode, 임베드 글리프 ID를 검사한 뒤 MuPDF로 저장된 PDF를 렌더하고 추출합니다
자동 XFA 생성이 다른 네이티브 필드와 그리기 소비자를 설명합니다