PDFium Component Docs

Ghid de pornire rapidă

Acest ghid vă ajută să începeți să lucrați cu componentele PDFium VCL în doar câteva minute

Pasul 1: Creați un proiect nou

  1. Creați o aplicație VCL Forms nouă în IDE
  2. Salvați proiectul într-o locație convenabilă

Pasul 2: Adăugați componente pe formular

  1. Deschideți paleta de componente losLab
  2. Plasați o componentă TPdf pe formular
  3. Plasați o componentă TPdfView pe formular
  4. Setați proprietatea Pdf a TPdfView astfel încât să indice componenta TPdf

Pasul 3: Încărcați primul PDF

Încărcare PDF simplă:

// Încărcați un fișier PDF
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));

// Sau încărcați dintr-un flux de memorie
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;

Pasul 4: Operații PDF de bază

Navigare între pagini

// Mergeți la pagina următoare
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Mergeți la pagina anterioară
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Extragere text

// Extrageți tot textul din pagina curentă
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Extrageți text dintr-o zonă dreptunghiulară
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Căutare text

// Căutați text în 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;

Creare PDF nou

// Creați un PDF nou cu text
Pdf1.CreateDocument;
Pdf1.Compressed := True; // activați compresia fluxului
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // dimensiune A4
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Zoom și afișare

// Setați nivelul de zoom (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Setați modul de afișare
PdfView1.DisplayMode := dmSingleContinuous;

// Rotiți pagina
PdfView1.Rotation := ro90;

Pasul 5: Proprietățile documentului

// Citiți metadatele documentului
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)));

Pasul 6: Documente protejate cu parolă

// Deschideți un PDF protejat cu parolă
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Pasul 7: Documente mari (încărcare în flux)

Pentru PDF-uri de ordinul mai multor GB sau surse la distanță ori bazate pe bază de date, folosiți LoadCustomDocument astfel încât PDFium să preia blocurile la cerere în loc să memoreze întregul fișier în memorie:

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

Pasul 8: Aspectul paginii (TPdfView FitMode)

FitMode păstrează automat documentele lungi încadrate la Resize și când se schimbă pagina curentă:

PdfView1.FitMode := pfmFitPage; // întreaga pagină în viewport
// pfmFitWidth — lățimea paginii se potrivește cu lățimea viewportului
// pfmActualSize — 100%
// pfmNone — zoom manual

// Model pentru vizualizare în mod întunecat: zonă de derulare întunecată, pagină PDF albă ca hârtia
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Pasul 9: Evidențierea căutării

HighlightSearchText scanează pagina curentă afișată și aplică o mască HighlightColor peste fiecare potrivire la fiecare rerandare:

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

// Trecerea la o altă pagină elimină automat evidențierea

Pasul 10: Ieșire de arhivare PDF/A

SaveAsPdfA preprocesează salvarea de bază cu o actualizare incrementală care injectează un flux de metadate XMP, un sRGB ICC OutputIntent și un catalog de document actualizat:

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

// Verificați conformitatea unui document de intrare
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

Pași următori