Windows original typed rich form filling

Windows file-jobs en hpdf_document_execute_json_v1 accepteren forms.fill-requests met richTextRuns naast gewone tekst-, choice- en button-updates; alle velden delen één geauthenticeerde candidate-PDF

De originele getypeerde runs bereiken de native appearance-composer direct; AP-generatie round-tript niet door de geserialiseerde RV-kleurrepresentatie; platte V, standaard rich-RV en echte AP worden samen voorbereid

Request

{
  "schemaVersion": 1,
  "type": "forms.fill",
  "fontFamilies": ["DejaVu Sans", "DejaVu Serif Condensed"],
  "fields": [
    {"name": "Input", "richTextRuns": [
      {"text": "Original typed precision", "fontFamily": "DejaVu Sans",
       "fontStyle": "regular", "fontSize": 12.123456,
       "color": [0.123456, 0.234567, 0.345678]},
      {"text": "Another paragraph", "fontFamily": "DejaVu Serif Condensed",
       "fontStyle": "boldItalic", "fontSize": 14.125,
       "paragraphBreakBefore": true, "alignment": "center",
       "underline": true, "strikeOut": false}
    ]},
    {"name": "Plain", "value": "Changed scalar"},
    {"name": "Choice", "values": ["B", "C"]},
    {"name": "Check", "value": "Yes"}
  ]
}

Elk veld levert richTextRuns of een scalar-waarde of -waarden aan; een optionele value naast richTextRuns moet exact matchen met de native afgeleide platte tekst, inclusief carriage returns tussen getypeerde paragrafen; geserialiseerde richText is geen typed-run-invoer

Elke run vraagt text en accepteert fontStyle, fontSize, color, underline, strikeOut, paragraphBreakBefore en alignment; fontStyle is regular, bold, italic of boldItalic; alignment is left, center of right; RGB-componenten zijn eindige getallen van nul tot en met één

Run-groottes moeten positief en hoogstens 4096 punten zijn; een ontbrekende grootte gebruikt de veld-fontSize of 12 punten; native PDF numerieke formatting geldt nog steeds, terwijl standaard RV CSS kleuren naar acht-bits componenten serialiseert

Veld-appearance-options omvatten fontSize, padding, characterSpacing, wordSpacing en paintWhiteBackground; echte AP-generatie is vereist, dus appearance=false is ongeldig

Echte fontprogramma's

Een veld-fontFamilies-array overschrijft de operation-array; geconfigureerde arrays bevatten één tot zestien niet-lege geldige family-labels; matching vouwt ASCII-case samen en vergelijkt andere Unicode exact; een expliciete run-fontFamily moet matchen met een geconfigureerd label, en een ontbrekend run-label kiest de eerste family

Zonder fontFamilies blijft het originele single-family-pad beschikbaar; het font-callback-label komt uit veld-fontFamily, operation-fontFamily of DejaVu Sans; originele single-family-runs laten run-fontFamily weg

File-jobs voegen input, output en fonts toe; fonts mapt elk geconfigureerd family-label naar regular-, bold-, italic- en boldItalic-bestandspaden; alleen gebruikte stijlen en het regular-face dat scalar-appearances nodig hebben, worden geladen; bestandspaden mogen niet aliasen met de uitvoer

Versioned C ABI-aanroepers gebruiken de bestaande hpdf_form_data_operation_v1-extensie en geven leesbare hpdf_io_v1-tabellen terug vanuit diens font-callback; family-labels zijn UTF-8 en stijlwaarden zijn 0 tot en met 3; alle echte programma's worden gekopieerd naar begrensde owned bytes vóór het samenstellen van appearances

De originele V1-symbolen, basis-structuurgroottes en optionele extensie-offsets blijven ongewijzigd; family/stijl-assets worden binnen één request gecacht en gedeeld over velden heen zonder dezelfde owned allocatie herhaaldelijk te rekenen

Opt-in fallbackFontFamilies=true past whole-grapheme-fallback toe tussen echte supplied families; getypeerde runs kunnen een geordende fontFamilyCandidates-array vasthouden, waarbij gedeclareerde candidates vóór geconfigureerde volgorde worden overwogen; zie Windows supplied-family rich font fallback voor request-inheritance en vier-stijl-callback-loading

Huidige graaf en publicatie

Zonder InputIO gebruikt de C ABI diens owned geladen revisie en echte pending graaf; een optionele InputIO levert een vervangende PDF aan, privé gekopieerd en geauthenticeerd vóór elke font-callback; noch mutatie van geleende invoer noch een gefaalde vervanging mag de gecommitte context wijzigen

OutputIO en ResultIO zijn vereist; de echte candidate-PDF en resultaat-JSON moeten beide afronden, gevolgd door het finale annuleringscheckpoint, voordat de C ABI document en bron uitwisselt

Een gefaalde callback kan al candidate-bytes hebben ontvangen; aanroepers moeten die bytes weggooien wanneer de teruggegeven status niet-nul is; de eerder gecommitte library-context blijft ongewijzigd

File-jobs stagen de complete candidate en begrensde reply vóór atomare vervanging van de gevraagde uitvoer; een ontbrekend font, policy-falen, annulering of capaciteitsfalen behoudt de bestaande target

Policies en resultaat

Bestaande signature-integriteit, DocMDP P1/P2/P3, FieldMDP-locks, read-only-vlaggen en AES form-fill-permissions worden gehandhaafd via de native geauthenticeerde engine; signaturePolicy accepteert dezelfde expliciete trust-, timestamp- en revocation-instellingen als Windows formulier-imports

Een read-only same-invoer-update slaagt alleen wanneer echte AP-operatoren, fonts, resources en veldwaarden equivalent zijn; gecomprimeerde AP-streams en niet-canonieke equivalente RV worden ondersteund; een echte stijlwisseling blijft een wijziging ook als diens RV-kleur naar dezelfde CSS-waarde quantiseert

Een echt ongewijzigd request publiceert exacte bytes van de voorbereide huidige revisie na policy-authenticatie; pending graaf-edits worden in die huidige revisie gematerialiseerd vóór de vergelijking

Geslaagde replies omvatten typedRichText=true, typedRichProfile=original-typed-runs-v1, updated, fieldCount, fontBytes en fields vanuit de echte voorbereide candidate; formDataExchange.typedRichFill beschrijft deze geïmplementeerde entrypoints

Elk fields-item behoudt de gewone naam, scalar-waarde en fieldType-samenvatting; een choice die door een array wordt gedragen heeft een lege scalar-waarde in deze samenvatting, terwijl diens volledige selectie in de opgeslagen PDF en daaropvolgende FDF/XFDF-export blijft

De directe ExecuteLoadedOperation-job-facade en legacy HPDFDocRunJob handle/font-callback-extensie blijven apart werk; deze binding voegt geen annotatie-, embedded-file-, action- of incrementele-FDF-interchange toe

Verwante topics

FillTypedData, Windows transaction, Native mixed typed updates, Windows FDF/XFDF exchange