Automatische XFA-Rich-Captions
Units: HPDFXFA, HPDFXFAHeadless und HPDFHeadlessAppearance
HPDFXFAWriteHeadlessPDF konsumiert effektive Checkbox- und Radio-Caption-Werte direkt aus dem gespeicherten XDP und erzeugt echte native Appearance-Forms mit eingebetteten Schriften
Effektiver Caption-Inhalt
Skalare Caption-Werte und exData-XHTML-Body-Inhalt werden zu nativem Text; der Body muss den Namespace http://www.w3.org/1999/xhtml verwenden
Ein partielles wiederholte-Instanz-Formular-Overlay ändert Text und Attribute des entsprechenden Template-Elements und bewahrt dabei unveränderte Template-Geschwister und deren XHTML-Namespace
Eine erfolgreiche exData.loadXML-Gesamtpayload-Ersetzung liefert ihren tatsächlich importierten Body, statt veralteten Template-Inhalt zurück in die Caption zu mischen
Kommentare und Processing Instructions bleiben im ursprünglichen gespeicherten XDP, fallen aber aus der Rendering-Kopie, sodass ihre Payloads nie zu sichtbarem Caption-Text werden
Die Rendering-Kopie ist auf 4096 Knoten, Tiefe 64, 65536 Overlay-Arbeitsschritte und 1 MiB angerechneten Quell- und serialisierten XHTML begrenzt; der native Decoder und die Appearance-Builder behalten ihre eigenen Run-, Glyph- und Byte-Limits
Echte Schrift-Faces und Styles
Liefere CaptionFontFamilies für echte Regular-, Bold-, Italic- und Bold-Italic-Programme und benannte Familien
Der bestehende native XHTML-Decoder löst Inline-Styles, Absatzgrenzen, Familienlisten, Farben, Größen sowie Unterstreichungs- und Durchstreichungsformatierung auf; skalare Caption-Schriftgröße, -Gewicht, -Lage, -Typeface und -Füllfarbe liefern den Default-Style
Ein fehlendes angefordertes Face oder eine fehlende Glyphe lässt die Vorbereitung fehlschlagen; dieser Consumer erfindet keine Bold- oder Italic-Appearances und findet keine externen Schriften
Messung und Platzierung
Caption-Messung und -Zeichnung nutzen dasselbe native Rich-Layout und dieselben gelieferten Font-Programme, einschließlich tatsächlicher Glyph-Advances, stilabhängiger Ascents und Descents, gemeinsamer Zeilengrundlinien und Umbruch
Ein fester left- oder right-Reserve-Wert begrenzt die Textbreite; ein positiver top- oder bottom-Reserve-Wert erlaubt Umbruch innerhalb der verfügbaren Feldbreite
Ein fehlender Reserve-Wert, null oder der Schema-Default -1 nutzt die natürliche Caption-Ausdehnung ohne automatischen Textumbruch; explizite Absatzgrenzen bleiben Zeilenumbrüche, und Text, der ein festes Feldrechteck überschreitet, wird abgeschnitten
Automatische left- und right-Captions nutzen ihre natürliche Breite; Inline-Captions ignorieren explizite Reserve-Werte bei Messung und Platzierung
Caption-Margins verkleinern die tatsächliche Textregion, und horizontale und vertikale Caption-Ausrichtung steuern die resultierende Appearance-Platzierung
Das Reserve-Verhalten folgt der XFA-3.3-Definition des Caption-Reserve-Werts
Die natürliche Höhe umfasst die letzte Schriftmetrik-Zeilenausdehnung plus das native Zwei-Punkte-Padding auf jeder Seite; ungenutzten nachlaufenden Durchschuss nach der letzten Zeile schließt sie aus
Versteckte und inaktive Captions verbrauchen keine Region; unsichtbare Captions reservieren ihre gemessene Region, ohne Caption-Glyphen zu zeichnen oder anzurechnen
Ein echtes Caption-Form wird über die off-, on- und neutral-Zustände desselben Widgets geteilt; wiederholte Instanzen behalten unabhängige Inhalts- und Style-Graphen
Absatz-Margin und eigenes line-height-CSS, Caption-Bilder und andere Nichttext-Caption-Payloads, Push-Button-Rich-Captions und späteres interaktives Appearance-Rebuilding bleiben separate Consumer-Arbeit
Transaktionen und Abnahme
Ein erfolgreiches natives Property-Ereignis lässt sich vor der automatischen PDF-Erzeugung speichern und neu laden; Skriptfehler stellen exakte native XML-Bytes wieder her, und Vorbereitungs-Budget- oder Abbruchfehler bewahren Ziel-Bytes, Länge und Position
Schreibzugriffe aufs Ziel beginnen erst, nachdem der vollständige Kandidat erfolgreich war; ein Fehler beim eigenen Stream-Write des Aufrufers folgt der Semantik dieses Streams und lässt sich für ein beliebiges nicht seek-fähiges Ziel nicht zurückrollen
Tests/Linux/XFAHeadlessRichCaptionTests.pas erzeugt echte gestylte, umgebrochene, familienausgewählte und nicht sichtbare Caption-PDFs; XFAHeadlessRichCaptionRuntimeTests.pas deckt wiederholte Overlays, gesamten XML-Ersatz und Rollback ab
XFAHeadlessRichCaptionBudgetTests.pas übt echte Ressourcenfehler und ausgewählte Abbruchgrenzen aus, während HeadlessTextExtentTests.pas die gemessenen nativen Zeilenausdehnungen offenlegt
Verify-XFAHeadlessRichCaptions.py inspiziert gespeicherte PDF-Graphen, exakte gelieferte Font-Programm-Bytes, geteilte Referenzen, Unicode-Text, rohe Textmatrizen, fontTools-Metriken und MuPDF-gerenderte Pixel, ohne eine Reader-UI zu öffnen
Schreibgeschütztes TextHeight · Boolean-Callback-Metadaten · Boolean-Marker und -Zustände