Windows FDF/XFDF-Austausch

Windows-Dateijobs und hpdf_document_execute_json_v1 implementieren forms.export und forms.import für fdf und xfdf mit den nativen Skalar- und begrenzten Rich-XHTML/CSS-Codecs

Dateijobs

{
  "schemaVersion": 1, "type": "forms.import", "format": "xfdf",
  "input": "source.pdf", "output": "filled.pdf", "password": "owner",
  "formDataInput": "values.xfdf",
  "fonts": {
    "regular": "DejaVuSans.ttf", "bold": "DejaVuSans-Bold.ttf",
    "italic": "DejaVuSans-Oblique.ttf", "boldItalic": "DejaVuSans-BoldOblique.ttf"
  },
  "budget": {"memoryBytes": 268435456, "outputBytes": 134217728,
    "timeMilliseconds": 60000, "resultBytes": 16777216}
}

forms.export nutzt input, output, format und optionales password; es braucht kein formDataInput und keine fonts; Dateijobs reservieren einen exklusiven Kandidaten neben dem Ziel, flushen und schließen ihn, validieren das begrenzte Ergebnis-JSON und ersetzen dann das Ziel atomar

Fehlende Schriften, fehlerhafte Eingaben, Authentifizierungs- oder Policy-Fehler, ausgeschöpfte Limits und fehlgeschlagene Veröffentlichung bewahren das vorhandene vollständige Ziel; die Ausgabe darf nicht Alias der PDF oder der Formulardaten-Eingabe sein, auch nicht über einen Hard Link

Benannte Fontfamilien

forms.import akzeptiert fontFamilies an der Operationwurzel als Array aus ein bis sechzehn Bezeichnungen; Fehlen bewahrt das ursprüngliche Single-Family-Profil und das fontFamily-Callback-Label

"fontFamilies": ["DejaVu Sans", "DejaVu Serif Condensed"],
"fonts": {
  "DejaVu Sans": {
    "regular": "DejaVuSans.ttf", "bold": "DejaVuSans-Bold.ttf",
    "italic": "DejaVuSans-Oblique.ttf", "boldItalic": "DejaVuSans-BoldOblique.ttf"
  },
  "DejaVu Serif Condensed": {
    "regular": "DejaVuSerifCondensed.ttf", "bold": "DejaVuSerifCondensed-Bold.ttf",
    "italic": "DejaVuSerifCondensed-Italic.ttf", "boldItalic": "DejaVuSerifCondensed-BoldItalic.ttf"
  }
}

Bei Dateijobs enthält fonts Objekte, indiziert nach den exakt konfigurierten Bezeichnungen; ohne fontFamilies bewahrt es das ursprüngliche direkte Stilpfad-Objekt; gelesen werden nur echte Familien-/Stilprogramme, wobei alle gewählten Font-Bytes sich das Operationsbudget teilen

Bei Windows-V1-Callbacks erhält der vorhandene Font-Callback jede tatsächliche kanonische UTF-8-konfigurierte Bezeichnung und den gewählten Stil; zwei Familien mit allen vier Stilen erzeugen acht echte Programmanforderungen, ohne den Callback-Record zu ändern

ASCII-Buchstaben in Bezeichnungen vergleichen ohne Groß-/Kleinschreibung, andere Unicode-Zeichen exakt; Bezeichnungen sind unterscheidbar, nicht leer und höchstens 128 UTF-16-Codeeinheiten, ohne umgebenden Leerraum, Steuerzeichen, paarlose Surrogate oder CSS-Anführungs-/Trennzeichen

Die erste konfigurierte Familie ist der Default für Skalartext und geerbte Rich-Stile; standardmäßig nutzen CSS-font-family-Listen die First-Known-Family-Auswahl des nativen Codecs

Opt-in fallbackFontFamilies=true bewahrt geordnete inline CSS-font-family-Kandidaten und lädt echte konfigurierte Schnitt-/Stilprogramme für Whole-Grapheme-Fallback; siehe Windows-Fallback auf mitgelieferte Rich-Font-Familien für Typed-Kandidaten, Callback-Laden und den Rich-only-Umfang

Das angewandte Ergebnis meldet richXMLProfile inline-xhtml-font-families-v1, das konfigurierte fontFamilies-Array und echte fontFamilyStyles-Objekte mit family, style und bytes; fontStyles behält seinen ursprünglichen Objektarray-Typ und fasst Bytezahlen je Stil zusammen; fontBytes zählt alle echten Programme

Ohne das Array ist richXMLProfile inline-xhtml-v1; gemischtes Skalar- und Original-Typed-Rich-forms.fill nutzt die separat unten beschriebene original-typed-runs-v1-Bindung; die ältere Job-Font-Callback-Erweiterung bleibt separate Nachfolgearbeit

Versionierte Windows-C-Callbacks

Binden Sie hotpdf_abi_form_data.h ein; füllen Sie hpdf_form_data_operation_v1, setzen Sie operation.struct_size auf seine vollständige Größe und übergeben Sie seinen unveränderten Operationspräfix an hpdf_document_execute_json_v1

Der optionale Font-Callback erhält UTF-8-Familien-Bytes und Stil 0 regular, 1 bold, 2 italic oder 3 boldItalic und liefert eine vollständige hpdf_io_v1-Lesetabelle für das echte Schriftprogramm; liefern Sie alle vier Programme, wenn Rich-Daten alle vier Stile verwenden

Skalardaten fordern das Regular-Programm an; fontFamily hat den Default DejaVu Sans; gelieferte Font-IO-Callbacks und User-Daten müssen bis zur Rückkehr der Operation gültig bleiben; Statuswerte ungleich null beim Callback sind hartnäckig und werden ohne Fallback-Wiederholung weitergereicht

