Comparação semântica de streams de conteúdo

HPDFContentStream pode normalizar conteúdo PDF decodificado em eventos canônicos limitados e comparar esses eventos sem tratar escolhas inofensivas de serialização como mudanças

Declarações

function HPDFNormalizeContentStreamGraphicsState(
  const Bytes: TBytes; out Canonical: TBytes;
  out Statistics: THPDFContentSemanticStatistics;
  NumberTolerance: Double = 1E-9;
  MaxOperations: Integer = 1000000;
  MaxCanonicalBytes: Int64 = 67108864
): boolean;

function HPDFCompareContentStreamsSemantic(
  const Left, Right: TBytes;
  out Info: THPDFContentSemanticCompareInfo;
  NumberTolerance: Double = 1E-9;
  MaxOperations: Integer = 1000000;
  MaxCanonicalBytes: Int64 = 67108864
): boolean;

Normalização

Diagnósticos e limites

THPDFContentSemanticStatistics relata informações de token, operação, operação de estado, estado redundante, evento normalizado, profundidade máxima de pilha, byte canônico, deslocamento de erro, validade e limite. A comparação também relata o primeiro evento normalizado diferente

Operandos de dicionário aninhado malformados, aridade inválida de operador de estado, escopos de estado gráfico sem correspondência ou não fechados, operandos finais, estouro de operação e estouro de byte canônico falham de forma segura e nunca relatam equivalência

Passe bytes de conteúdo decodificado. A decodificação de filtro de stream e a reconciliação de nomes de recursos entre dicionários de recursos diferentes permanecem responsabilidade do chamador