Automatische XFA-Boolean-Styles und Beschriftungen
Units: HPDFXFA und HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF konsumiert effektive checkButton-Properties und erzeugt native Checkbox- und Radio-Appearance-Streams aus dem tatsächlichen XFA-Layout
Marker und Umrandungen
Die checkButton-Größe hat den Default 10pt und steuert die quadratische Marker-Region innerhalb der Inhaltsregion des Felds; explizite Größenmaße, Feld- und UI-Margins sowie die horizontale und vertikale Absatzausrichtung bestimmen ihre Position
Die Shape-Varianten square und round bestimmen die Umrandung; die Default-Markierung ist ein Kreuz bei quadratischer und ein gefüllter Kreis bei runder Umrandung, gemäß der XFA-3.3-checkButton-Spezifikation
Explizite check-, circle-, cross-, diamond-, square- und star-Markierungen nutzen echte Vektorpfade; sie hängen nicht davon ab, dass die gelieferte Schrift ein Checkbox-Symbol enthält
Die erste UI-Border-Kante liefert Dicke, Farbe und Sichtbarkeit; die Default-Umrandung ist Schwarz und 0.5pt breit, während die effektive Schriftfarbe des Felds die Markierungsfarbe liefert
Der Marker schrumpft auf die verbleibende Inhaltsregion, wenn seine konfigurierte Größe diese übersteigt; eine Beschriftung oder ein Margin, die keine Inhaltsregion lassen, lassen die Kandidatenvorbereitung fehlschlagen
Skalare Unicode-Beschriftungen
Skalarer Beschriftungstext bewahrt Unicode und Trenner exakt und wird zu einem echten Form XObject mit eingebetteter Schrift, auf das jede off-, on- und neutral-Appearance dieses Widgets verweist
Die Beschriftung teilt sich eine Appearance und einen Schriftgraphen über ihre Zustände, und ihre UTF-16-Einheiten werden pro Widget einmal in TXFAHeadlessPDFResult.GlyphUnits gezählt
left und right reservieren eine Beschriftungsbreite, top und bottom eine Höhe; ein fehlender oder nuller Reserve-Wert nutzt die tatsächlichen Glyph-Advances und Zeilenmetriken der gelieferten Schrift, um die natürliche Beschriftungsausdehnung zu berechnen
Inline-Beschriftungen stehen vor dem Marker und ignorieren einen expliziten Reserve-Wert; Beschriftungs-Margins rücken den Text innerhalb seiner zugewiesenen Region ein
Beschriftungs-Schriftgröße und -Füllfarbe überschreiben Größe und Farbe des Felds; die Absatzausrichtung der Beschriftung überschreibt die Feldausrichtung, während CaptionFontFamilies echte Style-Faces und benannte Familien liefern kann
Versteckte und inaktive Beschriftungen belegen keine Region und allokieren keinen Schriftgraphen; unsichtbare Beschriftungen behalten ihre Region, ohne Beschriftungs-Glyphen zu zeichnen oder zu allokieren
Der Rich-Caption-Consumer konsumiert zusätzlich effektives XHTML, echte konfigurierte Style-Faces und Familienauswahl, gemischte Zeilenmetriken und umgebrochene Beschriftungshöhen
Dritte Checkbox-Zustände
Wenn allowNeutral aktiviert ist, ist das dritte gespeicherte Element der neutrale Checkbox-Export; passende Werte behalten ein eigenes natives /V und Widget-/AS mit eigenem /AP-/N-Eintrag
Die neutrale Appearance zeichnet die leere Umrandung und dieselbe Beschriftung; sie zeichnet nicht die gesetzte Markierung
Das Checkbox-/Opt-Array behält einen on-Export-Eintrag für sein einzelnes Widget, wie es das PDF-Button-Feld-Modell verlangt; ein dritter gespeicherter Appearance-Zustand fügt keine zweite Widget-Option hinzu
Leere Exporte, der reservierte Off-Name und Namen mit Präfix XFAOn erhalten kollisionsfreie native Zustands-Aliase, die ihre UTF-8-Bytes als Großbuchstaben-Hexadezimal nach XFAOn verwenden; der dritte Original-Export lässt sich aus seinem gespeicherten Zustandsnamen wiederherstellen
Ein Radio-Mitglied ignoriert ein drittes Element und behält sein bestehendes Zwei-Zustände-Appearance-Dictionary sowie seine Template-/Data-Scope-Gruppenidentität
Der Adapter persistiert den anfänglichen Zustandsgraphen; eine spätere native Button-Edit-Operation der Anwendung hat ihren eigenen Zustands- und Appearance-Contract
Native Instanz-Properties und Transaktionen
Die checkButton-Defaults für Größe, Shape, Markierung und allowNeutral sind über das native Runtime-Schema verfügbar; fehlende checkButton-Border- und Margin-Properties lassen sich über die bestehende Property-Transaktion erzeugen
Effektive wiederholte Instanz-Properties von checkButton, caption, font und margin überleben SaveToBytes und steuern sofort das entsprechende automatisch erzeugte PDF-Widget; die erste wiederholte Instanz behält ihre unabhängigen Properties
Literale UTF-8-Ereignisquellen und Unicode-Binding-Werte behalten ihre Skalare, bevor das gespeicherte XDP konvertiert wird, einschließlich durch ein natives JavaScript-Ereignis geänderten Beschriftungstexts; siehe HPDFXFAExecuteJavaScriptEvent
Skriptfehler stellen den exakten nativen XML-Zustand vor der Erzeugung wieder her, und Vorbereitungsfehler bewahren Zielposition, Länge und Bytes; Glyphen-, Objekt- und Schriftbudgets sowie Abbruch behalten die Transaktionsgrenze des automatischen Creators
Abnahmequellen
Tests/Linux/XFAHeadlessBooleanStylesTests.pas erzeugt echte Markierungspaare, Beschriftungen, neutrale und reservierte Zustände, Skriptänderungen wiederholter Instanzen und Rollback-Fälle ohne Reader-UI
Tests/Linux/Verify-XFAHeadlessBooleanStyles.py prüft tatsächliche gespeicherte Zustands-Dictionarys, geteilte Schriftressourcen, Beschriftungsplatzierung, Unicode-Text und unterscheidbare Marker-Pixel mit pypdf und MuPDF
Boolean-Callback-Metadaten beschreiben die additiven Transport-Hinweise, die der native Creator konsumiert