Windows original typed rich form filling
Windows file joby i hpdf_document_execute_json_v1 přijmou žádosti forms.fill obsahující richTextRuns vedle běžných textových, choice i button aktualizací; všechna pole sdílejí jednoho autentizovaného kandidátního PDF
Původní typované runy se dostanou přímo k nativnímu composeru appearance; generování AP neprochází round tripem přes serializovanou barevnou reprezentaci RV; prosté V, standardní rich RV i skutečné AP se připraví společně
Žádost
{
"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"}
]
}
Každé pole dodá richTextRuns, či skalární value či values; volitelná hodnota vedle richTextRuns se musí přesně shodovat s nativně odvozeným prostým textem, tedy i s carriage return mezi typovanými odstavci; serializované richText není vstupem typovaných runů
Každý run vyžaduje text a přijímá fontStyle, fontSize, color, underline, strikeOut, paragraphBreakBefore a alignment; fontStyle je regular, bold, italic či boldItalic; alignment je left, center či right; složky RGB jsou konečná čísla od nuly do jedné
Velikosti runů musí být kladné a nejvýše 4096 bodů; chybějící velikost použije fontSize pole či 12 bodů; nativní číselné formátování PDF pořád platí, zatímco standardní RV CSS serializuje barvy na osmibitové složky
Volby appearance polí zahrnují fontSize, padding, characterSpacing, wordSpacing a paintWhiteBackground; skutečné generování AP je povinné, takže appearance=false je neplatné
Skutečné font programy
Pole fontFamilies přebije pole operace; nakonfigurovaná pole obsahují jednu až šestnáct neprázdných platných rodinných popisků; párování sklápí ASCII velikost písmen a ostatní Unicode porovnává přesně; explicitní runový fontFamily se musí trefit do nakonfigurovaného popisku a chybějící runový popisek vybere první rodinu
Bez fontFamilies zůstává dostupná původní cesta jedné rodiny; popisek font callbacku pochází z fontFamily pole, fontFamily operace či DejaVu Sans; původní runy jedné rodiny vynechávají runový fontFamily
File joby přidávají input, output a fonts; fonts mapuje každý nakonfigurovaný rodinný popisek na cesty souborů regular, bold, italic a boldItalic; načtou se jen použité styly a regular řez potřebný skalárními appearance; cesty souborů nesmí být aliasem výstupu
Verzovaní C ABI volající použijí stávající rozšíření hpdf_form_data_operation_v1 a z jeho font callbacku vrátí čitelné tabulky hpdf_io_v1; rodinné popisky jsou UTF-8 a hodnoty stylů 0 až 3; všechny skutečné programy se zkopírují do ohraničených vlastněných bajtů, dřív než se složí appearance
Původní symboly V1, velikosti základních struktur i offsety volitelného rozšíření zůstávají nezměněné; rodina/styl assety se cacheují v rámci jedné žádosti a sdílejí napříč poli, aniž by se tatáž vlastněná alokace účtovala opakovaně
Opt-in fallbackFontFamilies=true aplikuje celografémový fallback mezi skutečně dodanými rodinami; typované runy mohou držet uspořádané pole fontFamilyCandidates, přičemž deklarované kandidáty se zvažují, dřív než nakonfigurované pořadí; dědění žádostí i čtyřstylé načítání callbacků popisuje Windows rich font fallback dodaných rodin
Aktuální graf a publikace
Bez InputIO použije C ABI vlastněnou načtenou revizi i skutečný čekající graf; volitelné InputIO dodá náhradní PDF, zkopírované a autentizované soukromě, dřív než jakýkoli font callback; ani mutace vypůjčeného vstupu, ani neúspěšná náhrada nesmí změnit potvrzený kontext
OutputIO a ResultIO jsou povinné; skutečné kandidátní PDF i výsledkový JSON se musí oba úspěšně dokončit, následované finálním checkpointem zrušení, dřív než C ABI vymění dokument a zdroj
Neúspěšný callback už mohl dostat kandidátní bajty; když je vrácený status nenulový, volající musí ty bajty zahodit; dřív potvrzený knihovní kontext zůstává nezměněný
File joby odstageují kompletního kandidáta i ohraničenou odpověď, dřív než atomickou náhradu vyžádaného výstupu; chybějící písmo, selhání politiky, zrušení či selhání kapacity zachová existující cíl
Politiky a výsledek
Stávající integrita podpisů, DocMDP P1/P2/P3, zámky FieldMDP, příznaky read-only i AES oprávnění pro vyplňování formulářů vynucuje nativní autentizovaný engine; signaturePolicy přijme tutéž explicitní nastavení důvěry, timestampů i revokací jako Windows form importy
Aktualizace read-only se stejným vstupem uspěje jen tehdy, když jsou skutečné operátory AP, písma, resource i hodnoty polí ekvivalentní; komprimované AP streamy i nekanonické ekvivalentní RV jsou podporované; skutečná změna stylu je pořád změna, i když se její RV barva kvantuje na tutéž CSS hodnotu
Skutečně nezměněná žádost publikuje přesné bajty připravené aktuální revize po autentizaci politiky; čekající grafové editace se do té aktuální revize materializují, dřív než porovnání
Úspěšné odpovědi zahrnují typedRichText=true, typedRichProfile=original-typed-runs-v1, updated, fieldCount, fontBytes a fields ze skutečně připraveného kandidáta; formDataExchange.typedRichFill popisuje ty implementované vstupní body
Každá položka fields si uchová běžný název, skalární hodnotu i souhrn fieldType; choice podložený polem má v tom souhrnu prázdnou skalární hodnotu, zatímco kompletní výběr zůstává v uloženém PDF i následném exportu FDF/XFDF
Přímá job fasáda ExecuteLoadedOperation i legacy rozšíření handle/font callbacků HPDFDocRunJob zůstávají samostatnou prací; tenhle binding nepřidává anotační, vloženě-souborovou, akční či inkrementální FDF výměnu
Související témata
FillTypedData, Windows transakce, Nativní smíšené typované aktualizace, Windows FDF/XFDF exchange