Windows FDF/XFDF Exchange
Windows file joby i hpdf_document_execute_json_v1 implementují forms.export a forms.import pro fdf a xfdf pomocí nativních skalárních i ohraničených XHTML/CSS kodeků
File joby
{
"schemaVersion": 1, "type": "forms.import", "format": "xfdf",
"input": "source.pdf", "output": "filled.pdf", "password": "owner",
"formDataInput": "values.xfdf",
"fonts": {
"regular": "DejaVuSans.ttf", "bold": "DejaVuSans-Bold.ttf",
"italic": "DejaVuSans-Oblique.ttf", "boldItalic": "DejaVuSans-BoldOblique.ttf"
},
"budget": {"memoryBytes": 268435456, "outputBytes": 134217728,
"timeMilliseconds": 60000, "resultBytes": 16777216}
}
forms.export použije input, output, format a volitelné password; formDataInput ani fonts nevyžaduje; file joby zarezervují výhradního kandidáta vedle cíle, flushnou a zavřou ho, validují ohraničený výsledkový JSON a pak atomicky vymění cíl
Chybějící písma, poškozený vstup, selhání autentizace či politiky, vyčerpané limity i neúspěšná publikace zachovají stávající kompletní cíl; výstup nesmí být aliasem PDF ani form-data vstupu, tedy ani hard linku
Pojmenované font rodiny
forms.import přijme fontFamilies v kořenu operace jako pole jedné až šestnácti popisků; absence ponechá původní profil jedné rodiny a callback popisek fontFamily
"fontFamilies": ["DejaVu Sans", "DejaVu Serif Condensed"],
"fonts": {
"DejaVu Sans": {
"regular": "DejaVuSans.ttf", "bold": "DejaVuSans-Bold.ttf",
"italic": "DejaVuSans-Oblique.ttf", "boldItalic": "DejaVuSans-BoldOblique.ttf"
},
"DejaVu Serif Condensed": {
"regular": "DejaVuSerifCondensed.ttf", "bold": "DejaVuSerifCondensed-Bold.ttf",
"italic": "DejaVuSerifCondensed-Italic.ttf", "boldItalic": "DejaVuSerifCondensed-BoldItalic.ttf"
}
}
U file jobů obsahuje fonts objekty klíčované přesnými nakonfigurovanými popisky; bez fontFamilies si uchová původní objekt přímých style cest; čtou se jen skutečné rodina/styl programy a všechny vybrané font bajty sdílejí rozpočet operace
U Windows V1 callbacků dostane stávající font callback každý skutečný kanonický UTF-8 nakonfigurovaný popisek a vybraný styl; dvě rodiny používající všechny čtyři styly vytvoří osm skutečných programových žádostí, aniž by se změnil callback záznam
ASCII popisková písmena se porovnávají bez rozlišení velikosti a ostatní Unicode znaky přesně; popisky jsou odlišné, neprázdné a nejvýše 128 UTF-16 code unit, bez okolních bílých znaků, řídicích znaků, nespárovaných surrogátů či CSS interpunkce uvozovek/oddělovačů
První nakonfigurovaná rodina je defaultem skalárního textu i zděděných rich stylů; defaultně CSS seznamy font-family použijí výběr první známé rodiny nativního kodeku
Opt-in fallbackFontFamilies=true zachová uspořádané inline CSS kandidáty font-family a načte skutečné nakonfigurované řez/styl programy pro fallback po celých grafémech; typované kandidáty, načítání callbacků i rozsah jen-rich popisuje Windows rich font fallback dodaných rodin
Aplikovaný výsledek reportuje richXMLProfile inline-xhtml-font-families-v1, nakonfigurované pole fontFamilies i skutečné objekty fontFamilyStyles obsahující rodinu, styl a bajty; fontStyles si uchovává původní typ objektového pole a sumarizuje bajtové počty podle stylu; fontBytes počítá všechny skutečné programy
Bez pole je richXMLProfile inline-xhtml-v1; smíšené skalární i původní typed-rich forms.fill používá samostatný binding original-typed-runs-v1 popsaný níže; starší rozšíření font callbacku jobů zůstává samostatným navazujícím úkolem
Verzované Windows C callbacky
Zahrňte hotpdf_abi_form_data.h; vyplňte hpdf_form_data_operation_v1, nastavte operation.struct_size na jeho kompletní velikost a předejte jeho nezměněnou operation předponu do hpdf_document_execute_json_v1
Volitelný font callback dostane UTF-8 rodinné bajty a styl 0 regular, 1 bold, 2 italic či 3 boldItalic a vrátí kompletní read tabulku hpdf_io_v1 pro skutečný font program; všechny čtyři programy dodávejte, když rich data používají všechny čtyři styly
Skalární data vyžádají regular program; fontFamily defaultuje na DejaVu Sans; dodané font IO callbacky i user data musí zůstat platné, dokud operace nevrátí; nenulové callback statusy jsou lepivé a propagují se bez fallback retry
U forms.import dodá InputIO FDF/XFDF a cíl už musí být načtený; OutputIO dostane kandidátní PDF a ResultIO ohraničený JSON; forms.export použije původní záznam V1 a zapíše FDF/XFDF do OutputIO
Windows hpdf_document_load_from_io zkopíruje kompletní vstup do neměnného vlastněného zdroje, dřív než se vrátí; náhrada či připojování volajícího nemůže změnit aktivní načtenou revizi ani její pozdější form-data výstup
Vlastněné zdroje použijí pro pozadí random čtení samostatný synchronizovaný handle, takže prefetch nemůže posunout sekvenční publikační kurzor; kandidátní dokument uvolní své pozadí čtečky, dřív než se jeho zdroj zničí
Aktivní kontext se změní až poté, co uspějí jak výstupní, tak výsledkový callback a projde finální checkpoint zrušení; selhání callbacku či zrušení kandidáta zahodí a zachová předchozí dokument i vlastněný zdroj
Callback už mohl dostat kandidátní bajty, dřív než pozdější callback selhal; vlastní výstupní cíl volající zapisuje až poté, co funkce execute vrátí HPDF_STATUS_OK
Původní rozložení záznamů V1 i exportované symboly zůstávají nezměněné; tohle Windows rozšíření je oddělené od publikovaného rozšíření callbacků nativního Linuxu
Bound vstupní body jsou file job processor i hpdf_document_execute_json_v1; starší callback záznam HPDFDocRunJob i obecné ExecuteLoadedOperation si v této fázi font rozšíření nezískají; Pascal volající můžou použít explicitní transaction třídu
Pole, rich text a politika
Podporované hodnoty zahrnují vnořené Unicode textové názvy, exportní názvy checkboxů a radio, pole multiselect i nezměněné read-only hodnoty; /V, /RV i skutečné AP resource se ukládají společně; neznámá pole i vyžadovaná omezení polí transakci zhatí
Rich interchange používá zdokumentovaný ohraničený XHTML/CSS profil i skutečné dodané style písma; netvrdí podporu libovolného HTML, celého CSS či neomezeného rich XML
Podepsané aktualizace AES R5/R6 si uchovají kompletní původní předponu, šifrovací parametry, permanentní šifrovací identifikátor i stávající CMS podpis; nezměněné skalární či rich importy jsou bajt za bajt shodné s aktuální potvrzenou revizí
Stávající integrita CMS i vazba ESS podepsávajícího se autentizují, dřív než podepsané formulářové aktualizace; vyplňování P2/P3 je dovolené jen v rámci svých skutečných omezení; P1, zámky FieldMDP i změněná read-only pole publikaci odmítnou
signaturePolicy přijme Booleovské requireCAdES, requireTimestamp, requireAdobeRevocationInfo a requireTimestampRevocation; trustedCAFile, timestampCAFile, timestampCRLFile a revocationCAFile musí být řetězce bez NUL a vyberou explicitní důvěru volajícího pro vyžádané kontroly
Volby C callbacků navíc ohraničí podepsané důkazy přes maxEvidenceBytes a maxEvidenceObjects; validace důvěry je odlišná od výchozí kontroly integrity podpisu
formData může snížit maxBytes, maxFields, maxObjects, maxDepth, maxValues, maxValueCodeUnits a maxTotalCodeUnits; ta přesná kladná celá čísla se navíc oříznou pracovní kapacitou; rozpočtové objectCount a pageCount omezují kandidátní dokumenty
budget.timeMilliseconds nastaví deadline operace; Windows C callbacky navíc přijmou elapsedMilliseconds jako dodatečně přísnější mez; zrušení se dotazuje během přípravy aktuálního grafu, dekódování formuláře, čtení písem, kontrol CMS, načítání kandidáta i publikace
Capabilities reportují skutečné formáty, styly, neměnný vstup i transakční chování callbacků; mapovaná anotační XFDF výměna je implementovaná samostatně, zatímco vložené FDF soubory, širší akce i inkrementální FDF dokumenty zůstávají nedokončené
Související témata
Smíšené skalární i původní typované rich vyplňování používá tentýž autentizovaný Windows kandidátní životní cyklus přes file joby i execute-json-v1
Transaction třída, Příprava aktuálního grafu, Nativní form data
Interní styly aplikují ohraničené selektory, importance, specificitu a pořadí zdrojů na skutečné importované rich hodnoty i uložená appearance; opakované ekvivalentní importy i neúspěšná publikace si uchovávají stávající transakční záruky
richTextResources dodá napojený i importovaný CSS pro skutečné Windows file joby i importy execute-json-v1, se stávající transakcí i font bindingy