Мельница данных  (12.10.2024)
Шрифты

Шрифты, которые должны использоваться в создаваемом документе, должны быть предварительно объявлены. Для объявления используемых шрифтов используется функция
function CreateFont(const FontName: WideString; Size: Double; Bold: WordBool; Italic: WordBool): IPDFFont; где:

  • const FontName - имя шрифта, аналогичное имени объявляемого шрифта в операционной системе. В Функции объявляется в кавычках.
  • Size - размер шрифта в пунктах
  • Bold - признак начертания шрифта "жирный". Значения - True или False
  • Italic - признак начертания шрифта "курсив". Значения - True или False
Пример
Примеры объявления шрифтов:
1set font = page.createFont("Arial", 20, False, False)
2set labelFont = page.createFont("Times New Roman", 16, False, True)
3set dataFont = page.createFont("Tahoma", 18, True, False)
  

Для вывода текстовой информации на страницу используются процедуры:

  • procedure WriteLine(const LineText: WideString; X: Double; Y: Double);
    - используется для вывода текстовой строки
  • function WriteText(const AText: WideString; X: Double; Y: Double; Width: Double; Alignment: TPDFTextAlignment): Double;
    - используется для вывода текстового блока.

Параметры для procedure WriteLine :

  • const LineText - текстовая строка для вывода. Прописывается в кавычках. Будет выведена на страницу одной строкой.
  • X - координата верхней левой точки текстовой строки по горизонтали в миллиметрах.
  • Y - координата верхней левой точки текстовой строки по вертикали в миллиметрах.
Пример
Примеры вывода текстов на страницу:
01set page = CreatePage(Null)
02page.DrawGrid
03set font = page.createFont("Arial", 20, False, False)
04set labelFont = page.createFont("Times New Roman", 16, False, True)
05set dataFont = page.createFont("Tahoma", 18, True, False)
06Font.WriteLine "Фамилия", 5, 2
07Font.WriteLine "Имя", 5, 10
08Font.WriteLine "Отчество", 5, 18
09labelFont.WriteLine "Дата рождения", 5, 26
10dataFont.WriteLine "Национальность", 5, 34
  

Результат:
Разные шрифты

Параметры для function WriteText :

  • const AText - текст для вывода на страницу. Прописывается в кавычках. Будет выведена на страницу в виде текстового блока.
  • X - координата верхней левой точки текстового блока по горизонтали в миллиметрах.
  • Y - координата верхней левой точки текстового блока по вертикали в миллиметрах.
  • Width - ширина текстового блока в миллиметрах
  • Alignment - тип выравнивания текста в текстовом блоке.
    Значение параметраТип выравнивания
    0 По левому краю
    1 По правому краю
    2 По центру
    3 Выравнивание по ширине
Пример
Примеры вывода текстовых блоков на страницу:
1set page = CreatePage(Null)
2page.DrawGrid
3set font = page.createFont("Arial", 14, False, False)
4set labelFont = page.createFont("Times New Roman", 12, False, True)
5set dataFont = page.createFont("Tahoma", 11, True, False)
6Q = font.WriteText ("Тест работы свойства для выравнивания текста в текстовом блоке для документа PDF, создаваемого на Платформе Мельница Данных", 5, 5, 100, 0)
7Q = labelFont.WriteText ("Тест работы свойства для выравнивания текста в текстовом блоке для документа PDF, создаваемого на Платформе Мельница Данных", 5, 35, 100, 1)
8Q = dataFont.WriteText ("Тест работы свойства для выравнивания текста в текстовом блоке для документа PDF, создаваемого на Платформе Мельница Данных", 5, 55, 100, 2)
9Q = dataFont.WriteText ("Тест работы свойства для выравнивания текста в текстовом блоке для документа PDF, создаваемого на Платформе Мельница Данных", 5, 80, 100, 3)
  

Результат:
Выравнивание

Свойства шрифтов:

property Spacing: Double; - свойство, отвечающее за величину промежутка между буквами в слове. Задается в виде отклонения от промежутка между буквами по умолчанию для выбранного шрифта по горизонтальной оси в миллиметрах. Значение свойства равное "0" соответствует значению по умолчанию.

Пример
Пример:
01set page = CreatePage(Null)
02page.DrawGrid
03set font = page.createFont("Arial", 14, False, False)
04set labelFont = page.createFont("Arial", 14, False, False)
05set dataFont = page.createFont("Arial", 14, False, False)
06font.Spacing = 0
07labelFont.Spacing = 1
08dataFont.Spacing = 2
09font.WriteLine "Промежуток по умолчанию (0)", 5, 5
10labelFont.WriteLine "Промежуток с отклонением (1 мм)", 5, 10
11dataFont.WriteLine "Промежуток с отклонением (2 мм)", 5, 15
  

Результат:
Промежуток букв

