Estado de leitor de optional content
A rasterização nativa pode aplicar explicitamente recomendações de optional content ao estilo de leitores das secções 8.11.4.4 e 8.11.4.5 da ISO 32000-1:2008
As opções por defeito deixam ViewerState=nil e mantêm o comportamento D de forma final autónoma 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 para essa operação e não modificam o objeto de estado nem os dicionários PDF
Todas as recomendações ativas através de aplicações e categorias correspondentes têm de estar ON para um grupo receber ON; informação de uso ausente não fornece recomendação e preserva o estado atual desse grupo
As categorias suportadas são View, Print, Export, Zoom, Language e User; CreatorInfo e PageElement permanecem informativos
Zoom usa um min inclusivo e um max exclusivo, exigindo pelo menos um bound e com defaults de zero e infinito; Language prefere etiquetas exatas insensíveis a maiúsculas e minúsculas dentro dos OCGs da aplicação, caso contrário corresponde a grupos de linguagens primárias 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 mantêm o significado descodificado delas
Uma aplicação com OCGs omitidos tem por defeito um conjunto vazio de grupos; PrintState omitido de um dicionário existente de uso Print não fornece recomendação
AS não limita as categorias ao evento de mesmo nome, pelo que 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 através do caminho existente delimitado de visibilidade
Alterações manuais persistem através de mudanças de contextos até serem limpas ou revertidas; recarregamento, mutação, fecho ou destruição do documento expira permanentemente o estado, exigindo acesso fresco e um objeto novo
Mantenha o estado emprestado vivo e inalterado durante cada renderização; a reutilização só de leitura é permitida enquanto o contrato de concorrência de callbacks do adaptador subjacente permanecer em vigor
Trabalho de renderização, consulta de grupos, varreduras de candidatos de linguagens, consulta de seleções manuais, descodificação delimitada de texto hexadecimal e UTF-8 e armazenamento temporário de estados participam nos limites de operações, tokens, bytes descodificados, bytes de trabalho e cancelamento
SetGroupState é uma operação de contentores de estados conduzida por quem chama, com capacidade de 100000 seleções; os limites de renderização delimitam de forma independente o consumo, e as aplicações devem impor limites adequados a pedidos externos de seleções
O evento do leitor é independente do Usage de anotações; nenhuma das opções concede permissão de impressão, executa ações SetOCGState, ativa rich media nem cria uma interface de utilizador
A aceitação usa estados declarados independentes e máscaras exatas de retângulos RGB, testes de tempo de vida e de mutações, renderização concorrente reentrante e com callbacks serializados, e observações separadas de MuPDF e Poppler
Observações de contextos por defeito de leitores não substituem equações nativas explícitas de Zoom, Language, User ou de estados manuais; companheiros de geometria simples validam de forma independente as coordenadas raster
Operações JSON versionadas de 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 mantém o comportamento D estático; um objeto ativa o estado automático com um evento View por defeito, zoom 1 e strings vazias de contexto de linguagens e de utilizadores
O evento aceita view, print ou export e permanece independente do usage de anotações; nenhuma linguagem do sistema operativo, identidade de utilizadores nem zoom de apresentação é inferido
Strings de contexto admitem no máximo 4096 unidades de código UTF-16 cada; o zoom tem de 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
Toda a operação cria e liberta o estado nativo emprestado próprio dela, por isso envie de novo as seleções manuais desejadas num pedido posterior; os dicionários PDF e renderizações subsequentes sem este objeto mantêm a configuração anterior deles
Opções JSON malformadas devolvem status de argumento inválido, falhas de orçamentos admitidos devolvem status de orçamento excedido, e metadados malformados de documentos ou referências de grupos obsoletas mantêm o status existente de erros de parsing de renderização antes da publicação do PNG
As capacidades reportam optionalContent.automaticState, os três eventos, membros explícitos de contextos, suporte de seleções manuais e tempo de vida do âmbito da operação
Gere fontes reais de Language/User em texto simples e AES R5/R6 com Tests/Linux/Build-LinuxABIOptionalAutomaticFixtures.py OUTPUT e depois corre Tests/Linux/Run-LinuxABIOptionalAutomaticAcceptance.sh LIBRARY FIXTURES NEW_OUTPUT contra cada compilação nativa da ABI
A aceitação de callbacks verifica fórmulas independentes de píxeis, tipos JSON estritos, encriptação, orçamentos, cancelamento, falhas persistentes de saída/resultados, recuperação do mesmo handle e ausência de estado de leitores retido; exige pypdf, cryptography, NumPy e Pillow e suprime o lançamento de leitores de desktop
Veja THPDFHeadlessOptionalContentState, THPDFOptionalContentContext e IHPDFHeadlessRenderLifetime