PDFium Component Docs

Посібник швидкого старту

Цей посібник допоможе вам розпочати роботу з компонентами 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: Документи, захищені паролем

// Open PDF, захищений паролем
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Крок 7: Великі документи (потокове завантаження)

Для багатогігабайтних 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) + ' збігів';
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;

Наступні кроки