PDFium Component Docs

Guía de inicio rápido

Esta guía le ayudará a empezar con los componentes PDFium VCL en cuestión de minutos.

Paso 1: cree un nuevo proyecto

  1. Cree una nueva aplicación VCL Forms en su IDE
  2. Guarde el proyecto en una ubicación conveniente

Paso 2: añada componentes a su formulario

  1. Abra la paleta de componentes losLab
  2. Suelte un componente TPdf sobre su formulario
  3. Suelte un componente TPdfView sobre su formulario
  4. Establezca la propiedad Pdf del TPdfView para que apunte a su componente TPdf

Paso 3: cargue su primer PDF

Carga sencilla de un PDF:

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

// O cargar desde un stream en 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;

Paso 4: operaciones básicas con PDF

Navegar por las páginas

// Ir a la página siguiente
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Ir a la página anterior
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Extraer texto

// Extraer todo el texto de la página actual
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Extraer texto de un área rectangular
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Buscar texto

// Buscar texto en el documento
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('search term');
  if Position >= 0 then
    ShowMessage('Found at position: ' + IntToStr(Position))
  else
    ShowMessage('Not found');
end;

Crear un nuevo PDF

// Crear un nuevo PDF con texto
Pdf1.CreateDocument;
Pdf1.Compressed := True; // habilitar compresión de streams
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // tamaño A4
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Zoom y visualización

// Establecer el nivel de zoom (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Establecer el modo de visualización
PdfView1.DisplayMode := dmSingleContinuous;

// Rotar la página
PdfView1.Rotation := ro90;

Paso 5: propiedades del documento

// Leer metadatos del documento
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)));

Paso 6: documentos protegidos con contraseña

// Abrir un PDF protegido con contraseña
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Paso 7: documentos grandes (carga en streaming)

Para PDF de varios GB o fuentes remotas / respaldadas por base de datos, utilice LoadCustomDocument para que PDFium obtenga bloques bajo demanda en lugar de bufferizar el fichero completo en memoria:

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

Paso 8: diseño de página (Fit Mode de TPdfView)

FitMode mantiene los documentos largos encuadrados automáticamente al redimensionar y cuando cambia la página actual:

PdfView1.FitMode := pfmFitPage; // página completa en el viewport
// pfmFitWidth — el ancho de la página coincide con el del viewport
// pfmActualSize — 100%
// pfmNone — zoom manual

// Patrón de visor en modo oscuro: área de scroll oscura, página PDF blanca como papel
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Paso 9: resaltado de búsqueda

HighlightSearchText explora la página de vista actual y pinta una máscara HighlightColor sobre cada coincidencia en cada redibujado:

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

// Cambiar a una página diferente borra el resaltado automáticamente

Paso 10: salida de archivo PDF/A

SaveAsPdfA postprocesa el guardado base con una actualización incremental que inyecta un stream de metadatos XMP, un OutputIntent ICC sRGB y un catálogo de documento actualizado:

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

// Comprobar la conformidad de un documento entrante
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

Próximos pasos