PDFium Component Docs

Guía de inicio rápido

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

Paso 1: Crear 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: Agregar los componentes a su formulario

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

Paso 3: Cargar su primer PDF

Carga simple de un PDF:

// Cargar un archivo PDF
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Páginas: ' + IntToStr(Pdf1.PageCount));

// O cargar desde un stream de 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 entre 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('Encontrado en la posición: ' + IntToStr(Position))
  else
    ShowMessage('No encontrado');
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 los 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 o respaldadas por bases de datos, utilice LoadCustomDocument para que PDFium obtenga los bloques bajo demanda en lugar de almacenar en búfer todo el archivo 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 (Modo de ajuste de TPdfView)

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

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

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

Paso 9: Resaltado de búsqueda

HighlightSearchText escanea la página de vista actual y pinta una máscara con HighlightColor sobre cada coincidencia en cada repintado:

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

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

Paso 10: Salida PDF/A de archivo

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('Guardado como PDF/A-1b');

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

Próximos pasos