Comparación semántica de content streams

HPDFContentStream puede normalizar contenido PDF decodificado en eventos canónicos acotados y comparar esos eventos sin tratar elecciones de serialización inofensivas como cambios

Declaración

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;

Normalización

Diagnóstico y límites

THPDFContentSemanticStatistics reporta información de tokens, operaciones, state-operations, estados redundantes, eventos normalizados, profundidad máxima del stack, bytes canónicos, offset de error, validez y límites. La comparación además reporta el primer evento normalizado que difiere

Los operandos de diccionario anidados malformados, la aridad inválida de operadores de estado, los scopes de graphics-state sin cerrar o sin emparejar, los operandos sobrantes, el overflow de operaciones y el overflow de bytes canónicos fallan de forma cerrada y nunca reportan equivalencia

Pase bytes de contenido decodificados. La decodificación de stream filters y la reconciliación de nombres de recursos entre diccionarios de recursos distintos siguen siendo responsabilidad del caller