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