Compatibilidade de stream e deslocamento PDF 1.7
A versão 3.12.5 reforça a compatibilidade com dicionários de stream PDF 1.7, filtros criptográficos de segurança padrão, parsing da sintaxe de objetos, xref streams e saída por deslocamento em bytes. A decodificação genérica de streams trata /DP como o alias padrão de /DecodeParms, resolve entradas indiretas de array de parâmetros de decodificação, aceita as abreviações de filtro padrão /AHx e /LZW e trata o filtro /Crypt Identity como um no-op na etapa normal de decodificação de filtros
Ao carregar um PDF, o PDFlibPas trata uma entrada Catalog /Version como a versão efetiva do documento quando ela é mais nova que a versão do cabeçalho. Isso corresponde à regra de substituição de versão do catálogo no PDF 1.7
Documentos criptografados padrão agora preservam de forma mais consistente as decisões de crypt filter StrF, StmF, EFF, Identity, None e StdCF nomeados durante os fluxos de trabalho de carregamento, descriptografia, cópia e salvamento. Os fluxos de metadata respeitam EncryptMetadata=false, os fluxos de arquivos incorporados carregam /Type /EmbeddedFile para que o crypt filter de arquivo incorporado possa ser aplicado separadamente dos fluxos comuns, e as entradas Length de crypt filter AES recém-gravadas usam comprimentos em bits
A versão 3.56.38 garante que a criptografia da API normal crie ou preserve um trailer /ID antes que os dados de segurança padrão sejam gerados. A saída AES-256 salva a partir de PDFs de origem que não possuem /ID agora recarrega como criptografada por meio de EncryptionStatus e pode ser descriptografada explicitamente com Decrypt
O parsing de nomes PDF agora trata chaves esquerda e direita como delimitadores. Nomes como /Name} são, portanto, tokenizados na chave direita em vez de absorver o delimitador no token de nome
O parsing de strings literais agora ignora a barra invertida para sequências de escape desconhecidas e limita o parsing de \ddd a dígitos octais. Uma sequência como \128 é, portanto, decodificada como LF seguido do caractere 8 em vez de tratar 8 como parte do escape octal
Entradas comprimidas do tipo 2 em xref streams preservam seu número de object stream mesmo quando esse número é maior que o comprimento em bytes do PDF. A verificação de sanidade do tamanho do arquivo continua limitada a entradas xref normais, nas quais o segundo campo é um deslocamento em bytes
Tabelas xref de salvamento completo, startxref, tabelas xref linearizadas, valores Prev/XRefStm de xref stream e valores ByteRange de assinatura digital usam formatação e parsing de 64 bits. Isso impede que posições grandes em bytes sejam reduzidas por caminhos de inteiro de 32 bits antes de serem gravadas na sintaxe PDF
Quando um xref stream é regravado como um dicionário de trailer clássico, as chaves DecodeParms exclusivas de stream são removidas do trailer emitido. Fluxos de arquivo incorporado externos também mantêm FDecodeParms quando FFilter é promovido para Filter
A validação para 3.12.5 cobriu os conjuntos DUnitX de Delphi Win32 e Win64, com 141 de 141 testes aprovados em cada plataforma