Optional-Content-Viewer-State

Natives Rasterisieren kann viewer-seitige Optional-Content-Empfehlungen aus ISO 32000-1:2008 Abschnitten 8.11.4.4 und 8.11.4.5 explizit anwenden

Default-Optionen lassen ViewerState=nil und behalten stand-alone Final-Form-D-Verhalten in beiden Annotation-Usages, ohne AS automatisch anzuwenden

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 initialisiert D, wendet passende View-Applications an, dann manuelle Overrides; Print- oder Export-Applications ersetzen die aktuellen Empfehlungen temporär für diese Operation und ändern weder das State-Objekt noch PDF-Dictionaries

Jede aktive Empfehlung über passende Applications und Kategorien muss ON sein, damit eine Gruppe ON erhält; fehlende Usage-Informationen liefern keine Empfehlung und bewahren den aktuellen Zustand der Gruppe

Unterstützte Kategorien sind View, Print, Export, Zoom, Language und User; CreatorInfo und PageElement bleiben informativ

Zoom nutzt inklusives Min und exklusives Max, mit mindestens einer Grenze und Defaults von null und unendlich; Language bevorzugt exakte, groß-/kleinschreibungsunabhängige Tags innerhalb der OCGs der Application, sonst Gruppen der Primärsprache, die auf Preferred ON markiert sind

User vergleicht den explizit gelieferten Individual-, Title- oder Organization-Wert gegen einen String oder ein Array von Namen mit exaktem Unicode-Text; PDFDocEncoding-, UTF-16- und PDF-2.0-UTF-8-Textstrings behalten ihre dekodierte Bedeutung

Eine Application mit weggelassenen OCGs defaultet auf eine leere Gruppenmenge; ein in einem bestehenden Print-Usage-Dictionary fehlendes PrintState liefert keine Empfehlung

AS begrenzt Kategorien nicht auf das identisch benannte Event, sodass eine Print-Application Zoom- oder Language-Empfehlungen mit demselben expliziten Kontext anwenden darf

OCMD-Policies, rekursive VE-Ausdrücke, verschachtelte Marked Contents, Form XObjects, Bilder und Annotation-Appearances konsumieren die resultierenden Gruppenzustände über den bestehenden begrenzten Sichtbarkeitspfad

Manuelle Änderungen bleiben über Kontextwechsel hinweg bestehen, bis sie gelöscht oder zurückgesetzt werden; Dokument-Reload, Mutation, Close oder Zerstörung lässt den State dauerhaft ablaufen und erfordert frischen Zugriff und ein neues Objekt

Den geliehenen State während jedes Render-Vorgangs am Leben und unverändert halten; Read-only-Wiederverwendung ist erlaubt, solange der Callback-Concurrency-Kontrakt des zugrunde liegenden Adapters gilt

Render-Arbeit, Gruppen-Lookup, Language-Kandidaten-Scans, Manual-Selection-Lookup, begrenztes Hexadezimal- und UTF-8-Text-Decoding sowie temporäre State-Speicherung beteiligen sich an Operations-, Token-, Decoded-Byte-, Working-Byte- und Abbruch-Limits

SetGroupState ist eine aufrufergetriebene State-Container-Operation mit einer Kapazität von 100000 Selections; Render-Limits begrenzen den Verbrauch unabhängig, und Applications sollten externe Selection-Requests angemessen begrenzen

Viewer-Event ist unabhängig von der Annotation-Usage; keine der Optionen gewährt Print-Rechte, führt SetOCGState-Actions aus, aktiviert Rich Media oder erzeugt eine Benutzerschnittstelle

Die Abnahme nutzt unabhängige deklarierte States und exakte RGB-Rechteck-Masken, Lebensdauer- und Mutationstests, wiedereintretendes und serialisiertes Callback-Concurrent-Rendering sowie separate MuPDF- und Poppler-Beobachtungen

Reader-Default-Kontext-Beobachtungen ersetzen keine expliziten nativen Zoom-, Language-, User- oder Manual-State-Gleichungen; plain Geometrie-Begleiter validieren Rasterkoordinaten unabhängig

Versionierte Linux-JSON-Operationen

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

Das Weglassen von optionalContent behält statisches D-Verhalten; ein Objekt aktiviert den automatischen State mit Default-View-Event, Zoom 1 und leeren Language- und User-Kontextstrings

Das Event akzeptiert view, print oder export und bleibt unabhängig von der Annotation-usage; keine Betriebssystemsprache, User-Identität oder Display-Zoom wird erschlossen

Kontextstrings fassen je höchstens 4096 UTF-16-Code-Einheiten; Zoom muss endlich, positiv und höchstens 1000000000 sein

Selections verlangen eine positive Objektnummer, eine Generierungsnummer von null bis 65535 und einen expliziten Boolean enabled-Wert; die Operation nimmt höchstens 1024 Selections innerhalb ihres Working-Memory-Limits an, und wiederholte Referenzen nutzen den zuletzt gelieferten Zustand

Jede Operation erzeugt und gibt ihren eigenen geliehenen nativen State frei, also die gewünschten manuellen Selections bei einer späteren Anfrage erneut senden; die PDF-Dictionaries und nachfolgende Renders ohne dieses Objekt behalten ihre frühere Konfiguration

Fehlerhafte JSON-Optionen liefern Invalid-Argument-Status, Admitted-Budget-Fehler Budget-Exceeded-Status, und fehlerhafte Dokument-Metadaten oder veraltete Gruppenreferenzen behalten den bestehenden Render-Parse-Error-Status vor der PNG-Veröffentlichung

Capabilities melden optionalContent.automaticState, die drei Events, explizite Kontextmember, Manual-Selection-Unterstützung und operation-scoped Lebensdauer

Echte Plain- und AES-R5/R6-Language/User-Quellen mit Tests/Linux/Build-LinuxABIOptionalAutomaticFixtures.py OUTPUT erzeugen, dann Tests/Linux/Run-LinuxABIOptionalAutomaticAcceptance.sh LIBRARY FIXTURES NEW_OUTPUT gegen jeden nativen ABI-Build ausführen

Der Callback-Abnahmetest prüft unabhängige Pixel-Formeln, strikte JSON-Typen, Verschlüsselung, Budgets, Abbruch, sticky Output-/Result-Fehler, Same-Handle-Recovery und die Abwesenheit behaltener Viewer-States; er benötigt pypdf, cryptography, NumPy und Pillow und unterdrückt den Desktop-Viewer-Start

Siehe THPDFHeadlessOptionalContentState, THPDFOptionalContentContext und IHPDFHeadlessRenderLifetime