Мельница данных- Создание шаблонов PDF-отчетов (раздел целиком) (09.12.2023) | (одним файлом) |
Создание шаблонов PDF-отчетов |
1. Описание | ||||
Portable Document Format (PDF) — кроссплатформенный формат электронных документов, созданный фирмой Adobe Systems с использованием ряда возможностей языка PostScript. В первую очередь предназначен для представления в электронном виде полиграфической продукции, — значительное количество современного профессионального печатного оборудования может обрабатывать PDF непосредственно. Для просмотра можно использовать официальную бесплатную программу Adobe Reader, а также программы сторонних разработчиков. Традиционным способом создания PDF-документов является виртуальный принтер, то есть документ как таковой готовится в своей специализированной программе — графической программе или текстовом редакторе, САПР и т. д., а затем экспортируется в формат PDF для распространения в электронном виде, передачи в типографию и т. п. Формат PDF позволяет внедрять необходимые шрифты (построчный текст), векторные и растровые изображения, формы и мультимедиа-вставки. Поддерживает RGB, CMYK, Grayscale, Lab, Duotone, Bitmap, несколько типов сжатия растровой информации. Имеет собственные технические форматы для полиграфии: PDF/X-1, PDF/X-3. Включает механизм электронных подписей для защиты и проверки подлинности документов. В этом формате распространяется большое количество сопутствующей документации. Чаще всего PDF-файл является комбинацией текста с растровой и векторной графикой, реже — текста с формами, JavaScript'ом, 3D-графикой и другими типами элементов. В приложениях Платформы "Мельница данных" для создания PDF-документов используется собственная библиотека PDFCreator.dll. С помощью библиотеки возможно прямое создание документов версии 1.3 . Создание PDF-документов осуществляется путем ввода предопределенных в библиотеке команд, которые в дальнейшем интерпретируются на основе языка описания страниц POSTSCRIPT.
![]() |
2. Методы |
2.1. Свойства документа | ||||||||||
Для создания и описания свойств PDF-документа в библиотеке PDFCreator.dll используется класс IPDFDocument, обладающий следующими свойствами:
|
2.2. Свойства страницы | ||||||||
Для создания страницы используется функция function CreatePage(Parent: OleVariant): IPDFPage; Параметр Parent указывает страницу-родителя для данной страницы. Если страницы- родителя быть не должно - формат вызова функции примет вид: set page = CreatePage(Null)Параметры страницы:
|
2.2.1. Объявление цвета | |||||||||||||||||||||||||||||||||||||||
Для объявления цвета объектов на странице используется цветовая модель R:G:B (Red:Green:Blue). Объявление цвета для выполнения последующих операций (цвет шрифта, цвет линии/фигуры) осуществляется процедурой procedure SetColor(R: Integer; G: Integer; B: Integer);Где параметры R, G, B - значения базисных цветов для выбранного цвета (от 0 до 255).
|
2.3. Графика |
2.3.1. Линии | ||||||||||||||||||||||||||||||||
Для отрисовки линий используется процедура procedure Line(X1: Double; Y1: Double; X2: Double; Y2: Double);Здесь:
Для задания толщины линии используется свойство property LineWidth: DoubleЗначение толщины задается в миллиметрах. Значение по умолчанию - минимально возможная единица рисования для устройства. Так для монитора - 1 pixel, для принтера - 1 dot (точка) Для задания стиля отрисовки начала/окончания линии используется свойство property LineCap: TPDFLineCap
Объявление цвета линии.
При необходимости соединения линий под углом в определенной точке можно задать тип соединения. Для объявления типа соединения используется свойство property LineJoin: TPDFLineJoin;
Пунктир Для создания пунктира используется процедура отображения линии с предварительно объявленными дополнительными значениями. Процедура procedure SetDash(DashArray: OleVariant; Phase: Integer); Здесь DashArray - массив значений в миллиметрах, указывающий последовательность чередования штрихов и пропусков на линии, Phase - смещение в миллиметрах по линии.
Ломанная линия - здесь непрерывная линия, состоящая из нескольких прямых. Для отображения ломанной используется процедура procedure Poly(Points: OleVariant; Fill: WordBool), где Points - массив координат точек соединяемых прямыми, а Fill - признак заливки полученной замкнутой фигуры (если замкнута).
|
2.3.2. Прямоугольник | ||||||||||||||||
Rectangle (Прямоугольник) - для создания используется процедура: procedure Rectangle(X1: Double; Y1: Double; Width: Double; Height: Double; Fill: WordBool);Здесь:
Также существует возможность изменения стиля отображения углов прямоугольника. Для этого нужно использовать свойство property LineJoin: TPDFLineJoin;
Пример построения прямоугольников с различными типами соединения сторон:
|
2.3.3. Вставка готовых изображений | ||
Для вставки на создаваемую страницу готового изображения используется процедура procedure Image(const FileName: WideString; X: Double; Y: Double; Width: Double; Height: Double) Параметры:
Вне зависимости от размера исходного изображения, при вставке изображения на создаваемую страницу оно будет растянуто по размерам, прописанным в процедуре. |
2.3.4. Векторная графика |
Язык PostScript, с помощью которого создаются векторные изображения для PDF-документа, поддерживает создание типичных примитивных объектов, таких как:
При создании векторного изображения на странице PDF-документа в приложениях Платформы, команды построения примитивных объектов PostScript передаются на исполнение при помощи процедуры Perform. Подробнее об операторах и командах PostScript для создания PDF-документов можно узнать на сайте Adobe |
2.4. Шрифты | |||||||||||||||||||||||||||||||||||||||||||||
Шрифты, которые должны использоваться в создаваемом документе, должны быть предварительно объявлены. Для объявления используемых шрифтов используется функция
Для вывода текстовой информации на страницу используются процедуры:
Параметры для procedure WriteLine :
Параметры для function WriteText :
Свойства шрифтов: property Spacing: Double; - свойство, отвечающее за величину промежутка между буквами в слове. Задается в виде отклонения от промежутка между буквами по умолчанию для выбранного шрифта по горизонтальной оси в миллиметрах. Значение свойства равное "0" соответствует значению по умолчанию.
property WordSpacing: Double; - свойство, отвечающее за величину промежутка между соседними словами. Задается в виде отклонения от промежутка между словами по умолчанию для выбранного шрифта по горизонтальной оси в миллиметрах. Значение свойства равное "0" соответствует значению по умолчанию.
property Scaling: Double; - свойство, отвечающее за горизонтальное масштабирование букв используемого шрифта. Устанавливается в процентах. Горизонтальный масштаб по умолчанию - 100%.
property RenderingMode: TPDFFontRenderingMode; - свойство, отвечающее за заливку букв используемого шрифта.
property Rise: Double; - свойство, отвечающее за перемещение текста по вертикали.
Для определения размеров текстовой строки используется процедура MeasureLine(const LineText: WideString; out Width: OleVariant; out Height: OleVariant); Здесь:
Для определения высоты текстового блока используется функция MeasureText(const AText: WideString; Width: Double): Double; safecall; Функция распределит текст по задаваемому значению ширины текстового блока и вернет значение высоты текстового блока в милиметрах. Здесь:
|
3. Порядок создания | ||
Для создания шаблона PDF-документа необходимо в системной форме Платформы выбрать класс, к которому будет строиться документ. В подменю "Подпрограммы" вызвать контекстное меню и выбрать пункт "Создать шаблон отчета PDF". Заполнить необходимые поля и приступить к созданию скрипта в окне "Скрипт шаблона". ![]()
Результат: ![]() |