PDFium Delphi Component Docs

RectangleCount Metod

Component: TPdf  ·  Unit: PDFium
Räknar antalet rektangulära områden som upptas av ett textsegment. Funktionen slår automatiskt samman små teckenrutor till en större om dessa tecken ligger på samma rad och använder samma typsnittsinställningar

Syntax

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

StartIndexInteger. Det nollbaserade indexet för det första tecknet i segmentet som ska mätas. Standardvärde är 0
CountInteger. Antalet tecken som ska ingå i mätningen, med början från StartIndex. Standardvärde är MaxInt, vilket omfattar alla återstående tecken på sidan

Return Value

Antalet sammanfogade höljande rektanglar som täcker det angivna teckensegmentet. Efter detta anrop är varje rektangel tillgänglig via den indexerade egenskapen Rectangle[0] upp till och med Rectangle[RectangleCount - 1]

Description

RectangleCount beräknar uppsättningen av höljande rektanglar som tillsammans täcker en sammanhängande teckensekvens på den aktuella sidan. Tecken på samma rad som delar samma typsnittsinställningar slås automatiskt samman till en enda rektangel, vilket reducerar resultatet till det minsta antal icke överlappande rutor som behövs för att markera texten

Parametrarna StartIndex och Count definierar teckensegmentet som ska mätas. Ett typiskt användningssätt är att skicka matchningsindexet som returneras av FindFirst eller FindNext som StartIndex, och söksträngens längd som Count, för att få fram markeringsrektanglar för ett sökresultat

De returnerade rektanglarna lagras i en intern buffert och förblir giltiga till nästa anrop till RectangleCount. Hämta varje rektangel genom att läsa egenskapen Rectangle[Index] för Index i intervallet 0 till RectangleCount - 1. Alla koordinater anges i PDF-användarkoordinater (punkter, origo i nedre vänstra hörnet)

Använd CharacterCount för ett rent antal av alla tecken på sidan; använd CharacterIndexAtPos för att ta reda på var ett visst tecken ligger på sidan

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