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

HPDFContentStream consegue normalizar conteúdo PDF descodificado em eventos canónicos delimitados e comparar esses eventos sem tratar como alterações escolhas de serialização inofensivas

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;

Normalization

Diagnostics and bounds

THPDFContentSemanticStatistics reporta informação sobre tokens, operações, operações de estado, estado redundante, eventos normalizados, profundidade máxima da pilha, bytes canónicos, offset do erro, validade e limites. A comparação reporta também o primeiro evento normalizado que difere

Operandos de dicionário aninhado malformados, aridade inválida de operadores de estado, âmbitos de graphics state sem par ou por fechar, operandos finais, overflow de operações e overflow de bytes canónicos falham em modo fechado e nunca reportam equivalência

Passe os bytes de conteúdo já descodificados. A descodificação dos filtros do stream e a reconciliação de nomes de recursos entre dicionários de recursos diferentes continuam a ser responsabilidade de quem chama