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