PDFium Delphi Component Docs

Snabbstartsguide

Denna guide hjälper dig komma igång med PDFium VCL-komponenter på bara några minuter.

Steg 1: Skapa ett nytt projekt

  1. Skapa en ny VCL Forms-applikation i din IDE
  2. Spara projektet på en lämplig plats

Steg 2: Lägg till komponenter på ditt formulär

  1. Öppna komponentpaletten losLab
  2. Släpp en TPdf-komponent på ditt formulär
  3. Släpp en TPdfView-komponent på ditt formulär
  4. Ange TPdfViews Pdf-egenskap så att den pekar på din TPdf-komponent

Steg 3: Läs in din första PDF

Enkel PDF-inläsning:

// Läs in en PDF-fil
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));

// Eller läs in från en minnesström
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;

Steg 4: Grundläggande PDF-operationer

Navigera mellan sidor

// Gå till nästa sida
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Gå till föregående sida
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Extrahera text

// Extrahera all text från aktuell sida
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Extrahera text från ett rektangulärt område
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Sök text

// Hitta text i dokumentet
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('search term');
  if Position >= 0 then
    ShowMessage('Found at position: ' + IntToStr(Position))
  else
    ShowMessage('Not found');
end;

Skapa en ny PDF

// Skapa en ny PDF med text
Pdf1.CreateDocument;
Pdf1.Compressed := True; // aktivera strömkomprimering
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // A4-storlek
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Zoom och visning

// Ange zoomnivå (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Ange visningsläge
PdfView1.DisplayMode := dmSingleContinuous;

// Rotera sida
PdfView1.Rotation := ro90;

Steg 5: Dokumentegenskaper

// Läs dokumentmetadata
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)));

Steg 6: Lösenordsskyddade dokument

// Öppna en lösenordsskyddad PDF
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Steg 7: Stora dokument (strömmande inläsning)

För PDF-filer på flera gigabyte eller fjärr-/databasbaserade källor, använd LoadCustomDocument så att PDFium hämtar block on-demand istället för att buffra hela filen i minnet:

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

Steg 8: Sidlayout (TPdfView FitMode)

FitMode håller långa dokument inramade automatiskt vid Resize och när aktuell sida ändras:

PdfView1.FitMode := pfmFitPage; // hela sidan i viewporten
// pfmFitWidth — sidbredden matchar viewportbredden
// pfmActualSize — 100%
// pfmNone — manuell zoom

// Mönster för visare i mörkt läge: mörkt rullningsområde, pappersvit PDF-sida
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Steg 9: Sökmarkering

HighlightSearchText skannar aktuell vy-sida och målar en HighlightColor-mask över varje träff vid varje omritning:

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

// Byte till en annan sida rensar markeringen automatiskt

Steg 10: PDF/A-arkivutdata

SaveAsPdfA efterbehandlar grundsparandet med en inkrementell uppdatering som injicerar en XMP-metadataström, en sRGB ICC OutputIntent och en uppdaterad dokumentkatalog:

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

// Kontrollera konformansen för ett inkommande dokument
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

Nästa steg