PDFium Delphi Component Docs

상한을 둔 PDF 비교 헬퍼

FPdfDiff는 CompareWith가 사용하는 페이지 정렬, UTF-16 텍스트 변경, 연결된 시각적 영역을 구현합니다

AlignPdfDiffPages는 상한이 있는 최장 공통 부분 수열로 텍스트, 지오메트리, 시각적 지문이 정확히 같은 페이지를 짝지읍니다. 남은 정확한 일치는 이동으로 찾고 대응되지 않은 구간은 수정으로 짝지읍니다

중복 페이지의 짝은 결정적으로 정합니다. 다만 이동과 변경이 동시에 일어난 페이지를 반드시 이동으로 인식하는 것은 아닙니다

BuildPdfDiffTextChanges는 0부터 시작하는 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;