Esta guía le ayudará a comenzar con los componentes PDFium VCL en cuestión de minutos.
Pdf del TPdfView para que apunte a su componente TPdfCarga 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;
// 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 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 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 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;
// 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;
// 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)));
// Abrir un PDF protegido con contraseña
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;
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;
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;
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
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;