PDFium Component Docs

Przewodnik szybkiego startu

Ten przewodnik pomoże Ci rozpocząć pracę z komponentami PDFium VCL w ciągu zaledwie kilku minut.

Krok 1: Utwórz nowy projekt

  1. Utwórz nową aplikację VCL Forms Application w swoim IDE
  2. Zapisz projekt w wygodnej lokalizacji

Krok 2: Dodaj komponenty do formularza

  1. Otwórz paletę komponentów losLab
  2. Upuść komponent TPdf na formularz
  3. Upuść komponent TPdfView na formularz
  4. Ustaw właściwość Pdf komponentu TPdfView tak, aby wskazywała na komponent TPdf

Krok 3: Załaduj swój pierwszy PDF

Proste ładowanie PDF:

// Załaduj plik PDF
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));

// Lub załaduj ze strumienia pamięci
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;

Krok 4: Podstawowe operacje PDF

Nawigacja po stronach

// Przejdź do następnej strony
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Przejdź do poprzedniej strony
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Ekstrakcja tekstu

// Wyodrębnij cały tekst z bieżącej strony
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Wyodrębnij tekst z obszaru prostokątnego
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Wyszukiwanie tekstu

// Znajdź tekst w dokumencie
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('search term');
  if Position >= 0 then
    ShowMessage('Found at position: ' + IntToStr(Position))
  else
    ShowMessage('Not found');
end;

Utwórz nowy PDF

// Utwórz nowy PDF z tekstem
Pdf1.CreateDocument;
Pdf1.Compressed := True; // włącz kompresję strumieni
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // rozmiar A4
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Powiększenie i wyświetlanie

// Ustaw poziom powiększenia (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Ustaw tryb wyświetlania
PdfView1.DisplayMode := dmSingleContinuous;

// Obróć stronę
PdfView1.Rotation := ro90;

Krok 5: Właściwości dokumentu

// Odczytaj metadane dokumentu
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)));

Krok 6: Dokumenty chronione hasłem

// Otwórz PDF chroniony hasłem
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Krok 7: Duże dokumenty (ładowanie strumieniowe)

Dla wielogigabajtowych plików PDF lub źródeł zdalnych / bazodanowych użyj LoadCustomDocument, dzięki czemu PDFium pobiera bloki na żądanie, zamiast buforować cały plik w pamięci:

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

Krok 8: Układ strony (Tryb dopasowania TPdfView)

FitMode utrzymuje długie dokumenty w ramach automatycznie przy zmianie rozmiaru i przy zmianie bieżącej strony:

PdfView1.FitMode := pfmFitPage; // cała strona w obszarze wyświetlania
// pfmFitWidth — szerokość strony pasuje do szerokości obszaru wyświetlania
// pfmActualSize — 100%
// pfmNone — powiększenie ręczne

// Wzorzec przeglądarki w trybie ciemnym: ciemny obszar przewijania, papierowo biała strona PDF
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Krok 9: Podświetlenie wyników wyszukiwania

HighlightSearchText skanuje bieżącą wyświetlaną stronę i nakłada maskę HighlightColor nad każdym dopasowaniem przy każdym przerysowaniu:

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

// Przejście na inną stronę usuwa podświetlenie automatycznie

Krok 10: Wyjście archiwalne PDF/A

SaveAsPdfA przetwarza wynik zapisu bazowego poprzez aktualizację przyrostową, która wstrzykuje strumień metadanych XMP, OutputIntent sRGB ICC oraz zaktualizowany Catalog dokumentu:

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

// Sprawdź zgodność przychodzącego dokumentu
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

Kolejne kroki