PDFium Delphi Component 文件

SetTextPositions 方法

元件: TPdf  ·  單元: PDFium
為指定的文字物件設定逐字元位置。第一個字元的位置預設為 0,Positions[0] 會設定第二個字元的位置,Positions[1] 會設定第三個,依此類推。數值以 point 為單位,並以文字物件原點為基準

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