Este guia ajudará você a começar a usar os componentes PDFium VCL em apenas alguns minutos.
Pdf do TPdfView para apontar para seu componente TPdfCarregamento Simples de PDF:
// Carregar um arquivo PDF
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Páginas: ' + IntToStr(Pdf1.PageCount));
// Ou carregar a partir de um stream de memória
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 para a próxima página
if PdfView1.PageNumber < Pdf1.PageCount then
PdfView1.PageNumber := PdfView1.PageNumber + 1;
// Ir para a página anterior
if PdfView1.PageNumber > 1 then
PdfView1.PageNumber := PdfView1.PageNumber - 1;
// Extrair todo o texto da página atual
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;
// Extrair texto de uma área retangular
var
RectText: WString;
begin
RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
ShowMessage(RectText);
end;
// Encontrar texto no documento
var
Position: Integer;
begin
Position := Pdf1.FindFirst('termo de pesquisa');
if Position >= 0 then
ShowMessage('Encontrado na posição: ' + IntToStr(Position))
else
ShowMessage('Não encontrado');
end;
// Criar um novo PDF com texto
Pdf1.CreateDocument;
Pdf1.Compressed := True; // habilitar compactação de stream
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // tamanho A4
Pdf1.AddText('Olá Mundo!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;
// Definir nível de zoom (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%
// Definir modo de exibição
PdfView1.DisplayMode := dmSingleContinuous;
// Rotacionar página
PdfView1.Rotation := ro90;
// Ler metadados do documento
ShowMessage('Título: ' + Pdf1.Title);
ShowMessage('Autor: ' + Pdf1.Author);
ShowMessage('Criador: ' + Pdf1.Creator);
ShowMessage('Produtor: ' + Pdf1.Producer);
ShowMessage('Páginas: ' + IntToStr(Pdf1.PageCount));
ShowMessage('Versão: ' + IntToStr(Ord(Pdf1.PdfVersion)));
// Abrir um PDF protegido por senha
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'minhasenha';
Pdf1.Active := True;
Para PDFs de vários GB ou fontes remotas / baseadas em banco de dados, use
LoadCustomDocument para que o PDFium puxe blocos sob demanda
em vez de armazenar todo o arquivo em memória:
var
FileStream: TFileStream;
begin
FileStream := TFileStream.Create('C:\Huge.pdf', fmOpenRead or fmShareDenyWrite);
Pdf1.LoadCustomDocument(FileStream, True); // AOwnsStream
Pdf1.Active := True;
end;
FitMode mantém documentos longos enquadrados automaticamente
em Resize e quando a página atual muda:
PdfView1.FitMode := pfmFitPage; // página inteira na viewport
// pfmFitWidth — largura da página corresponde à largura da viewport
// pfmActualSize — 100%
// pfmNone — zoom manual
// Padrão de visualizador em modo escuro: área de rolagem escura, página PDF branco-papel
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;
HighlightSearchText escaneia a página atual da visualização e
pinta uma máscara HighlightColor sobre cada correspondência a cada
redesenho:
var
MatchCount: Integer;
begin
PdfView1.HighlightColor := clYellow;
MatchCount := PdfView1.HighlightSearchText('fatura');
Status.Caption := IntToStr(MatchCount) + ' correspondências';
end;
// Mudar para uma página diferente limpa o destaque automaticamente
SaveAsPdfA pós-processa o salvamento base com uma
atualização incremental que injeta um stream de metadados XMP, um OutputIntent ICC sRGB
e um Catalog de documento atualizado:
if Pdf1.SaveAsPdfA('C:\Report.pdfa.pdf', pac1b) then
ShowMessage('Salvo como PDF/A-1b');
// Verificar a conformidade de um documento recebido
case Pdf1.PdfAConformance of
pac1b: Log.Add('PDF/A-1b');
pacNone: Log.Add('Não é PDF/A');
end;