PDFium Component Docs

SetTextPositions Metoda

Ten wpis API zachowuje identyfikatory, sygnatury, bloki kodu i terminy PDF w oryginalnej postaci.
Komponent: TPdf  ·  Moduł: PDFium
Ustawia pozycje poszczególnych znaków dla określonego obiektu tekstowego Pierwsza pozycja znaku jest domyślnie równa 0; Positions[0] ustawia pozycję drugiego znaku, Positions[1] trzeciego i tak dalej Wartości są podawane w punktach i względem początku obiektu tekstowego

Składnia

procedure SetTextPositions(ObjectIndex: Integer; const Positions: TPdfSingleArray);

ObjectIndexInteger. Zero-based indeks obiektu tekstowego, którego pozycje znaków mają zostać ustawione (0 do ObjectCount - 1)
PositionsTPdfSingleArray. Tablica przesunięć znaków w punktach względem początku obiektu tekstowego Positions[0] ustawia pozycję drugiego znaku, Positions[1] trzeciego i tak dalej Pierwszy znak zawsze ma pozycję 0

Opis

SetTextPositions nadpisuje domyślne odstępy znaków obiektu tekstowego, podając jawne poziome przesunięcie dla każdego znaku Umożliwia to precyzyjną kontrolę kerningu, wyrównany układ tekstu albo odtworzenie dokładnego rozmieszczenia znaków z istniejącego PDF

Tablica Positions zawiera jeden wpis na każdą przerwę między znakami, zaczynając od przerwy między pierwszym a drugim znakiem Dokładniej, Positions[0] to pozycja drugiego znaku, Positions[1] pozycja trzeciego i tak dalej — wszystko mierzone w punktach od początku obiektu tekstowego wzdłuż linii bazowej tekstu Pierwszy znak zawsze ma przesunięcie 0 Długość tablicy powinna być o jeden mniejsza niż liczba znaków w obiekcie tekstowym; nadmiarowe wpisy są ignorowane, a brakujące pozostawiają odpowiednie znaki na pozycjach domyślnych

Metody tej zwykle używa się razem z SetText podczas odtwarzania albo edycji obiektów tekstowych, których oryginalne odstępy między znakami muszą zostać zachowane dokładnie

Przykład

// Add text, then apply custom per-character positions
Pdf1.NewPage(595, 842);
Pdf1.AddText('HELLO', 'Arial', 24, 72, 700);

var
  Idx: Integer;
  Pos: TPdfSingleArray;
begin
  Idx := Pdf1.ObjectCount - 1;
  // 'H' at 0 (implicit), 'E' at 20, 'L' at 38, 'L' at 56, 'O' at 74
  SetLength(Pos, 4);
  Pos[0] := 20; Pos[1] := 38; Pos[2] := 56; Pos[3] := 74;
  Pdf1.SetTextPositions(Idx, Pos);
end;

Zobacz też

SetText, ObjectCount