THPDFPage.ExtTextOut

THPDFPage

 

顶部  上一页  下一页

带每字形水平位移数组的精确文本输出方法(GDI ExtTextOut Dx 语义,v2.215.0)

 

Delphi 语法:

procedure ExtTextOut ( X, Y: Single; angle: Extended; Text: PWORD; TextLength: Integer; const Dx: array of Single ); overload;

procedure ExtTextOut ( X, Y: Single; angle: Extended; Text: WideString; const Dx: array of Single ); overload;

procedure ExtTextOut ( X, Y: Single; angle: Extended; Text: AnsiString; const Dx: array of Single ); overload;

 

说明

 

ExtTextOut 是带每字形位移数组的精确文本输出方法,采用与 Windows GDI ExtTextOut 相同的 Dx 语义:Dx[i] 为 PDF 用户空间(点,与 X/Y 单位相同)中字形 i 的原点到字形 i+1 原点的水平距离。Length(Dx) 必须等于文本的字形数;当某个 Dx 值等于字形的自然步进量时,对应的 TJ 调整为 0,因此可以在同一次调用中混合自然步进和覆盖步进的字形

 

内部通过单个 TJ 数组实现,适合表格数字对齐、手动字间距、两端对齐、表单字段填充和签名块布局等场景。仅支持简单的从左到右文本 —— RTL 双向重排序和生产端整形(Indic / 阿拉伯语 / 连字)均被绕过,调用方须负责按逻辑顺序传入已整形字形

 

参数

 

Tên说明
X, Y文本起始坐标(用户空间单位)
angle文本旋转角度(度,0 = 水平)
Text输出文本(PWORD 重载需同时传入 TextLength;WideString 重载为便利入口;AnsiString 重载先多字节转换)
Dx每字形水平步进数组(用户空间单位);长度必须与文本字形数相等

 

代码示例

// 以固定 15pt 步进输出 "ABC"(三个字形,三个 Dx 值)
var
  DxArr: array[0..2] of Single;
begin
  DxArr[0] := 15;  // A → B 步进 15pt
  DxArr[1] := 15;  // B → C 步进 15pt
  DxArr[2] := 15;  // C 之后步进(末位仍需提供)
  HPDF.CurrentPage.ExtTextOut(50, 100, 0, WideString('ABC'), DxArr);
end;

另请参阅: TextOut GetWideCharAdvances GetWideTextWidth