PDFium Delphi Component Docs

SetTextPositions Метод

Компонент: TPdf  ·  Модуль: PDFium
Устанавливает позиции по символам для указанного текстового объекта. Позиция первого символа подразумевается равной 0; Positions[0] задает позицию второго символа, Positions[1] задает позицию третьего и так далее. Значения задаются в пунктах относительно начала текстового объекта

Syntax

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

ObjectIndexInteger. Индекс текстового объекта с отсчётом от нуля, для которого задаются позиции символов (от 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