property WordSpacing: Double; - свойство, отвечающее за величину промежутка между соседними словами. Задается в виде отклонения от промежутка между словами по умолчанию для выбранного шрифта по горизонтальной оси в миллиметрах. Значение свойства равное "0" соответствует значению по умолчанию.

Пример
Пример:
01set page = CreatePage(Null)
02page.DrawGrid
03set font = page.createFont("Arial", 14, False, False)
04set labelFont = page.createFont("Arial", 14, False, False)
05set dataFont = page.createFont("Arial", 14, False, False)
06font.WordSpacing = 0
07labelFont.WordSpacing = 2
08dataFont.WordSpacing = 5
09font.WriteLine "Промежуток по умолчанию (0)", 5, 5
10labelFont.WriteLine "Промежуток с отклонением (2 мм)", 5, 10
11dataFont.WriteLine "Промежуток с отклонением (5 мм)", 5, 15
  

Результат:
Промежуток слов

property Scaling: Double; - свойство, отвечающее за горизонтальное масштабирование букв используемого шрифта. Устанавливается в процентах. Горизонтальный масштаб по умолчанию - 100%.

Пример
Пример:
01set page = CreatePage(Null)
02page.DrawGrid
03set font = page.createFont("Arial", 14, False, False)
04set labelFont = page.createFont("Arial", 14, False, False)
05set dataFont = page.createFont("Arial", 14, False, False)
06font.Scaling = 50
07labelFont.Scaling = 100
08dataFont.Scaling = 200
09font.WriteLine "Сжатие (50)", 5, 5
10labelFont.WriteLine "По умолчанию (100)", 5, 10
11dataFont.WriteLine "Растягивание (150)", 5, 15
  

Результат:
Scaling

property RenderingMode: TPDFFontRenderingMode; - свойство, отвечающее за заливку букв используемого шрифта.
Типы заливки:
Значение параметра:Отображение:Описание:
0 Font Fill Сплошная заливка (по умолчанию). Буква заливается сплошным цветом,
объявленным на данный момент.
1 Font Stroke Только граница. Прорисовывается граница буквы. Тело остается незалитым.
2 Font FillStroke Сначала заливка, потом граница. Граница прорисовывается всегда черным цветом.
Заливка осуществляется сплошным цветом, объявленным на данный момент.
3 Inv Невидимый шрифт.

Пример
Пример:
01set page = CreatePage(Null)
02set font = page.createFont("Arial", 20, False, False)
03set labelFont = page.createFont("Arial", 20, False, False)
04set dataFont = page.createFont("Arial", 20, False, False)
05font.RenderingMode = 0
06labelFont.RenderingMode = 1
07dataFont.RenderingMode = 2
08page.setColor 255, 0, 0
09Q = font.WriteText ("Олимпиада", 5, 5, 50, 0)
10Q = labelFont.WriteText ("Олимпиада", 5, 15, 50, 0)
11Q = dataFont.WriteText ("Олимпиада", 5, 25, 50, 0)
  

Результат:
Заливка букв

property Rise: Double; - свойство, отвечающее за перемещение текста по вертикали.

Пример
01set page = CreatePage(Null)
02page.DrawGrid
03set font = page.createFont("Arial", 20, False, False)
04set labelFont = page.createFont("Arial", 7, False, False)
05set dataFont = page.createFont("Arial", 7, False, False)
06labelFont.rise = -17
07dataFont.rise = -2
08Q = font.WriteText ("Олимпиада", 5, 5, 50, 0)
09Q = labelFont.WriteText ("Олимпиада", 44, 5, 50, 0)
10Q = dataFont.WriteText ("Олимпиада", 44, 5, 50, 0)
  

Результат:
Rise

Для определения размеров текстовой строки используется процедура MeasureLine(const LineText: WideString; out Width: OleVariant; out Height: OleVariant);

Здесь:

  • LineText - исходный текст для размещения на странице
  • Width - возвращаемый параметр ширины текстового блока на странице
  • Height - возвращаемый параметр высоты текстового блока на странице
Пример
1S = "шифр"
2font.MeasureLine S, W, H
3Q = font.WriteText(S, 139, 244 + ((23 - H) / 2), 40, 2)
  


Здесь для текста "Шифр" замеряется ширина и высота получившегося текстового блока. Затем полученные данные используются для корректного размещения текста на странице.

Для определения высоты текстового блока используется функция MeasureText(const AText: WideString; Width: Double): Double; safecall;

Функция распределит текст по задаваемому значению ширины текстового блока и вернет значение высоты текстового блока в милиметрах.

Здесь:

  • AText - исходный текст для размещения на странице. Прописывается в кавычках.
  • Width - задаваемая ширина текстового блока на странице в милиметрах.
Пример
1S = "Текст для размещения на странице..."
2Q = font.MeasureText(S, 139)
  
Здесь для текста "Текст для размещения на странице..." замеряется высота получившегося текстового блока. Затем полученные данные могут использоваться для корректного размещения текста на странице.