PDFium Component Docs

Průvodce rychlým startem

Tento průvodce ti pomůže během několika minut začít s komponentami PDFium VCL

Krok 1: Vytvořte nový projekt

  1. V IDE vytvořte novou aplikaci VCL Forms Application
  2. Uložte projekt na vhodné místo

Krok 2: Přidejte komponenty na formulář

  1. Otevřete paletu komponent losLab
  2. Na formulář umístěte komponentu TPdf
  3. Na formulář umístěte komponentu TPdfView
  4. Nastavte vlastnost Pdf komponenty TPdfView na vaši komponentu TPdf

Krok 3: Načtěte první PDF

Jednoduché načtení PDF:

// Načtení PDF souboru
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));

// Nebo načtení z paměťového streamu
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: Základní operace s PDF

Pohyb po stránkách

// Přejít na další stránku
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Přejít na předchozí stránku
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Extrahování textu

// Extrahování veškerého textu z aktuální stránky
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Extrahování textu z obdélníkové oblasti
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Vyhledávání textu

// Vyhledání textu v dokumentu
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('search term');
  if Position >= 0 then
    ShowMessage('Found at position: ' + IntToStr(Position))
  else
    ShowMessage('Not found');
end;

Vytvoření nového PDF

// Vytvořit nové PDF s textem
Pdf1.CreateDocument;
Pdf1.Compressed := True; // povolit kompresi streamu
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // velikost A4
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Přiblížení a zobrazení

// Nastavit úroveň přiblížení (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Nastavit režim zobrazení
PdfView1.DisplayMode := dmSingleContinuous;

// Otočit stránku
PdfView1.Rotation := ro90;

Krok 5: Vlastnosti dokumentu

// Načíst metadata 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 chráněné heslem

// Otevřít PDF chráněné heslem
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Krok 7: Velké dokumenty (streamované načítání)

Pro PDF v řádu gigabajtů nebo pro vzdálené zdroje či zdroje v databázi použijte LoadCustomDocument, aby PDFium načítal bloky podle potřeby místo ukládání celého souboru do paměti:

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

Krok 8: Rozvržení stránky (režim FitMode v TPdfView)

FitMode automaticky přizpůsobuje dlouhé dokumenty při změně velikosti i při změně aktuální stránky:

PdfView1.FitMode := pfmFitPage; // celá stránka v oblasti zobrazení
// pfmFitWidth — šířka stránky odpovídá šířce oblasti zobrazení
// pfmActualSize — 100%
// pfmNone — ruční přiblížení

// Vzor pro prohlížeč v tmavém režimu: tmavá oblast posunu, stránka PDF na bílém papíře
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Krok 9: Zvýraznění hledání

HighlightSearchText prohledá aktuálně zobrazenou stránku a při každém překreslení nanese masku HighlightColor na každý výskyt:

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

// Přepnutí na jinou stránku zvýraznění automaticky vymaže

Krok 10: Archivní výstup PDF/A

SaveAsPdfA po základním uložení provede doplňující aktualizaci, která vloží datový proud metadat XMP, sRGB ICC OutputIntent a aktualizovaný katalog dokumentu:

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

// Zkontrolovat shodu příchozího dokumentu
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

Další kroky