Articolo tecnico

Creazione di un visualizzatore PDF ricco di funzionalità con PDFium VCL in Delphi

· Programmazione PDF

In questo tutorial, esploreremo come creare un'applicazione professionale per la visualizzazione di file PDF utilizzando PDFium VCL, un potente componente Delphi che avvolge il motore di rendering PDFium di Google. Questa demo mostra le funzionalità di base per la visualizzazione che costituiscono la base di qualsiasi applicazione PDF. PDFium VCL, un potente componente Delphi che avvolge il motore di rendering PDFium di Google. Questa demo mostra le funzionalità di base per la visualizzazione che costituiscono la base di qualsiasi applicazione PDF.

Panoramica

La demo del visualizzatore PDF dimostra le funzionalità essenziali necessarie per la visualizzazione di documenti PDF in un'applicazione Delphi. Fornisce una soluzione completa e pronta all'uso per la visualizzazione di file PDF, con funzionalità paragonabili a quelle dei lettori PDF commerciali.

Caratteristiche Principali

  • Caricamento dei documenti – Apertura di file PDF con supporto per la protezione tramite password
  • Navigazione tra le pagine – Pulsanti per la prima, la pagina precedente, la pagina successiva e l'ultima pagina, con scorciatoie da tastiera.
  • Controlli di zoom. – Molti livelli di zoom, inclusi "adatta alla pagina" e "adatta alla larghezza".
  • Rotazione delle pagine – Ruota le pagine di 90° a sinistra o a destra.
  • Selezione del testo. – Seleziona e copia il testo dai documenti PDF.
  • Segnalibri. – Naviga utilizzando l'indice del documento.
  • Ricerca di testo. – Trova testo all'interno del documento.
  • Stampa. – Stampa documenti con selezione dell'intervallo di pagine.
  • Salva con nome. – Esporta il documento in un nuovo file PDF.

Requisiti delle librerie DLL di PDFium

Prima di eseguire qualsiasi applicazione PDFium VCL, è necessario installare i file DLL di PDFium. I file DLL si trovano nella cartella: DLLs cartella del pacchetto PDFium VCL:

  • pdfium32.dll – Versione a 32 bit (~5 MB).
  • pdfium64.dll – Versione a 64 bit (~6 MB).
  • pdfium32v8.dll – 32-bit con motore JavaScript V8 (~23 MB)
  • pdfium64v8.dll – 64-bit con motore JavaScript V8 (~27 MB)

Installazione: Esegui PDFiumVCL\DLLs\CopyDlls.bat come amministratore. Questo script copia automaticamente le DLL appropriate nelle directory di sistema di 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\

Nota: Utilizzare le DLL standard (pdfium32.dll/pdfium64.dll) per la maggior parte delle applicazioni. Le versioni V8 sono necessarie solo se i file PDF contengono JavaScript che richiede l'esecuzione.

Componenti principali

La demo utilizza due componenti principali PDFium VCL:

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

Componente TPdf

Il TPdf Questo componente gestisce tutte le operazioni sui documenti PDF, inclusi il caricamento, il salvataggio e l'accesso alle proprietà del documento, come metadati, segnalibri e informazioni sulle pagine.

Componente TPdfView

Il TPdfView Questo componente è un controllo visivo scorrevole che visualizza le pagine PDF con scorrimento fluido, supporto zoom e gestione delle interazioni dell'utente.

Caricamento di un documento PDF

L'apertura di un file PDF è semplice:

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;

Navigazione tra le pagine

L'implementazione della navigazione tra le pagine è semplice con il PageNumber proprietà:

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;

Controllo zoom.

Il TPdfView Il componente offre opzioni di zoom flessibili:

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];

Rotazione delle pagine

Ruota le pagine utilizzando Rotation proprietà:

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;

Visualizzazione delle informazioni del documento

Accedi ai metadati del documento tramite TPdf componente:

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;

Lavorare con i segnalibri

La demo popola un TreeView con i segnalibri del documento per una facile navigazione:

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;

Opzioni di rendering

Personalizza il rendering con varie opzioni:

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];

Conclusione.

La demo di PDF Viewer fornisce una solida base per integrare la funzionalità di visualizzazione PDF nelle tue applicazioni Delphi. Con PDFium VCL, hai accesso allo stesso motore di rendering PDF utilizzato da Google Chrome, garantendo una visualizzazione PDF di alta qualità e precisa.

Il componente gestisce automaticamente funzionalità PDF complesse come annotazioni, campi modulo e font incorporati, consentendoti di concentrarti sullo sviluppo delle funzionalità uniche della tua applicazione anziché sull'analisi PDF di basso livello.

Scarica PDFium VCL da loslab.com per iniziare lo sviluppo PDF in Delphi.