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