Работа с PDF-документами

3 минуты на чтение

В этой статье, рассмотрим, как создавать свои 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, все что будет после нее написано на вывод информации, будет выводиться на новом листе документа.

Проследите, чтобы все эти модули: RpRender, RpRenderPDF, RpDefine, RpBase,  RpFiler, RpRave, RpCon были подключены в Ваш проект

В следующей статье, по работе с pdf, мы рассмотрим, как можно открывать pdf-документы, печатать их, перемещаться по документы и многое другое.

Facebook Vk Ok LinkedIn Telegram

Похожие записи:

Не долго пришлось ждать следующей статьи — про MapWindow GIS в Delphi, а тема ее — Работа с таблицами атрибутов, а точнее, работа, с тем самым, файлом dbf. Вообще, как Вы догадались возможно раньше, что приложен файл dbf - к shp-файлу не с проста. Вообще, если...
Здравствуйте, вот все продолжаю мучать VK API в Delphi. На этой раз «перст пал» на расширенные методы API. К данным методам относятся работа с личными сообщениями работа со стеной пользователя работа с фотографиями и альбомами фотографий В данный момент хоте...
Приветствую читателей блога. Сегодняшняя статья будет посвящена работе с DBF-файлами, без использования ADO, BDE и компонентов доступа к данным. Я уже рассказывал про работу с DBF-файлами, это описано в этой статье. Многим не нравится работа с ADO, BDE, так ка...