PDFium Component Docs

SetTextPositions Methode

Component: TPdf  ·  Unit: PDFium
Stelt per-tekenposities in voor het opgegeven tekstobject De eerste tekenpositie wordt impliciet als 0 aangenomen; Positions[0] zet de tweede tekenpositie, Positions[1] de derde, en zo verder Waarden zijn in punten en relatief ten opzichte van de oorsprong van het tekstobject

Syntax

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

ObjectIndexInteger. Zero-based index van het tekstobject waarvan de tekenposities worden ingesteld (0 tot ObjectCount - 1)
PositionsTPdfSingleArray. Array met offsets per teken in punten, relatief aan de oorsprong van het tekstobject. Positions[0] stelt de positie van het tweede teken in, Positions[1] het derde, enzovoort. Het eerste teken staat altijd op positie 0

Description

SetTextPositions overschrijft de standaardtekenspatiëring van een tekstobject door voor elk teken een expliciete horizontale offset mee te geven. Daarmee regelt u fijnmazige kerning, justification van tekstlayout of een exacte reproductie van de tekenplaatsing uit een bestaande PDF

De array Positions bevat één invoer per tussenruimte tussen tekens, beginnend bij de ruimte tussen het eerste en het tweede teken. Concreet: Positions[0] is de positie van het tweede teken, Positions[1] die van het derde, enzovoort — allemaal gemeten in punten vanaf de oorsprong van het tekstobject langs de tekstbaseline. Het eerste teken staat altijd op offset 0. De arraylengte hoort één minder te zijn dan het aantal tekens in het tekstobject; overtollige invoeren worden genegeerd en ontbrekende invoeren laten de bijbehorende tekens op hun standaardpositie staan

Deze methode wordt doorgaans samen met SetText gebruikt bij het reconstrueren of bewerken van tekstobjecten waarvan de oorspronkelijke tekenspatiëring exact behouden moet blijven

Example

// Voeg tekst toe en pas daarna eigen per-tekenposities toe
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