Optional-content viewer state

Native rasterisatie kan viewer-stijl optional-content-aanbevelingen uit ISO 32000-1:2008 secties 8.11.4.4 en 8.11.4.5 expliciet toepassen

Default options laten ViewerState=nil en behouden standalone final-form D-gedrag in beide annotatie-usages, zonder AS automatisch toe te passen

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 initialiseert D, past matchende View-toepassingen toe, daarna handmatige overrides; Print- of Export-toepassingen vervangen tijdelijk de huidige aanbevelingen voor die operatie en wijzigen het state-object of PDF-dictionaries niet

Elke actieve aanbeveling over matchende toepassingen en categorieën heen moet ON zijn opdat een groep ON ontvangt; afwezige usage-informatie levert geen aanbeveling en behoudt de huidige status van die groep

Ondersteunde categorieën zijn View, Print, Export, Zoom, Language en User; CreatorInfo en PageElement blijven informatief

Zoom gebruikt een inclusieve min en exclusieve max, met ten minste één grens vereist en defaults van nul en oneindig; Language prefereert exacte case-insensitive tags binnen de OCG's van de toepassing, en anders matchende primaire-taal-groepen gemarkeerd Preferred ON

User vergelijkt de expliciet meegeleverde Individual, Title of Organization met een string of array van namen met exacte Unicode-tekst; PDFDocEncoding-, UTF-16- en PDF 2.0 UTF-8-tekststrings behouden diens gedecodeerde betekenis

Een toepassing met weggelaten OCGs defaultt naar een lege groepsset; PrintState weggelaten uit een bestaand Print-usage-dictionary levert geen aanbeveling

AS beperkt categorieën niet tot het gelijknamige event, dus een Print-toepassing mag Zoom- of Language-aanbevelingen toepassen met dezelfde expliciete context

OCMD-policies, recursieve VE-expressies, nested marked content, Form XObjects, afbeeldingen en annotatie-appearances consumeren de resulterende groepsstatussen via het bestaande begrensde visibility-pad

Handmatige wijzigingen blijven bestaan over contextwisselingen heen tot ze worden gewist of teruggedraaid; document-reload, mutatie, sluiten of destructie laat de status permanent verlopen, met verse toegang en een nieuw object tot gevolg

Houd de geleende status in leven en ongewijzigd tijdens elke render; read-only hergebruik is toegestaan zolang het callback-concurrency-contract van de onderliggende adapter geldt

Renderwerk, groeps-opzoek, taal-candidate-scans, handmatige-selectie-opzoek, begrensde hexadecimale en UTF-8-tekstdecodering en tijdelijke statusopslag komen in operation-, token-, decoded-byte-, working-byte- en annuleringslimieten

SetGroupState is een door de aanroeper gestuurde state-container-operatie met een capaciteit van 100000 selecties; renderlimieten begrenzen consumptie onafhankelijk, en applicaties moeten geschikte limieten opleggen aan externe selectie-requests

Viewer event is onafhankelijk van annotation Usage; geen van beide opties verleent print-permission, voert SetOCGState-actions uit, activeert rich media of maakt een gebruikersinterface aan

Acceptatie gebruikt onafhankelijke gedeclareerde statussen en exacte RGB-rechthoek-maskers, levensduur- en mutatietests, reentrant en geserialiseerd-callback concurrende rendering en aparte MuPDF- en Poppler-observaties

Reader default-context-observaties substitueren geen expliciete native Zoom-, Language-, User- of handmatige-status-vergelijkingen; gewone geometrie-companions valideren rastercoördinaten onafhankelijk

Linux versioned JSON-operaties

{
  "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}
    ]
  }
}

optionalContent weglaten behoudt statisch D-gedrag; een object activeert automatische status met een default View-event, zoom 1 en lege taal- en gebruikerscontext-strings

Het event accepteert view, print of export en blijft onafhankelijk van de annotatie-usage; er wordt geen taal van het besturingssysteem, geen gebruikersidentiteit of display-zoom afgeleid

Context-strings staan hoogstens elk 4096 UTF-16-code-units toe; zoom moet eindig, positief en hoogstens 1000000000 zijn

Selecties vragen een positief objectnummer, een generation number van nul tot en met 65535 en een expliciete Boolean enabled-waarde; de operatie staat hoogstens 1024 selecties toe binnen diens working-memory-limiet, en herhaalde referenties gebruiken de laatst meegeleverde status

Elke operatie maakt diens eigen geleende native status aan en geeft die vrij, dus stuur de gewenste handmatige selecties opnieuw mee met een later request; de PDF-dictionaries en daaropvolgende renders zonder dit object behouden diens eerdere configuratie

Misvormde JSON-options geven invalid-argument-status terug, toegelaten budget-falen geeft budget-exceeded-status, en misvormde documentmetadata of verouderde groepsreferenties behouden de bestaande render parse-error-status vóór PNG-publicatie

Capabilities rapporteren optionalContent.automaticState, de drie events, expliciete context-leden, ondersteuning voor handmatige selectie en operation-scoped levensduur

Genereer echte plain- en AES R5/R6-Language/User-bronnen met Tests/Linux/Build-LinuxABIOptionalAutomaticFixtures.py OUTPUT, en draai daarna Tests/Linux/Run-LinuxABIOptionalAutomaticAcceptance.sh LIBRARY FIXTURES NEW_OUTPUT tegen elke native ABI-build

De callback-acceptatie checkt onafhankelijke pixelvergelijkingen, strikte JSON-types, encryptie, budgetten, annulering, sticky output-/resultaatfalen, same-handle-herstel en afwezigheid van vastgehouden viewer-status; ze vraagt pypdf, cryptography, NumPy en Pillow en onderdrukt desktop-viewer-launch

Zie THPDFHeadlessOptionalContentState, THPDFOptionalContentContext en IHPDFHeadlessRenderLifetime