В этой статье, рассмотрим, как создавать свои pdf-документы, а в следующей статье рассмотрим, как можно просматривать pdf-документы в своих проектах, а также печатать содержимое, перемещаться по документу и так далее.
Для этого нам понадобятся компоненты с вкладки Rave. Давайте же установим, необходимые нам, для работы компоненты, а это:
- TRvNDRWriter
- TRvRenderPdf
- TButton
Компонент TRvNDRWriter предназначен для записи в pdf-файл информацию (текстовую, графическую), через поток.
Компонент TRvRenderPdf предназначен для создания, отрисовки информации (текстовой, графической и так далее). Ну и по нажатию на кнопку, мы будем что-то заносить в наш pdf-файл.
Из теории много писать ничего не будем, а сразу перейдем к программированию, но необходимо еще сперва создать обычный пустой pdf-файл и положить его в корень с программой. Дальше на событие OnClick нашей кнопки мы напишем следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
Streams:TMemoryStream;
begin
Streams:=TMemoryStream.create;
RvNDrWriter1.Stream:=Streams;
RvNDRWriter1.Execute;
RvRenderPdf1.PrintRender(Streams,'test.pdf');
ShellExecute(Handle,nil,'test.pdf','','',SW_SHOW);
FreeAndNil(Streams);
end;
Создаем поток, в котором и будем отрисовывовать всю информацию, затем запускаем отрисовку, указываем файл, в который будет производиться отрисовка данных и в конце уничтожаем поток.
Все теперь, нам необходимо событие, которое возникает при отрисовке данных, в нем мы и будем выводить всю нашу информацию. Выделяем компонент TRvNDRWriter и переходим список событий данного компонента, после чего, находим событие OnPrint и в данной событие пишем следующий код:
procedure TForm1.Print(Sender: TObject);
begin
bmp:=TBitmap.Create;
bmp.LoadFromFile('test.bmp');
with RvNDRWriter1 do
begin
SetFont('Arial',16);
FontColor:=clGreen;
Print('Test Text');
PrintHeader('Begin PDF File',pjCenter);
PrintFooter('End PDF File',pjCenter);
LineTo(10,10);
PrintBitmap(1,1,1,1,bmp);
end;
FreeAndNil(bmp);
end;
Ну, сперва, мы загружаем картинку *.bmp, естественно переменная bmp, у нас объект класса TBitmap. Загружаем мы для того, чтобы потом ее отрисовать в нашем pdf-документе.
А дальше, я думаю все понятно, процедура PrintHeader - выводит надпись в заголовок документа (страницы), процедура PrintFooter - выводит надпись в конец документа (страницы). Процедура PrintBitmap - выводит изображение в документ, процедура SetFont - устанавливает шрифт документа, процедура FontColor - устанавливает цвет шрифта документа.
Остальные графические функции и процедуры, такие же, что и при выводе графической информации на Canvas других компонентов.
Для создания нового листа в документе используется функции NewPage, все что будет после нее написано на вывод информации, будет выводиться на новом листе документа.
В следующей статье, по работе с pdf, мы рассмотрим, как можно открывать pdf-документы, печатать их, перемещаться по документы и многое другое.