Ifyllning av Windows-formulär med original typade rich-runs

Windows-filjobb och hpdf_document_execute_json_v1 accepterar forms.fill-begäranden med richTextRuns tillsammans med vanliga text-, choice- och button-uppdateringar; alla fält delar en och samma autentiserade kandidat-PDF

De ursprungliga typade runsna når native appearance-kompositören direkt; AP-genereringen går inte omvägen via den serialiserade RV-färgrepresentationen; klartext-V, standardiserad rich-RV och verklig AP förbereds tillsammans

Begäran

{
  "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"}
  ]
}

Varje fält anger richTextRuns eller ett skalärt value eller values; ett valfritt value bredvid richTextRuns måste exakt matcha den native-härledda klartexten, inklusive vagnreturer mellan typade stycken; serialiserad richText är ingen typed-run-indata

Varje run kräver text och accepterar fontStyle, fontSize, color, underline, strikeOut, paragraphBreakBefore och alignment; fontStyle är regular, bold, italic eller boldItalic; alignment är left, center eller right; RGB-komponenterna är ändliga tal från noll till ett

Run-storlekar måste vara positiva och högst 4096 punkter; en saknad storlek använder fältets fontSize eller 12 punkter; native PDF-talformatering gäller fortfarande, medan standardiserad RV CSS serialiserar färger till åttabitarkomponenter

Fältens appearance-alternativ omfattar fontSize, padding, characterSpacing, wordSpacing och paintWhiteBackground; äkta AP-generering krävs, så appearance=false är ogiltigt

Verkliga teckensnittsprogram

En fontFamilies-array på fältnivå åsidosätter operationens array; konfigurerade arrayer innehåller en till sexton icke-tomma giltiga familjeetiketter; matchningen jämför ASCII skiftlägesokänsligt och övrig Unicode exakt; en explicit run-fontFamily måste matcha en konfigurerad etikett, och en utelämnad run-etikett väljer första familjen

Utan fontFamilies finns den ursprungliga enfamiljsvägen kvar; font-callbackens etikett kommer från fältets fontFamily, operationens fontFamily eller DejaVu Sans; ursprungliga enfamiljs-runs utelämnar run-fontFamily

Filjobb lägger till input, output och fonts; fonts mappar varje konfigurerad familjeetikett till filsökvägar för regular, bold, italic och boldItalic; bara använda stilar och den raka snitt som skalära appearances behöver läses in; filsökvägar får inte aliasa utdata

Versionshanterade C ABI-anropare använder den befintliga hpdf_form_data_operation_v1-utökningen och returnerar läsbara hpdf_io_v1-tabeller från dess font-callback; familjeetiketter är UTF-8 och stilvärden är 0 till 3; alla verkliga program kopieras till avgränsade egna byte innan appearances komponeras

De ursprungliga V1-symbolerna, grundstrukturernas storlekar och de valfria utökningsoffseten förblir oförändrade; familje-/stilresurser cachas inom en begäran och delas mellan fält utan att samma egna allokering debiteras upprepade gånger

Opt-in-flaggan fallbackFontFamilies=true tillämpar helgrafem-fallback bland de verkliga tillhandahållna familjerna; typade runs kan behålla en ordnad fontFamilyCandidates-array, där deklarerade kandidater prövas före konfigurerad ordning; se Windows rich-teckensnittsfallback med tillhandahållna familjer för begärandeav och inläsning av alla fyra stilar via callbacks

Aktuell graf och publicering

Utan InputIO använder C ABI:n sin egen laddade revision och den verkliga väntande grafen; en valfri InputIO tillför en ersättnings-PDF som kopieras och autentiseras privat före alla font-callbacks; vare sig mutering av lånad indata eller en misslyckad ersättning får ändra den genomförda kontexten

OutputIO och ResultIO krävs; både den verkliga kandidat-PDF:en och resultat-JSON:en måste avslutas framgångsrikt, följt av den sista avbrottskontrollpunkten, innan C ABI:n byter dokument och källa

En misslyckad callback kan redan ha tagit emot kandidatbyte; anropare måste förkasta de byten när den returnerade statusen är skild från noll; den tidigare genomförda bibliotekskontexten förblir oförändrad

Filjobb etablerar den kompletta kandidaten och det avgränsade svaret innan den begärda utdata byts atomärt; ett saknat teckensnitt, policyfel, avbrott eller kapacitetsfel bevarar det befintliga målet

Policyer och resultat

Befintlig signaturintegritet, DocMDP P1/P2/P3, FieldMDP-lås, read-only-flaggor och AES-behörigheter för formulärifyllning upprätthålls genom den native autentiserade motorn; signaturePolicy accepterar samma explicita trust-, tidsstämpel- och återkallningsinställningar som Windows-formulärimporter

En read-only-uppdatering med samma indata lyckas bara när verkliga AP-operatorer, teckensnitt, resurser och fältvärden är ekvivalenta; komprimerade AP-strömmar och icke-kanonisk men ekvivalent RV stöds; en verklig stiländring är fortfarande en ändring även om dess RV-färg kvantiserar till samma CSS-värde

En verkligt oförändrad begäran publicerar exakta byte av den förberedda aktuella revisionen efter policyautentisering; väntande grafredigeringar materialiseras i den aktuella revisionen före jämförelsen

Lyckade svar innehåller typedRichText=true, typedRichProfile=original-typed-runs-v1, updated, fieldCount, fontBytes och fields från den verkliga förberedda kandidaten; formDataExchange.typedRichFill beskriver dessa implementerade ingångspunkter

Varje fields-post behåller den vanliga name-, skalära value- och fieldType-sammanfattningen; ett choice med bakomliggande array har ett tomt skalärt value i denna sammanfattning, medan hela urvalet finns kvar i den sparade PDF:en och i efterföljande FDF/XFDF-export

Det direkta ExecuteLoadedOperation-jobbgränssnittet och den äldre HPDFDocRunJob-utökningen för handle-/font-callbacks förblir separat arbete; denna binding lägger inte till interchange för annoteringar, inbäddade filer, actions eller inkrementell FDF

Relaterade ämnen

FillTypedData, Windows-transaktion, Native blandade typade uppdateringar, Windows FDF/XFDF-utbyte