Documentazione PDFiumPas

Guida di avvio rapido

Questa guida vi aiuterà a iniziare a utilizzare i componenti PDFium VCL in pochi minuti.

Passo 1: creare un nuovo progetto

  1. Creare una nuova VCL Forms Application nel proprio IDE
  2. Salvare il progetto in una posizione comoda

Passo 2: aggiungere componenti al form

  1. Aprire la palette dei componenti losLab
  2. Trascinare un componente TPdf sul form
  3. Trascinare un componente TPdfView sul form
  4. Impostare la proprietà Pdf del TPdfView in modo che punti al componente TPdf

Passo 3: caricare il primo PDF

Caricamento PDF semplice:

// Carica un file PDF
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pagine: ' + IntToStr(Pdf1.PageCount));

// Oppure carica da uno stream di memoria
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;

Passo 4: operazioni PDF di base

Navigare le pagine

// Vai alla pagina successiva
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Vai alla pagina precedente
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Estrarre testo

// Estrai tutto il testo dalla pagina corrente
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Estrai testo da un'area rettangolare
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Cercare testo

// Cerca testo nel documento
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('termine di ricerca');
  if Position >= 0 then
    ShowMessage('Trovato alla posizione: ' + IntToStr(Position))
  else
    ShowMessage('Non trovato');
end;

Creare un nuovo PDF

// Crea un nuovo PDF con testo
Pdf1.CreateDocument;
Pdf1.Compressed := True; // abilita la compressione degli stream
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // formato A4
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Zoom e visualizzazione

// Imposta il livello di zoom (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Imposta la modalità di visualizzazione
PdfView1.DisplayMode := dmSingleContinuous;

// Ruota la pagina
PdfView1.Rotation := ro90;

Passo 5: proprietà del documento

// Leggi i metadati del documento
ShowMessage('Titolo: ' + Pdf1.Title);
ShowMessage('Autore: ' + Pdf1.Author);
ShowMessage('Creator: ' + Pdf1.Creator);
ShowMessage('Producer: ' + Pdf1.Producer);
ShowMessage('Pagine: ' + IntToStr(Pdf1.PageCount));
ShowMessage('Versione: ' + IntToStr(Ord(Pdf1.PdfVersion)));

Passo 6: documenti protetti da password

// Apri un PDF protetto da password
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Passo 7: documenti di grandi dimensioni (caricamento in streaming)

Per PDF di più gigabyte o sorgenti remote / su database, utilizzare LoadCustomDocument in modo che PDFium recuperi i blocchi su richiesta invece di bufferizzare l'intero file in memoria:

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

Passo 8: layout della pagina (modalità di adattamento TPdfView)

FitMode mantiene i documenti lunghi inquadrati automaticamente al Resize e al cambio di pagina corrente:

PdfView1.FitMode := pfmFitPage; // pagina intera nel viewport
// pfmFitWidth — larghezza pagina corrispondente alla larghezza del viewport
// pfmActualSize — 100%
// pfmNone — zoom manuale

// Pattern visualizzatore in modalità scura: area di scorrimento scura, pagina PDF bianco-carta
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Passo 9: evidenziazione di ricerca

HighlightSearchText scansiona la pagina corrente del visualizzatore e dipinge una maschera HighlightColor su ogni corrispondenza a ogni ridisegno:

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

// Passare a una pagina diversa cancella automaticamente l'evidenziazione

Passo 10: output di archiviazione PDF/A

SaveAsPdfA post-elabora il salvataggio di base con un aggiornamento incrementale che inietta uno stream di metadati XMP, un OutputIntent ICC sRGB e un catalogo del documento aggiornato:

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

// Verifica la conformità di un documento in ingresso
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Non PDF/A');
end;

Prossimi passi