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