PDFium Delphi Component Docs

Ограниченные вспомогательные функции сравнения PDF

FPdfDiff реализует выравнивание страниц, изменения текста UTF-16 и связные визуальные области, используемые CompareWith

AlignPdfDiffPages сопоставляет точные текстовые, геометрические и визуальные отпечатки через ограниченную наидлиннейшую общую подпоследовательность, затем распознаёт оставшиеся точные совпадения как перемещения, а несопоставленные разрывы — как изменения

Дублирующиеся страницы сопоставляются детерминированно; страница, которая одновременно перемещается и изменяется, не гарантированно распознаётся как перемещение

BuildPdfDiffTextChanges сообщает нуль-базированные смещения и длины UTF-16; в символьном режиме суррогатные пары держатся вместе, а в словном режиме пробелы группируются отдельно от остальных символов

BuildPdfDiffPixelRegions объединяет связанные изменённые тайлы в пиксельные прямоугольники с исключающими правой/нижней границами; такие области могут включать неизменённые пиксели внутри тайла

Выравнивание принимает не более 4 096 страниц на сторону и 16 777 216 ячеек; текст — не более 65 536 токенов и 16 777 216 единиц UTF-16, с явной усечкой, когда выбранные бюджеты детализации исчерпаны

Публичные объявления

type
  TPdfDiffPageKind= (dpkMatched, dpkModified, dpkMoved, dpkInserted, dpkDeleted);
  TPdfDiffTextMode= (dtmNone, dtmCharacters, dtmWords);
  TPdfDiffPageSignature= record
    Text: WideString;
    VisualHash: UInt64;
    Width, Height: Single;
    Rotation: Integer;
  end;
  TPdfDiffPageSignatures= array of TPdfDiffPageSignature;
  TPdfDiffPagePair= record
    LeftPageIndex, RightPageIndex: Integer;
    Kind: TPdfDiffPageKind;
  end;
  TPdfDiffPagePairs= array of TPdfDiffPagePair;
  // Offsets and lengths count UTF-16 code units, starting at zero
  TPdfDiffTextChange= record
    LeftStart, LeftLength, RightStart, RightLength: Integer;
  end;
  TPdfDiffTextChanges= array of TPdfDiffTextChange;
  TPdfDiffPixelRegion= record
    Left, Top, Right, Bottom: Integer;
  end;
  TPdfDiffPixelRegions= array of TPdfDiffPixelRegion;

function AlignPdfDiffPages(const Left, Right: TPdfDiffPageSignatures;
  MaxCells: Integer): TPdfDiffPagePairs;
function BuildPdfDiffTextChanges(const Left, Right: WideString;
  Mode: TPdfDiffTextMode; MaxCells, MaxTokens: Integer;
  out Truncated: Boolean): TPdfDiffTextChanges;
function BuildPdfDiffPixelRegions(const Mask: TBytes; Width, Height,
  TileSize, MaxRegions: Integer; out Truncated: Boolean): TPdfDiffPixelRegions;