PDFium Component Docs

SetTextPositions Metoda

Component: TPdf  ·  Unit: 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

Syntax

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

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

Description

SetTextPositions nadpisuje domyślne odstępy znaków obiektu tekstowego, dostarczając jawne przesunięcie poziome dla każdego znaku. Umożliwia to precyzyjną kontrolę kerningu, układ tekstu justowanego albo odtworzenie dokładnego rozmieszczenia znaków spotykanego w istniejącym PDF-ie

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

Metody tej używa się typowo razem z SetText przy rekonstrukcji lub edycji obiektów tekstowych, których pierwotne odstępy znaków muszą zostać dokładnie zachowane

Example

// 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;

See Also

SetText, ObjectCount