PDFium Delphi Component Docs

SetTextPositions 메서드

컴포넌트: TPdf  ·  유닛: PDFium
지정한 텍스트 object의 문자별 위치를 설정합니다. 첫 번째 문자 위치는 0으로 간주되며, Positions[0]은 두 번째 문자 위치를, Positions[1]은 세 번째 위치를, 이런 식으로 이어집니다. 값은 point 단위이며 텍스트 object의 원점을 기준으로 합니다

Syntax

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

ObjectIndexInteger. 문자 위치를 설정할 텍스트 객체의 0 기반 인덱스입니다(0부터 ObjectCount - 1까지)
PositionsTPdfSingleArray. 텍스트 객체 원점 기준 문자별 오프셋 배열(포인트 단위)입니다. Positions[0]이 두 번째 문자의 위치를, Positions[1]이 세 번째 문자의 위치를 정하는 식입니다. 첫 번째 문자는 항상 위치 0에 있습니다

Description

SetTextPositions는 각 문자의 수평 오프셋을 명시적으로 공급해 텍스트 객체의 기본 자간을 대체합니다. 이를 통해 세밀한 커닝 제어, 양쪽 정렬 텍스트 조판, 기존 PDF에 기록된 정확한 문자 배치의 재현이 가능합니다

Positions 배열에는 첫 번째와 두 번째 문자 사이 간격부터 시작해 문자 사이 간격마다 항목 하나씩 들어갑니다. 구체적으로 Positions[0]이 두 번째 문자의 위치, Positions[1]이 세 번째 문자의 위치이며, 전부 텍스트 객체 원점에서 텍스트 베이스라인을 따라 포인트 단위로 잽니다. 첫 번째 문자는 항상 오프셋 0에 놓입니다. 배열 길이는 텍스트 객체의 문자 수보다 하나 적어야 하고, 남는 항목은 무시되며 모자란 항목에 해당하는 문자는 기본 위치에 남습니다

원본 자간을 정확히 보존해야 하는 텍스트 객체를 재구성하거나 편집할 때 이 메서드를 보통 SetText와 함께 씁니다

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