Optional-content viewer state
Nativní rasterizace umí explicitně aplikovat doporučení optional-content ve stylu prohlížeče z sekcí 8.11.4.4 a 8.11.4.5 ISO 32000-1:2008
Defaultní volby ponechají ViewerState=nil a v obou anotačních použitích si uchovávají samostatné chování D ve finální podobě, bez automatické aplikace AS
Access := Document.GetRenderAccess(0);
Context := THPDFOptionalContentContext.Default;
Context.Zoom := 2;
Context.Language := 'en-US';
Viewer := THPDFHeadlessOptionalContentState.Create(Access, Context);
try
Viewer.SetGroupState(10, 0, True);
Options := THPDFHeadlessRenderOptions.Default;
Options.ViewerState := Viewer;
Viewer.Event := hocePrint;
Options.Usage := hruPrint;
HPDFRenderHeadlessPagePNGFile(Access, OutputFile, Options);
finally
Viewer.Free;
end;
View inicializuje D, aplikuje odpovídající View aplikace a pak manuální override; aplikace Print či Export dočasně vymění aktuální doporučení pro tu operaci a objekt stavu ani PDF slovníky nemění
Každé aktivní doporučení napříč odpovídajícími aplikacemi a kategoriemi musí být ON, aby skupina dostala ON; chybějící informace o použití nedodá doporučení a zachová aktuální stav té skupiny
Podporované kategorie jsou View, Print, Export, Zoom, Language a User; CreatorInfo a PageElement zůstávají informativní
Zoom používá inkluzivní minimum a exkluzivní maximum, s vyžadovanou alespoň jednou mezí a defaulty nula a nekonečno; Language preferuje přesné tagy bez rozlišení velikosti písmen uvnitř OCG aplikace, jinak se trefí do skupin primárního jazyka označených Preferred ON
User porovná explicitně dodané Individual, Title či Organization s řetězcem či polem názvů přes přesný Unicode text; textové řetězce PDFDocEncoding, UTF-16 i PDF 2.0 UTF-8 si uchovávají svůj dekódovaný význam
Aplikace s vynechanými OCGs defaultuje na prázdnou množinu skupin; chybějící PrintState ve stávajícím slovníku použití Print nedodá doporučení
AS neomezuje kategorie na stejnojmennou událost, takže aplikace Print může aplikovat doporučení Zoom či Language se stejným explicitním kontextem
Politiky OCMD, rekurzivní výrazy VE, vnořený marked content, Form XObject, obrázky i anotační appearance konzumují výsledné stavy skupin přes stávající ohraničenou cestu viditelnosti
Manuální změny přežijí změny kontextu, dokud se nevymažou ani nevrátí; reload, mutace, zavření či zničení dokumentu permanentně expiruje stav, což vyžaduje čerstvý přístup i nový objekt
Držte vypůjčený stav naživu a beze změny během každého renderu; read-only znovupoužití je dovolené, dokud zůstává v platnosti kontrakt souběžnosti callbacků podkladového adaptéru
Render práce, vyhledávání skupin, skeny jazykových kandidátů, vyhledávání manuálního výběru, ohraničené dekódování hexadecimálního i UTF-8 textu i dočasné úložiště stavu se účastní limitů operací, tokenů, dekódovaných bajtů, pracovních bajtů i zrušení
SetGroupState je operace stavového kontejneru řízená volajícím, s kapacitou 100000 výběrů; render limity konzumaci omezují nezávisle a aplikace by měly vnucovat vhodné meze externím žádostem o výběr
Viewer událost je nezávislá na Usage anotací; žádná z voleb neudělí tiskové oprávnění, nespustí akce SetOCGState, neaktivuje rich media ani nevytvoří uživatelské rozhraní
Akceptace používá nezávislé deklarované stavy i přesné RGB masky obdélníků, testy životnosti i mutací, reentranní i serializované souběžné renderování callbacků a samostatná pozorování MuPDF a Poppler
Pozorování default kontextu čteček nenahrazují explicitní nativní rovnice Zoom, Language, User či manuálního stavu; prosté geometrické companion nezávisle validují rastrové souřadnice
Verzované JSON operace Linuxu
{
"schemaVersion": 1,
"type": "render",
"dpi": 72,
"usage": "view",
"optionalContent": {
"event": "print",
"zoom": 2,
"language": "en-US",
"individual": "Alice",
"title": "Engineer",
"organization": "Example",
"selections": [
{"objectNumber": 10, "generationNumber": 0, "enabled": true}
]
}
}
Vynechání optionalContent zachová statické chování D; objekt aktivuje automatický stav s defaultní událostí View, zoom 1 a prázdnými kontextovými řetězci jazyka a uživatele
Událost přijme view, print či export a zůstává nezávislá na anotačním usage; jazyk operačního systému, identita uživatele ani zobrazovací zoom se neodvozují
Kontextové řetězce přijmou nejvýše 4096 UTF-16 code unit každý; zoom musí být konečný, kladný a nejvýše 1000000000
Výběry vyžadují kladné objektové číslo, číslo generace od nuly do 65535 i explicitní Booleovskou hodnotu enabled; operace přijme nejvýše 1024 výběrů v rámci limitu pracovní paměti a opakované reference použijí naposled dodaný stav
Každá operace vytvoří a uvolní vlastní vypůjčený nativní stav, takže požadované manuální výběry pošlete znovu s pozdější žádostí; PDF slovníky i následné render bez tohoto objektu si uchovávají předchozí konfiguraci
Poškozené JSON volby vrátí status neplatného argumentu, selhání přijatého rozpočtu status překročení rozpočtu a poškozená dokumentová metadata či zastaralé reference skupin si uchovají stávající status parse chyby renderu, dřív než publikace PNG
Capabilities reportují optionalContent.automaticState, tři události, explicitní kontextové členy, podporu manuálního výběru i životnost v rámci operace
Skutečné Language/User zdroje plaintext i AES R5/R6 vygeneruje Tests/Linux/Build-LinuxABIOptionalAutomaticFixtures.py OUTPUT a pak spusťte Tests/Linux/Run-LinuxABIOptionalAutomaticAcceptance.sh LIBRARY FIXTURES NEW_OUTPUT proti každému nativnímu ABI sestavení
Callback akceptace kontroluje nezávislé pixelové vzorce, přísné JSON typy, šifrování, rozpočty, zrušení, lepivá selhání output/result, zotavení se stejným handle i absenci drženého viewer stavu; vyžaduje pypdf, cryptography, NumPy a Pillow a potlačí spuštění desktopové čtečky
Viz THPDFHeadlessOptionalContentState, THPDFOptionalContentContext a IHPDFHeadlessRenderLifetime