PDFium Component Docs

Snelstartgids

Deze gids helpt u in slechts enkele minuten op weg met de PDFium VCL-componenten.

Stap 1: Maak een nieuw project

  1. Maak in uw IDE een nieuwe VCL Forms-toepassing
  2. Sla het project op een handige locatie op

Stap 2: Voeg componenten toe aan uw formulier

  1. Open het losLab-componentenpalet
  2. Sleep een TPdf-component op uw formulier
  3. Sleep een TPdfView-component op uw formulier
  4. Stel de eigenschap Pdf van TPdfView in zodat deze naar uw TPdf-component wijst

Stap 3: Laad uw eerste PDF

Eenvoudig PDF-bestand laden:

// Laad een PDF-bestand
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));

// Of laad vanuit een geheugenstream
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;

Stap 4: Basis PDF-bewerkingen

Door pagina's navigeren

// Ga naar de volgende pagina
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Ga naar de vorige pagina
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Tekst extraheren

// Extraheer alle tekst van de huidige pagina
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Extraheer tekst uit een rechthoekig gebied
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Tekst zoeken

// Zoek tekst in het document
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('search term');
  if Position >= 0 then
    ShowMessage('Found at position: ' + IntToStr(Position))
  else
    ShowMessage('Not found');
end;

Een nieuwe PDF maken

// Maak een nieuwe PDF met tekst
Pdf1.CreateDocument;
Pdf1.Compressed := True; // schakel stream-compressie in
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // A4-formaat
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Zoomen en weergeven

// Stel zoomniveau in (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Stel weergavemodus in
PdfView1.DisplayMode := dmSingleContinuous;

// Roteer pagina
PdfView1.Rotation := ro90;

Stap 5: Documenteigenschappen

// Lees documentmetadata
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)));

Stap 6: Met wachtwoord beveiligde documenten

// Open een met wachtwoord beveiligde PDF
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Stap 7: Grote documenten (streaming-load)

Gebruik voor PDF's van meerdere GB of remote / databasegebaseerde bronnen LoadCustomDocument zodat PDFium blokken op aanvraag ophaalt in plaats van het hele bestand in het geheugen te bufferen:

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

Stap 8: Pagina-lay-out (TPdfView Fit-modus)

FitMode houdt lange documenten automatisch ingekaderd bij Resize en wanneer de huidige pagina wijzigt:

PdfView1.FitMode := pfmFitPage; // hele pagina in viewport
// pfmFitWidth — paginabreedte komt overeen met viewport-breedte
// pfmActualSize — 100%
// pfmNone — handmatig zoomen

// Patroon voor donker-thema viewer: donker scrollgebied, papierwitte PDF-pagina
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Stap 9: Zoek-markering

HighlightSearchText scant de huidige weergavepagina en schildert bij elke redraw een HighlightColor-masker over elke match:

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

// Wisselen naar een andere pagina wist de markering automatisch

Stap 10: PDF/A-archiveringsuitvoer

SaveAsPdfA nabewerkt de basisopslag met een incrementele update die een XMP-metadatastream, een sRGB ICC OutputIntent en een bijgewerkte documentcatalogus injecteert:

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

// Controleer conformiteit van een binnenkomend document
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

Volgende stappen