Article technique

Création d'une visionneuse PDF riche en fonctionnalités avec PDFium VCL dans Delphi

· Programmation PDF

Dans ce tutoriel, nous allons explorer comment créer une application de visionnage de PDF professionnelle en utilisant PDFium VCL, un composant Delphi puissant qui encapsule le moteur de rendu PDFium de Google. Cette démonstration présente les fonctionnalités de base de la lecture qui constituent la fondation de toute application PDF. PDFium VCL, un composant Delphi puissant qui encapsule le moteur de rendu PDFium de Google. Cette démonstration présente les fonctionnalités de base de la lecture qui constituent la fondation de toute application PDF.

Aperçu

La démonstration du visionneur PDF illustre les fonctionnalités essentielles nécessaires pour afficher des documents PDF dans une application Delphi. Elle fournit une solution de visionnage PDF complète et prête à l'emploi, avec des fonctionnalités comparables aux lecteurs PDF commerciaux.

Principales fonctionnalités

  • Chargement des documents – Ouvrir des fichiers PDF avec prise en charge de la protection par mot de passe
  • Navigation dans les pages – Boutons de page précédente, suivante, suivante et dernière, avec raccourcis clavier.
  • Contrôles de zoom. – Plusieurs niveaux de zoom, y compris l'ajustement à la page et à la largeur.
  • Rotation des pages. – Faire pivoter les pages de 90° vers la gauche ou la droite.
  • Sélection de texte. – Sélectionner et copier du texte à partir de documents PDF.
  • Favoris. – Naviguer à l'aide de la table des matières du document.
  • Recherche de texte. – Rechercher du texte dans le document.
  • Impression. – Imprimer des documents avec sélection de plage de pages.
  • Enregistrer sous. – Exporter le document vers un nouveau fichier PDF.

Exigences des DLL PDFium

Avant d'exécuter une application PDFium VCL, vous devez installer les fichiers DLL de PDFium. Les DLL se trouvent dans le répertoire : DLLs dossier du package PDFium VCL :

  • pdfium32.dll – Version 32 bits (environ 5 Mo).
  • pdfium64.dll – Version 64 bits (environ 6 Mo).
  • pdfium32v8.dll – 32 bits avec le moteur JavaScript V8 (environ 23 Mo).
  • pdfium64v8.dll – 64 bits avec le moteur JavaScript V8 (environ 27 Mo).

Installation : Exécuter PDFiumVCL\DLLs\CopyDlls.bat en tant qu'administrateur. Ce script copie automatiquement les DLL appropriées dans les répertoires système de Windows :

1
2
3
4
5
6
@echo off
REM On 64-bit Windows:
REM   - 32-bit DLLs %SystemRoot%\SysWOW64\
REM   - 64-bit DLLs %SystemRoot%\System32\
REM On 32-bit Windows:
REM   - 32-bit DLLs %SystemRoot%\System32\

Remarque : Utilisez les DLL standard (pdfium32.dll/pdfium64.dll) pour la plupart des applications. Les versions V8 ne sont nécessaires que si vos fichiers PDF contiennent du JavaScript qui nécessite une exécution.

Composants principaux

La démo utilise deux principaux composants PDFium VCL :

1
2
Pdf: TPdf;        // Non-visual component for PDF operations
PdfView: TPdfView; // Visual component for rendering PDF pages

Composant TPdf

La TPdf Ce composant gère toutes les opérations sur les documents PDF, notamment le chargement, la sauvegarde et l'accès aux propriétés du document, telles que les métadonnées, les signets et les informations sur les pages.

Composant TPdfView

La TPdfView Ce composant est un contrôle visuel défilant qui affiche les pages PDF avec un défilement fluide, une prise en charge du zoom et une gestion des interactions utilisateur.

Chargement d'un document PDF

L'ouverture d'un fichier PDF est simple :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure TFormMain.SpeedButtonOpenPdfClick(Sender: TObject);
var
  Password: string;
begin
  if OpenDialog.Execute then
  begin
    Pdf.FileName := OpenDialog.FileName;
    Pdf.Password := '';
    Pdf.PageNumber := 0;
    
    try
      PdfView.Active := True;
    except
      on Error: EPdfError do
        if Error.Message = 'Password required or incorrect password' then
        begin
          if InputQuery('Enter Password', 'Password: ', Password) then
          begin
            Pdf.Password := Password;
            PdfView.Active := True;
          end
          else
            raise;
        end
        else
          raise;
    end;
    
    if PdfView.PageCount > 0 then
      PdfView.PageNumber := 1;
  end;
end;

Navigation dans les pages

