Portable XFA-Passwort-Appearances
Unit: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF konsumiert XFA-passwordEdit-Felder als native Text-Widgets mit PDF-Passwort-Flag und einer Appearance mit eingebettetem Font und Maskierung unter Windows und Linux
Die Appearance enthält einen Asterisk je Unicode-Scalar-Wert: ein Supplementary Character, dargestellt durch ein UTF-16-Surrogatpaar, erzeugt einen Asterisk, während Combining Marks und ZWJ je ihren eigenen Asterisk beitragen
Das native /V behält den vollständigen authored Unicode-Wert; Appearance-Maskierung bietet keine Verschlüsselung und entfernt diesen Wert nicht aus dem PDF
Beispielsweise erzeugt A😀B drei Asterisken, und é erzeugt zwei, weil das kombinierende Akzent ein eigener Scalar ist
Limits und Abbruch
Der Adapter prüft den Abbruch beim Zählen der Scalars und prüft das verbleibende aggregierte Glyph-Budget, bevor der Mask-String alloziert wird
TXFAHeadlessPDFResult.GlyphUnits zählt die tatsächlich erzeugten Asterisken für Passwort-Appearances; die bestehende UTF-16-Bilanzierung für gewöhnlichen Text und andere Appearance-Consumer bleibt unverändert
Zwei Supplementary Characters passen in ein verbleibendes MaxGlyphs-Budget von zwei; ein Budget von eins schlägt vor der Mask-Allokation fehl
Der Originalwert unterliegt weiterhin den Input- und Objekt-Byte-Limits, und alle Felder teilen sich das aggregierte Appearance-Budget
Vorbereitungs-, Budget- und Abbruch-Fehler lassen Position, Länge und bestehende Bytes des Aufrufer-Ziels unverändert; Ziel-Schreibfehler folgen dem eigenen Partial-Write-Verhalten des Streams
Verifikation
Tests/Linux/XFAHeadlessPasswordTests.pas und die Windows- und Linux-Passwort-Runner verifizieren exakte Budgets, Abbruchgrenzen, Stream-Bewahrung und Retry-Verhalten
Der unabhängige Verifizierer prüft native Werte, Flags, echte AP-CID-Sequenzen, ToUnicode und eingebettete Glyph-IDs, rendert dann die gespeicherten PDFs mit MuPDF und extrahiert sie
Automatische XFA-Erzeugung beschreibt die anderen nativen Feld- und Zeichen-Consumer