PDFium Delphi Component Docs

مساعدات محدودة لمقارنة PDF

تنفذ FPdfDiff محاذاة الصفحات وتغييرات نص UTF-16 والمناطق المرئية المتصلة المستخدمة بواسطة CompareWith

تطابق AlignPdfDiffPages النص والهندسة والبصمات المرئية المتطابقة عبر أطول تتابع مشترك محدود، ثم تعتبر التطابقات المتبقية نقلًا والفجوات غير المتطابقة تعديلات

تُطابق الصفحات المكررة بصورة حتمية؛ لا يُضمن اكتشاف الصفحة المنقولة والمعدلة معًا بوصفها نقلًا

تبلغ BuildPdfDiffTextChanges عن إزاحات وأطوال UTF-16 تبدأ من الصفر؛ يحافظ نمط المحارف على أزواج surrogate، ويجمع نمط الكلمات المسافات منفصلة عن بقية المحارف

تجمع BuildPdfDiffPixelRegions البلاطات المتغيرة المتصلة في مستطيلات بكسلية بحدود يمنى وسفلى حصرية؛ قد تتضمن بكسلات غير متغيرة داخل البلاطة

تقبل المحاذاة 4,096 صفحة لكل جانب و 16,777,216 خلية كحد أقصى؛ يقبل النص 65,536 token و 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;