La mise en œuvre de la navigation dans les pages est simple grâce à PageNumber propriété :

1
2
3
4
5
6
7
8
9
10
11
// Navigate to first page
PdfView.PageNumber := 1;
 
// Navigate to last page
PdfView.PageNumber := PdfView.PageCount;
 
// Previous page
PdfView.PageNumber := PdfView.PageNumber - 1;
 
// Next page
PdfView.PageNumber := PdfView.PageNumber + 1;

Contrôle de zoom.

La TPdfView Le composant offre des options de zoom flexibles.

1
2
3
4
5
6
7
8
9
10
11
12
13
// Set specific zoom levels
PdfView.Zoom := 1.0;    // 100%
PdfView.Zoom := 0.5;    // 50%
PdfView.Zoom := 2.0;    // 200%
 
// Fit to page width
PdfView.Zoom := PdfView.PageWidthZoom[PdfView.PageNumber];
 
// Fit entire page in view
PdfView.Zoom := PdfView.PageZoom[PdfView.PageNumber];
 
// Actual size (based on DPI)
PdfView.Zoom := PdfView.ActualSizeZoom[PdfView.PageNumber];

Rotation des pages.

Faites pivoter les pages à l'aide de. Rotation propriété :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Rotate right (clockwise)
case PdfView.Rotation of
  ro0:   PdfView.Rotation := ro90;
  ro90:  PdfView.Rotation := ro180;
  ro180: PdfView.Rotation := ro270;
  ro270: PdfView.Rotation := ro0;
end;
 
// Rotate left (counter-clockwise)
case PdfView.Rotation of
  ro0:   PdfView.Rotation := ro270;
  ro90:  PdfView.Rotation := ro0;
  ro180: PdfView.Rotation := ro90;
  ro270: PdfView.Rotation := ro180;
end;

Affichage des informations du document.

Accédez aux métadonnées du document via. TPdf Le composant.

1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TFormMain.SpeedButtonShowInfoClick(Sender: TObject);
begin
  ShowMessage(
    'Author: ' + Pdf.Author + #13#10 +
    'Creator: ' + Pdf.Creator + #13#10 +
    'Keywords: ' + Pdf.Keywords + #13#10 +
    'Producer: ' + Pdf.Producer + #13#10 +
    'Subject: ' + Pdf.Subject + #13#10 +
    'Title: ' + Pdf.Title + #13#10 +
    'Creation date: ' + Pdf.CreationDate + #13#10 +
    'Modified date: ' + Pdf.ModifiedDate
  );
end;

Travailler avec les signets.

La démo remplit un TreeView avec les signets du document pour une navigation facile.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TFormMain.AddBookmarks(Node: TTreeNode; Bookmarks: TBookmarks);
var
  ChildNode: TTreeNode;
  I: Integer;
begin
  for I := 0 to Length(Bookmarks) - 1 do
  begin
    ChildNode := TreeViewBookmarks.Items.AddChildObject(
      Node,
      Bookmarks[I].Title,
      Bookmarks[I].Handle
    );
    ChildNode.HasChildren := Pdf.HasBookmarkChildren[Bookmarks[I]];
    
    if ChildNode.HasChildren then
      AddBookmarks(ChildNode, Pdf.BookmarkChildren[Bookmarks[I]]);
  end;
end;

Options de rendu.

Personnalisez le rendu avec diverses options :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Available render options
type
  TRenderOption = (
    reAnnotations,      // Render annotations
    reLcd,              // LCD optimized rendering
    reNoNativeText,     // Don't use native text output
    reGrayscale,        // Render in grayscale
    reLimitCache,       // Limit image cache size
    reHalftone,         // Use halftone for image stretching
    rePrinting,         // Optimize for printing
    reNoSmoothText,     // Disable text anti-aliasing
    reNoSmoothImage,    // Disable image anti-aliasing
    reNoSmoothPath      // Disable path anti-aliasing
  );
 
// Apply options to the view
PdfView.Options := [reAnnotations, reLcd];

Conclusion.

La démo du lecteur PDF offre une base solide pour intégrer des fonctionnalités de lecture de PDF dans vos applications Delphi. Avec PDFium VCL, vous accédez au même moteur de rendu PDF utilisé par Google Chrome, garantissant un affichage PDF de haute qualité et précis.

Le composant gère automatiquement les fonctionnalités PDF complexes telles que les annotations, les champs de formulaire et les polices intégrées, vous permettant de vous concentrer sur la création des fonctionnalités uniques de votre application plutôt que sur l'analyse PDF de bas niveau.

Téléchargez PDFium VCL depuis loslab.com pour commencer le développement PDF dans Delphi.