PDFium Delphi Component Docs

SetTextPositions Metod

Component: TPdf  ·  Unit: PDFium
Ställer in positioner per tecken för det angivna textobjektet. Den första teckenpositionen antas vara 0; Positions[0] sätter den andra teckenpositionen, Positions[1] sätter den tredje och så vidare. Värdena anges i punkter och relativt textobjektets origo

Syntax

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

ObjectIndexInteger. Nollbaserat index för textobjektet vars teckenpositioner ska ställas in (0 till ObjectCount - 1)
PositionsTPdfSingleArray. Array med förskjutningar per tecken i punkter, relativt textobjektets origo. Positions[0] ställer in positionen för det andra tecknet, Positions[1] för det tredje och så vidare. Det första tecknet ligger alltid på position 0

Description

SetTextPositions åsidosätter ett textobjekts standardteckenavstånd genom att ange en explicit horisontell förskjutning för varje tecken. Detta möjliggör finkornig kerning-kontroll, marginalutjämnad textlayout eller återgivning av den exakta teckenplacering som finns i en befintlig PDF

Arrayen Positions innehåller en post per mellanrum mellan tecknen, med start från mellanrummet mellan det första och det andra tecknet. Konkret är Positions[0] positionen för det andra tecknet, Positions[1] positionen för det tredje tecknet och så vidare — samtliga mätta i punkter från textobjektets origo längs textbaslinjen. Det första tecknet placeras alltid vid förskjutningen 0. Arrayens längd ska vara en mindre än antalet tecken i textobjektet; överskjutande poster ignoreras och saknade poster lämnar motsvarande tecken på sina standardpositioner

Metoden används typiskt tillsammans med SetText när textobjekt vars ursprungliga teckenavstånd måste bevaras exakt rekonstrueras eller redigeras

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