Estado de viewer de optional content
A rasterização nativa pode aplicar explicitamente recomendações de optional content em estilo viewer das seções 8.11.4.4 e 8.11.4.5 da ISO 32000-1:2008
As opções default deixam ViewerState=nil e retêm o comportamento D stand-alone de final-form em ambos os usos de anotações, sem aplicar AS automaticamente
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 inicializa D, aplica as aplicações View correspondentes e depois os overrides manuais; aplicações Print ou Export substituem temporariamente as recomendações atuais daquela operação e não modificam o objeto de estado nem os dicionários do PDF
Toda recomendação ativa entre aplicações e categorias correspondentes precisa estar ON para que um grupo receba ON; informações de uso ausentes não fornecem recomendação e preservam o estado atual daquele grupo
As categorias suportadas são View, Print, Export, Zoom, Language e User; CreatorInfo e PageElement permanecem informativos
Zoom usa um mínimo inclusivo e máximo exclusivo, com pelo menos um bound exigido e defaults de zero e infinito; Language prefere tags exatas insensíveis a maiúsculas dentro dos OCGs da aplicação, caso contrário corresponde a grupos de linguagem primária marcados Preferred ON
User compara o Individual, Title ou Organization explicitamente fornecido contra uma string ou array de nomes usando texto Unicode exato; strings de texto PDFDocEncoding, UTF-16 e UTF-8 do PDF 2.0 retêm seu significado decodificado
Uma aplicação com OCGs omitidos tem default de um conjunto vazio de grupos; PrintState omitido de um dicionário Print de uso existente não fornece recomendação
AS não limita as categorias ao evento de mesmo nome, então uma aplicação Print pode aplicar recomendações Zoom ou Language usando o mesmo contexto explícito
Políticas OCMD, expressões VE recursivas, marked content aninhado, Form XObjects, imagens e aparências de anotações consomem os estados de grupos resultantes pelo path existente delimitado de visibilidade
Mudanças manuais persistem através de mudanças de contexto até serem limpas ou revertidas; reload, mutação, fechamento ou destruição do documento expira o estado permanentemente, exigindo acesso fresco e um objeto novo
Mantenha o estado emprestado vivo e inalterado durante cada render; reutilização read-only é permitida enquanto o contrato de concorrência de callbacks do adapter subjacente permanecer em vigor
Trabalho de render, lookup de grupos, scans de candidatos de linguagens, lookup de seleções manuais, decodificação delimitada de texto hexadecimal e UTF-8 e armazenamento temporário de estado participam dos limites de operações, tokens, bytes decodificados, bytes de trabalho e cancelamento
SetGroupState é uma operação de container de estados dirigida pelo chamador, com capacidade de 100000 seleções; os limites de render delimitam o consumo de forma independente, e aplicações devem impor limites adequados a requisições externas de seleção
O evento de viewer é independente do Usage de anotações; nenhuma das opções concede permissão de impressão, executa actions SetOCGState, ativa rich media nem cria interface de usuário
A aceitação usa estados declarados independentes e máscaras exatas de retângulos RGB, testes de tempo de vida e mutação, rendering concorrente reentrante e de callbacks serializados, e observações separadas de MuPDF e Poppler
Observações de contextos default de readers não substituem as equações nativas explícitas de Zoom, Language, User ou estado manual; companions comuns de geometria validam de forma independente as coordenadas do raster
Operações JSON versionadas do 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}
]
}
}
Omitir optionalContent retém o comportamento estático D; um objeto ativa o estado automático com um evento View default, zoom 1 e strings vazias de contexto de linguagem e usuário
O evento aceita view, print ou export e permanece independente do usage de anotações; nenhuma linguagem do sistema operacional, identidade de usuário nem zoom de exibição é inferido
Strings de contexto admitem no máximo 4096 code units UTF-16 cada; zoom precisa ser finito, positivo e no máximo 1000000000
Seleções exigem um número de objeto positivo, um número de geração de zero a 65535 e um valor Boolean explícito de enabled; a operação admite no máximo 1024 seleções dentro do limite de memória de trabalho dela, e referências repetidas usam o último estado fornecido
Cada operação cria e libera seu próprio estado nativo emprestado, então envie as seleções manuais desejadas de novo numa requisição posterior; os dicionários do PDF e renders subsequentes sem este objeto retêm a configuração anterior deles
Opções JSON malformadas retornam status de argumento inválido, falhas de orçamento admitidas retornam status de orçamento excedido, e metadados de documentos malformados ou referências velhas de grupos retêm o status existente de erro de parse de render antes da publicação do PNG
As capabilities reportam optionalContent.automaticState, os três eventos, membros explícitos de contexto, suporte a seleção manual e tempo de vida delimitado à operação
Gere origens reais Language/User plain e AES R5/R6 com Tests/Linux/Build-LinuxABIOptionalAutomaticFixtures.py OUTPUT, e depois execute Tests/Linux/Run-LinuxABIOptionalAutomaticAcceptance.sh LIBRARY FIXTURES NEW_OUTPUT contra cada build da ABI nativa
A aceitação de callbacks checa fórmulas independentes de pixels, tipos JSON estritos, criptografia, orçamentos, cancelamento, falhas sticky de saída/resultado, recuperação de mesmo handle e ausência de estado de viewer retido; ela exige pypdf, cryptography, NumPy e Pillow e suprime a chamada de viewers de desktop
Veja THPDFHeadlessOptionalContentState, THPDFOptionalContentContext e IHPDFHeadlessRenderLifetime