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