Bei forms.import liefert InputIO das FDF/XFDF, und das Ziel muss bereits geladen sein; OutputIO empfängt das Kandidaten-PDF, ResultIO empfängt begrenztes JSON; forms.export nutzt den ursprünglichen V1-Record und schreibt FDF/XFDF an OutputIO

Windows-hpdf_document_load_from_io kopiert die vollständige Eingabe vor der Rückkehr in eine unveränderliche eigene Quelle; Ersetzen oder Anhängen durch den Aufrufer kann die aktive geladene Revision oder ihre spätere Formulardaten-Ausgabe nicht ändern

Eigene Quellen nutzen ein separates synchronisiertes Handle für Hintergrund-Random-Lesevorgänge, sodass Prefetch den sequenziellen Veröffentlichungs-Cursor nicht verschieben kann; das Kandidatendokument gibt seine Hintergrund-Reader frei, bevor seine Quelle zerstört wird

Der aktive Kontext ändert sich erst, nachdem sowohl Output- als auch Ergebnis-Callbacks erfolgreich waren und der letzte Abbruch-Checkpoint passiert ist; Callback-Fehler oder Abbruch verwerfen den Kandidaten und behalten das vorherige Dokument und die eigene Quelle

Ein Callback kann Kandidaten-Bytes erhalten haben, bevor ein späterer Callback fehlschlägt; Aufrufer dürfen ihre eigene Ausgabedestination erst committen, nachdem die Execute-Funktion HPDF_STATUS_OK zurückgegeben hat

Die ursprünglichen V1-Record-Layouts und exportierten Symbole sind unverändert; diese Windows-Erweiterung ist getrennt von der veröffentlichten Callback-Erweiterung des nativen Linux

Die gebundenen Einstiegspunkte sind der Dateijobprozessor und hpdf_document_execute_json_v1; der ältere HPDFDocRunJob-Callback-Record und das generische ExecuteLoadedOperation bekommen in dieser Stufe keine Font-Erweiterung; Pascal-Aufrufer können die explizite Transaktionsklasse nutzen

Felder, Rich Text und Policy

Unterstützte Werte umfassen verschachtelte Unicode-Textnamen, Checkbox- und Radio-Exportnamen, Multiselect-Arrays und unveränderte Read-only-Werte; /V, /RV und echte AP-Ressourcen werden gemeinsam gespeichert; unbekannte Felder und Required-Field-Constraints lassen die Transaktion scheitern

Rich-Austausch nutzt das dokumentierte begrenzte XHTML/CSS-Profil und echte gelieferte Stilschriften; er beansprucht kein beliebiges HTML, kein vollständiges CSS und keine uneingeschränkte Rich-XML-Unterstützung

Signierte AES-R5/R6-Updates bewahren das vollständige ursprüngliche Präfix, die Verschlüsselungsparameter, die permanente Verschlüsselungskennung und die vorhandene CMS-Signatur; unveränderte Skalar- oder Rich-Importe sind byteidentisch mit der aktuellen committeden Revision

Vorhandene CMS-Integrität und ESS-Signer-Bindung werden vor signierten Formularupdates authentifiziert; P2/P3-Füllen ist nur innerhalb seiner tatsächlichen Constraints erlaubt; P1, FieldMDP-Sperren und geänderte Read-only-Felder verweigern die Veröffentlichung

signaturePolicy akzeptiert die Booleans requireCAdES, requireTimestamp, requireAdobeRevocationInfo und requireTimestampRevocation; trustedCAFile, timestampCAFile, timestampCRLFile und revocationCAFile müssen Strings ohne NUL sein und wählen explizites Aufrufer-Vertrauen für die angeforderten Prüfungen

C-Callback-Optionen begrenzen signierte Nachweise zudem über maxEvidenceBytes und maxEvidenceObjects; Trust-Validierung ist getrennt von der Default-Prüfung der Signaturintegrität

formData kann maxBytes, maxFields, maxObjects, maxDepth, maxValues, maxValueCodeUnits und maxTotalCodeUnits absenken; diese exakten positiven Ganzzahlen werden zusätzlich durch die Arbeitskapazität geklemmt; budget objectCount und pageCount begrenzen Kandidatendokumente

budget.timeMilliseconds setzt die Operationsdeadline; Windows-C-Callbacks akzeptieren zudem elapsedMilliseconds als zusätzliche, engere Grenze; Abbruch wird während der aktuellen Graphvorbereitung, Formulardekodierung, beim Lesen von Schriften, CMS-Prüfungen, Kandidatenladung und Veröffentlichung abgefragt

Capabilities melden echte Formate, Stile, unveränderliche Eingabe und transaktionales Callback-Verhalten; Annotation-Austausch, eingebettete FDF-Dateien, Actions und inkrementelle FDF-Dokumente bleiben separate unfertige Capabilities

Verwandte Themen

Gemischtes Skalar- und Original-Typed-Rich-Füllen nutzt denselben authentifizierten Windows-Kandidaten-Lebenszyklus über Dateijobs und execute-json-v1

Transaktionsklasse, Vorbereitung des aktuellen Graphen, Native Formulardaten

Interne Style-Sheets wenden begrenzte Selektoren, Importance, Specificity und Source Order auf tatsächlich importierte Rich-Werte und gespeicherte Appearances an; wiederholte äquivalente Importe und fehlgeschlagene Veröffentlichung bewahren die bestehenden Transaktionsgarantien

richTextResources liefert verlinktes und importiertes CSS für echte Windows-Dateijobs und execute-json-v1-Importe, mit der bestehenden Transaktion und Font-Bindung