PDFium Delphi Component Docs

SetTextPositions Metodo

Componente: TPdf  ·  Unità: PDFium
Imposta le posizioni per carattere per l'oggetto testo specificato. La posizione del primo carattere è implicita come 0; Positions[0] imposta la posizione del secondo carattere, Positions[1] quella del terzo e così via. I valori sono espressi in punti e relativi all'origine dell'oggetto testo

Syntax

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

ObjectIndexInteger. Indice a base zero dell'oggetto testo di cui impostare le posizioni dei caratteri (da 0 a ObjectCount - 1)
PositionsTPdfSingleArray. Array di offset per carattere in punti, relativi all'origine dell'oggetto testo. Positions[0] imposta la posizione del secondo carattere, Positions[1] quella del terzo e così via. Il primo carattere sta sempre a posizione 0

Description

SetTextPositions sostituisce la spaziatura dei caratteri predefinita di un oggetto testo fornendo un offset orizzontale esplicito per ogni carattere. Ciò consente un controllo fine del kerning, il layout del testo giustificato o la riproduzione dell'esatta posizione dei caratteri trovata in un PDF esistente.

L'array Positions contiene una voce per ogni spazio tra caratteri, a partire dallo spazio tra il primo e il secondo carattere. In particolare, Positions[0] è la posizione del secondo carattere, Positions[1] è la posizione del terzo carattere e così via — tutti misurati in punti dall'origine dell'oggetto testo lungo la linea di base del testo. Il primo carattere è sempre posizionato all'offset 0. La lunghezza dell'array dovrebbe essere di un'unità inferiore al numero di caratteri dell'oggetto testo; le voci in eccesso vengono ignorate e le voci mancanti lasciano i caratteri corrispondenti alle loro posizioni predefinite.

Questo metodo è in genere usato insieme a SetText quando si ricostruiscono o modificano oggetti testo la cui spaziatura originale dei caratteri deve essere preservata esattamente.

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