PDFium Delphi Component Docs

SetTextPositions Methode

Komponente: TPdf  ·  Unit: PDFium
Setzt Zeichenpositionen für das angegebene Textobjekt. Die Position des ersten Zeichens ist implizit 0; Positions[0] setzt die Position des zweiten Zeichens, Positions[1] die des dritten und so weiter. Die Werte sind in Points und relativ zum Ursprung des Textobjekts

Syntax

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

ObjectIndexInteger. Nullbasierter Index des Textobjekts, dessen Zeichenpositionen gesetzt werden sollen (0 bis ObjectCount - 1)
PositionsTPdfSingleArray. Array aus Zeichenoffsets in Points, relativ zum Ursprung des Textobjekts. Positions[0] setzt die Position des zweiten Zeichens, Positions[1] die des dritten und so weiter. Das erste Zeichen liegt stets an Position 0

Beschreibung

SetTextPositions überschreibt die Standardzeichenabstände eines Textobjekts, indem es für jedes Zeichen einen expliziten horizontalen Versatz bereitstellt. Dies ermöglicht feinkörnige Kerning-Kontrolle, Blocksatz-Layout oder die Reproduktion der exakten Zeichenplatzierung eines vorhandenen PDF

Das Positions-Array enthält einen Eintrag pro Zeichenzwischenraum, beginnend mit dem Zwischenraum zwischen dem ersten und zweiten Zeichen. Konkret ist Positions[0] die Position des zweiten Zeichens, Positions[1] die Position des dritten Zeichens und so weiter — alles gemessen in Points vom Ursprung des Textobjekts entlang der Text-Grundlinie. Das erste Zeichen liegt stets 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üngliche Zeichenabstände exakt bewahrt werden müssen

Beispiel

// Text hinzufügen, dann eigene 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;

Siehe auch

SetText, ObjectCount