Stato viewer dell'optional content
La rasterizzazione nativa può applicare esplicitamente le raccomandazioni optional-content in stile viewer delle sezioni 8.11.4.4 e 8.11.4.5 di ISO 32000-1:2008
Le opzioni di default lasciano ViewerState=nil e conservano il comportamento D final-form stand-alone in entrambi gli usi come annotazione, senza applicare AS in modo automatico
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 inizializza D, applica le application View corrispondenti e poi gli override manuali; le application Print o Export sostituiscono temporaneamente le raccomandazioni correnti per quell'operazione e non modificano l'oggetto di stato né i dizionari PDF
Ogni raccomandazione attiva tra application e categorie corrispondenti deve essere ON perché un gruppo riceva ON; l'assenza di informazioni d'uso non fornisce alcuna raccomandazione e preserva lo stato corrente del gruppo
Le categorie supportate sono View, Print, Export, Zoom, Language e User; CreatorInfo e PageElement restano informative
Zoom usa un min inclusivo e un max esclusivo, con almeno un bound richiesto e default pari a zero e infinito; Language privilegia i tag esatti case-insensitive tra gli OCG dell'application, altrimenti i gruppi della lingua primaria corrispondenti marcati Preferred ON
User confronta l'Individual, il Title o l'Organization forniti esplicitamente con una stringa o un array di nomi usando testo Unicode esatto; le stringhe PDFDocEncoding, UTF-16 e UTF-8 di PDF 2.0 conservano il loro significato decodificato
Un'application con OCG omessi fa default a un insieme di gruppi vuoto; PrintState omesso da un dizionario usage Print esistente non fornisce alcuna raccomandazione
AS non limita le categorie all'evento con lo stesso nome, quindi un'application Print può applicare raccomandazioni Zoom o Language usando lo stesso contesto esplicito
Le policy OCMD, le espressioni VE ricorsive, il marked content annidato, i Form XObject, le immagini e le appearance delle annotazioni consumano gli stati di gruppo risultanti attraverso il percorso di visibilità limitato esistente
Le modifiche manuali persistono attraverso i cambi di contesto finché non vengono azzerate o ripristinate; il ricaricamento, la mutazione, la chiusura o la distruzione del documento fa scadere lo stato in modo permanente, richiedendo un access nuovo e un nuovo oggetto
Mantenere lo stato preso in prestito vivo e invariato durante ogni render; il riuso read-only è permesso finché resta in vigore il contratto di concorrenza dei callback dell'adapter sottostante
Il lavoro di render, la lookup dei gruppi, le scansioni dei candidati lingua, la lookup delle selezioni manuali, la decodifica limitata di testo esadecimale e UTF-8 e l'archiviazione temporanea degli stati partecipano ai limiti di operazione, token, byte decodificati, byte di lavoro e cancellazione
SetGroupState è un'operazione del contenitore di stato guidata dal chiamante con una capacità di 100000 selezioni; i limiti di render limitano indipendentemente il consumo, e le applicazioni dovrebbero imporre limiti adeguati alle richieste di selezione esterne
L'evento viewer è indipendente dall'Usage delle annotazioni; nessuna delle due opzioni concede il permesso di stampa, esegue azioni SetOCGState, attiva rich media o crea un'interfaccia utente
L'accettazione usa stati dichiarati indipendenti e maschere RGB esatte di rettangoli, test di lifetime e mutazione, rendering concorrente con callback rientranti e serializzati, e osservazioni separate di MuPDF e Poppler
Le osservazioni Reader con contesto di default non sostituiscono le equazioni esplicite native di Zoom, Language, User o stato manuale; i companion di sola geometria validano indipendentemente le coordinate raster
Operazioni JSON versionate Linux
{
"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}
]
}
}
Omettere optionalContent conserva il comportamento D statico; un oggetto attiva lo stato automatico con un evento View di default, zoom 1 e stringhe di contesto lingua e utente vuote
L'evento accetta view, print o export e resta indipendente dall'usage delle annotazioni; non viene inferita alcuna lingua del sistema operativo, identità utente o zoom del display
Le stringhe di contesto ammettono al massimo 4096 code unit UTF-16 ciascuna; zoom deve essere finito, positivo e al massimo 1000000000
Le selezioni richiedono un numero oggetto positivo, un generation number da zero a 65535 e un valore Boolean esplicito per enabled; l'operazione ammette al massimo 1024 selezioni entro il proprio limite di working memory, e i riferimenti ripetuti usano l'ultimo stato fornito
Ogni operazione crea e libera il proprio stato nativo preso in prestito, quindi reinviare le selezioni manuali desiderate con una richiesta successiva; i dizionari PDF e i render successivi senza questo oggetto conservano la configurazione precedente
Le opzioni JSON malformate restituiscono lo stato invalid-argument, i fallimenti di budget ammessi restituiscono lo stato budget-exceeded, e i metadati malformati del documento o i riferimenti a gruppi stallo conservano lo stato esistente render parse-error prima della pubblicazione PNG
Le capability riportano optionalContent.automaticState, i tre eventi, i membri espliciti di contesto, il supporto alle selezioni manuali e la lifetime a scope di operazione
Generare sorgenti Language/User reali plain e AES R5/R6 con Tests/Linux/Build-LinuxABIOptionalAutomaticFixtures.py OUTPUT, poi eseguire Tests/Linux/Run-LinuxABIOptionalAutomaticAcceptance.sh LIBRARY FIXTURES NEW_OUTPUT su ogni build ABI nativa
I controlli di accettazione via callback verificano formule sui pixel indipendenti, tipi JSON rigorosi, cifratura, budget, cancellazione, fallimenti sticky di output/risultato, recupero sullo stesso handle e assenza di stato viewer conservato; richiede pypdf, cryptography, NumPy e Pillow e sopprime l'avvio del viewer desktop
Si vedano THPDFHeadlessOptionalContentState, THPDFOptionalContentContext e IHPDFHeadlessRenderLifetime