PDFium Delphi Component Docs

Auxiliares de comparação de PDF com limites definidos

FPdfDiff implementa o alinhamento de páginas, as mudanças de texto UTF-16 e as regiões visuais conectadas usados pelo CompareWith

AlignPdfDiffPages pareia texto exato, geometria e impressões visuais por meio de uma subsequência comum mais longa com limites definidos; em seguida, identifica as correspondências exatas restantes como movimentos e pareia as lacunas sem correspondência como modificações

Páginas duplicadas são pareadas de forma determinística; uma página que se move e muda ao mesmo tempo não tem garantia de ser identificada como movimento

BuildPdfDiffTextChanges informa offsets e comprimentos UTF-16 de base zero; o modo por caractere mantém os pares surrogate juntos e o modo por palavra agrupa os espaços em branco separadamente dos demais caracteres

BuildPdfDiffPixelRegions agrupa blocos alterados conectados em retângulos de pixels com borda direita/inferior exclusiva; essas regiões podem incluir pixels inalterados dentro de um bloco

O alinhamento aceita no máximo 4,096 páginas por lado e 16,777,216 células; o texto aceita no máximo 65,536 tokens e 16,777,216 unidades UTF-16, com truncamento explícito quando os orçamentos de detalhe escolhidos se esgotam

Declarações públicas

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;