PDFium Delphi Component Docs

Assistants bornés de comparaison PDF

FPdfDiff implémente l’alignement des pages, les modifications de texte UTF-16 et les régions visuelles connexes utilisées par CompareWith

AlignPdfDiffPages associe les pages dont le texte, la géométrie et l’empreinte visuelle concordent exactement à l’aide d’une plus longue sous-séquence commune bornée, puis classe les correspondances exactes restantes comme déplacements et les intervalles non associés comme modifications

L’association des pages dupliquées est déterministe ; une page déplacée et modifiée simultanément n’est pas nécessairement reconnue comme un déplacement

BuildPdfDiffTextChanges donne des offsets et longueurs UTF-16 à partir de zéro ; le mode caractère préserve les paires de substitution, et le mode mot regroupe les espaces séparément des autres caractères

BuildPdfDiffPixelRegions regroupe les tuiles modifiées connexes en rectangles de pixels à bords droit et inférieur exclus ; ces régions peuvent inclure des pixels inchangés à l’intérieur d’une tuile

L’alignement accepte au plus 4,096 pages par côté et 16,777,216 cellules ; le texte est limité à 65,536 tokens et 16,777,216 unités UTF-16, avec une troncature explicite si les budgets de détail choisis sont épuisés

Déclarations publiques

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;