Positions[0] setzt die Position des zweiten Zeichens, Positions[1] die des dritten und so weiter. Werte sind in Punkten angegeben und relativ zum Ursprung des Textobjektsprocedure SetTextPositions(ObjectIndex: Integer; const Positions: TPdfSingleArray);
| ObjectIndex | Integer. Nullbasierter Index des Textobjekts, dessen Zeichenpositionen gesetzt werden sollen (0 bis ObjectCount - 1) |
| Positions | TPdfSingleArray. Array of per-character offsets in points, relative to the text object origin. Positions[0] sets the position of the second character, Positions[1] the third, and so on. The first character is always at position 0. |
SetTextPositions überschreibt den Standard-Zeichenabstand eines Textobjekts, indem für jedes Zeichen ein expliziter horizontaler Versatz angegeben wird. Das ermöglicht fein abgestimmte Kerning-Steuerung, eine ausgerichtete Textanordnung oder die exakte Reproduktion der Zeichenplatzierung in einer vorhandenen PDF
Das Positions-Array enthält einen Eintrag pro Abstand zwischen zwei Zeichen, beginnend mit dem Abstand zwischen dem ersten und dem zweiten Zeichen. Genauer gesagt ist Positions[0] die Position des zweiten Zeichens, Positions[1] die Position des dritten Zeichens und so weiter — alles in Punkten vom Ursprung des Textobjekts entlang der Textgrundlinie gemessen. Das erste Zeichen steht immer bei Versatz 0. Die Array-Länge sollte um eins kleiner sein als die Anzahl der Zeichen im Textobjekt; überzählige Einträge werden ignoriert und fehlende Einträge lassen die entsprechenden Zeichen an ihren Standardpositionen
Diese Methode wird typischerweise zusammen mit SetText verwendet, wenn Textobjekte rekonstruiert oder bearbeitet werden, deren ursprünglicher Zeichenabstand exakt erhalten bleiben muss
// Text hinzufügen und dann benutzerdefinierte Zeichenpositionen anwenden
Pdf1.NewPage(595, 842);
Pdf1.AddText('HELLO', 'Arial', 24, 72, 700);
var
Idx: Integer;
Pos: TPdfSingleArray;
begin
Idx := Pdf1.ObjectCount - 1;
// 'H' bei 0 (implizit), 'E' bei 20, 'L' bei 38, 'L' bei 56, 'O' bei 74
SetLength(Pos, 4);
Pos[0] := 20; Pos[1] := 38; Pos[2] := 56; Pos[3] := 74;
Pdf1.SetTextPositions(Idx, Pos);
end;