Семантическое сравнение content stream

HPDFContentStream умеет нормализовать декодированное содержимое PDF в ограниченные канонические события и сравнивать эти события, не считая безобидные решения сериализации изменениями

Объявление

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;

Нормализация

Диагностика и границы

THPDFContentSemanticStatistics сообщает информацию о token, операциях, state-операциях, избыточных состояниях, нормализованных событиях, максимальной глубине стека, канонических байтах, смещении ошибки, валидности и лимитах. Сравнение дополнительно сообщает первое различающееся нормализованное событие

Битые вложенные операнды-словари, невалидная арность state-операторов, непарные или незакрытые области graphics state, хвостовые операнды, переполнение операций и переполнение канонических байтов приводят к отказу целиком и никогда не сообщают об эквивалентности

Передавайте декодированные байты содержимого. Декодирование stream filter и согласование имён ресурсов между разными словарями ресурсов остаются на ответственности вызывающего