Documentation PDFiumPas

Guide de démarrage rapide

Ce guide vous aidera à démarrer avec les composants PDFium VCL en quelques minutes seulement.

Étape 1 : Créer un nouveau projet

  1. Créez une nouvelle application VCL Forms dans votre IDE
  2. Enregistrez le projet à un emplacement pratique

Étape 2 : Ajouter des composants à votre formulaire

  1. Ouvrez la palette de composants losLab
  2. Déposez un composant TPdf sur votre formulaire
  3. Déposez un composant TPdfView sur votre formulaire
  4. Définissez la propriété Pdf de TPdfView pour qu'elle pointe vers votre composant TPdf

Étape 3 : Charger votre premier PDF

Chargement PDF simple :

// Charger un fichier PDF
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));

// Ou charger depuis un flux mémoire
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;

Étape 4 : Opérations PDF de base

Naviguer entre les pages

// Aller à la page suivante
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Aller à la page précédente
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Extraire du texte

// Extraire tout le texte de la page courante
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Extraire le texte d'une zone rectangulaire
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Rechercher du texte

// Rechercher du texte dans le 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;

Créer un nouveau PDF

// Créer un nouveau PDF avec du texte
Pdf1.CreateDocument;
Pdf1.Compressed := True; // activer la compression des flux
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // format A4
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Zoom et affichage

// Définir le niveau de zoom (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Définir le mode d'affichage
PdfView1.DisplayMode := dmSingleContinuous;

// Faire pivoter la page
PdfView1.Rotation := ro90;

Étape 5 : Propriétés du document

// Lire les métadonnées du document
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)));

Étape 6 : Documents protégés par mot de passe

// Ouvrir un PDF protégé par mot de passe
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Étape 7 : Documents volumineux (chargement en flux)

Pour les PDF de plusieurs Go ou les sources distantes / adossées à une base de données, utilisez LoadCustomDocument afin que PDFium récupère les blocs à la demande au lieu de mettre en tampon le fichier entier en mémoire :

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

Étape 8 : Mise en page (Mode d'ajustement de TPdfView)

FitMode conserve les longs documents cadrés automatiquement lors d'un Resize et lors d'un changement de page :

PdfView1.FitMode := pfmFitPage; // page entière dans la fenêtre
// pfmFitWidth — la largeur de la page correspond à celle de la fenêtre
// pfmActualSize — 100 %
// pfmNone — zoom manuel

// Modèle visionneuse mode sombre : zone de défilement sombre, page PDF blanc papier
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Étape 9 : Surbrillance de recherche

HighlightSearchText analyse la page de la vue courante et peint un masque HighlightColor sur chaque correspondance à chaque redessin :

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

// Passer à une autre page efface automatiquement la surbrillance

Étape 10 : Sortie d'archivage PDF/A

SaveAsPdfA post-traite l'enregistrement de base avec une mise à jour incrémentielle qui injecte un flux de métadonnées XMP, un OutputIntent ICC sRGB et un catalogue de document mis à jour :

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

// Vérifier la conformité d'un document entrant
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

Étapes suivantes