procedure SetTextPositions(ObjectIndex: Integer; const Positions: TPdfSingleArray);
| ObjectIndex | Integer。要设置其字符位置的文本对象的基于 0 的索引(0 到 ObjectCount - 1) |
| Positions | TPdfSingleArray。以点计的逐字符偏移数组,相对于文本对象原点。Positions[0] 设置第二个字符的位置,Positions[1] 第三个,依此类推。第一个字符始终在位置 0 |
SetTextPositions 通过为每个字符提供显式水平偏移来覆盖文本对象的默认字符间距。这实现了细粒度字距控制、两端对齐文本布局,或重现现有 PDF 中的精确字符放置
Positions 数组为每个字符间间隙包含一个条目,从第一个和第二个字符之间的间隙开始。具体来说,Positions[0] 是第二个字符的位置,Positions[1] 是第三个字符的位置,依此类推 — 全部从文本对象原点沿文本基线以点计。第一个字符始终放置在偏移 0。数组长度应比文本对象中的字符数少一;多余的条目被忽略,缺失的条目使相应字符保留在其默认位置
此方法通常与 SetText 一起使用,用于重建或编辑必须精确保留原始字符间距的文本对象
// 添加文本,然后应用自定义逐字符位置
Pdf1.NewPage(595, 842);
Pdf1.AddText('HELLO', 'Arial', 24, 72, 700);
var
Idx: Integer;
Pos: TPdfSingleArray;
begin
Idx := Pdf1.ObjectCount - 1;
// 'H' 在 0(隐式),'E' 在 20,'L' 在 38,'L' 在 56,'O' 在 74
SetLength(Pos, 4);
Pos[0] := 20; Pos[1] := 38; Pos[2] := 56; Pos[3] := 74;
Pdf1.SetTextPositions(Idx, Pos);
end;