PDFium Component Docs

Тази страница е локализирана на български и запазва имената на API, файловете и литералните стойности непроменени

Ръководство за бърз старт

Това ръководство ще ви помогне да започнете работа с компонентите PDFium VCL само за няколко минути

Стъпка 1: Създайте нов проект

  1. Създайте ново VCL Forms Application във вашата IDE
  2. Запазете проекта на удобно място

Стъпка 2: Добавете компоненти към формата

  1. Отворете палитрата с компоненти losLab
  2. Поставете компонент TPdf върху формата
  3. Поставете компонент TPdfView върху формата
  4. Задайте свойството Pdf на TPdfView така, че да сочи към вашия TPdf компонент

Стъпка 3: Заредете първия си PDF

Просто зареждане на PDF:

// Зареждане на PDF файл
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));

// Или зареждане от поток в паметта
var
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  try
    Stream.LoadFromFile('C:\Sample.pdf');
    Pdf1.LoadDocument(Stream, True);
    Pdf1.Active := True;
  finally
    Stream.Free;
  end;
end;

Стъпка 4: Основни PDF операции

Навигация по страници

// Отиване на следващата страница
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Отиване на предишната страница
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Извличане на текст

// Извличане на целия текст от текущата страница
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Извличане на текст от правоъгълна област
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Търсене на текст

// Намиране на текст в документа
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('search term');
  if Position >= 0 then
    ShowMessage('Found at position: ' + IntToStr(Position))
  else
    ShowMessage('Not found');
end;

Създаване на нов PDF

// Създаване на нов PDF с текст
Pdf1.CreateDocument;
Pdf1.Compressed := True; // включване на компресия на потоците
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // размер A4
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Мащаб и показване

// Задаване на ниво на мащабиране (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Задаване на режим на показване
PdfView1.DisplayMode := dmSingleContinuous;

// Завъртане на страница
PdfView1.Rotation := ro90;

Стъпка 5: Свойства на документа

// Четене на метаданните на документа
ShowMessage('Title: ' + Pdf1.Title);
ShowMessage('Author: ' + Pdf1.Author);
ShowMessage('Creator: ' + Pdf1.Creator);
ShowMessage('Producer: ' + Pdf1.Producer);
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));
ShowMessage('Version: ' + IntToStr(Ord(Pdf1.PdfVersion)));

Стъпка 6: Документи, защитени с парола

// Отваряне на PDF, защитен с парола
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Стъпка 7: Големи документи (зареждане на поток)

За multi-GB PDF файлове или отдалечени източници / източници от база данни използвайте LoadCustomDocument, за да може PDFium да зарежда блокове при поискване вместо да буферира целия файл в паметта

var
  FileStream: TFileStream;
begin
  FileStream := TFileStream.Create('C:\Huge.pdf', fmOpenRead or fmShareDenyWrite);
  Pdf1.LoadCustomDocument(FileStream, True); // AOwnsStream
  Pdf1.Active := True;
end;

Стъпка 8: Оформление на страницата (режим FitMode на TPdfView)

FitMode автоматично побира дългите документи при Resize и когато текущата страница се промени

PdfView1.FitMode := pfmFitPage; // цяла страница в прозореца за показване
// pfmFitWidth — ширината на страницата съвпада с ширината на прозореца
// pfmActualSize — 100%
// pfmNone — ръчно мащабиране

// Шаблон за тъмен режим: тъмна зона за превъртане, бяла като хартия PDF страница
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Стъпка 9: Подсветка на търсенето

HighlightSearchText сканира текущата страница в изгледа и рисува маска HighlightColor върху всяко съвпадение при всяко прерисуване

var
  MatchCount: Integer;
begin
  PdfView1.HighlightColor := clYellow;
  MatchCount := PdfView1.HighlightSearchText('invoice');
  Status.Caption := IntToStr(MatchCount) + ' matches';
end;

// Преминаването към друга страница изчиства подсветката автоматично

Стъпка 10: Архивен изход PDF/A

SaveAsPdfA обработва базовия запис с инкрементална актуализация, която вмъква XMP поток с метаданни, sRGB ICC OutputIntent и обновен каталог на документа

if Pdf1.SaveAsPdfA('C:\Report.pdfa.pdf', pac1b) then
  ShowMessage('Saved PDF/A-1b');

// Проверка на съответствието на входящ документ
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

Следващи стъпки