PDFium Delphi Component Docs

RectangleCount metode

Komponent: TPdf  ·  Enhed: PDFium
Tæller antallet af rektangulære områder optaget af et tekstsegment. Funktionen fletter automatisk små tegnbokse sammen til større, hvis tegnene er på samme linje og bruger samme skriftindstillinger.

Syntax

function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;

StartIndexInteger. The 0-based index of the first character in the segment to measure. Defaults to 0.
CountInteger. The number of characters to include in the measurement, starting from StartIndex. Defaults to MaxInt, which covers all remaining characters on the page.

Return Value

Antallet af fusionerede afgrænsningsrektangler, der dækker det angivne tegnsegment. Efter dette kald er hvert rektangel tilgængeligt via den indekserede egenskab Rectangle[0] gennem Rectangle[RectangleCount - 1].

Description

RectangleCount beregner det sæt af afgrænsningsrektangler, der tilsammen dækker en sammenhængende kørsel af tegn på den aktuelle side. Tegn på samme linje, der deler de samme skrifttypeindstillinger, flettes automatisk til et enkelt rektangel, hvilket reducerer resultatet til det minimale antal ikke-overlappende bokse, der er nødvendige for at fremhæve teksten.

Parametrene StartIndex og Count definerer det tegnsegment, der skal måles. En typisk anvendelse er at sende matchindekset returneret af FindFirst eller FindNext som StartIndex, og længden af søgestrengen som Count, for at hente fremhævelsesrektangler for et søgeresultat.

De returnerede rektangler gemmes i en intern buffer og forbliver gyldige indtil det næste kald til RectangleCount. Hent hvert rektangel ved at læse egenskaben Rectangle[Index] for Index i området 0 til RectangleCount - 1. Alle koordinater er i PDF-brugerrum-enheder (punkter, origo i nederste venstre).

For en almindelig tælling af alle tegn på siden, brug CharacterCount; for at finde, hvor et specifikt tegn sidder på siden, brug CharacterIndexAtPos.

Example

var
  MatchIdx, RCount, I: Integer;
  Rect: TPdfRectangle;
begin
  Pdf1.PageIndex := 0;
  MatchIdx := Pdf1.FindFirst('PDFium');
  if MatchIdx >= 0 then
  begin
    RCount := Pdf1.RectangleCount(MatchIdx, Length('PDFium'));
    for I := 0 to RCount - 1 do
    begin
      Rect := Pdf1.Rectangle[I];
      // Draw a highlight box using Rect.Left/Top/Right/Bottom
      Memo1.Lines.Add(Format('Rect %d: (%.1f, %.1f, %.1f, %.1f)',
        [I, Rect.Left, Rect.Bottom, Rect.Right, Rect.Top]));
    end;
  end;
end;

See Also

Rectangle, FindFirst, CharacterCount, CharacterIndexAtPos, Text