PDFium Component Docs

SetTextPositions Methode

Deze API-entry behoudt identifiers, signatures, codeblokken en PDF-termen in hun oorspronkelijke vorm.
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

Syntaxis

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

ObjectIndexInteger. Op 0 gebaseerde index van het tekstobject waarvan de tekenposities moeten worden ingesteld (0 tot ObjectCount - 1)
PositionsTPdfSingleArray. Matrix met per-tekenafstanden in punten, relatief ten opzichte van de oorsprong van het tekstobject. Positions[0] zet de positie van het tweede teken, Positions[1] die van het derde, en zo verder. Het eerste teken staat altijd op positie 0

Beschrijving

SetTextPositions overschrijft de standaard tekenafstand van een tekstobject door voor elk teken een expliciete horizontale verschuiving op te geven. Dit maakt fijnmazige kerningregeling, uitgelijnde tekstopmaak of het exact reproduceren van de tekenplaatsing in een bestaande PDF mogelijk

De Positions-matrix bevat één item per tussenruimte tussen tekens, te beginnen bij de ruimte tussen het eerste en tweede teken. Concreet is Positions[0] de positie van het tweede teken, Positions[1] die van het derde teken, en zo verder, allemaal gemeten in punten vanaf de oorsprong van het tekstobject langs de tekstbasislijn. Het eerste teken staat altijd op verschuiving 0. De matrixlengte hoort één kleiner te zijn dan het aantal tekens in het tekstobject; extra items worden genegeerd en ontbrekende items laten de overeenkomstige tekens op hun standaardpositie staan

Deze methode wordt meestal samen met SetText gebruikt bij het opnieuw opbouwen of bewerken van tekstobjecten waarvan de oorspronkelijke tekenafstand exact behouden moet blijven

Voorbeeld

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

Zie ook

SetText, ObjectCount