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