PDFium Component Docs

Esta página está localizada para Português de Portugal e mantém nomes de API, ficheiros e valores literais inalterados

Guia de início rápido

Este guia ajuda-o a começar a trabalhar com os componentes PDFium VCL em poucos minutos

Passo 1: Criar um novo projecto

  1. Crie uma nova aplicação VCL Forms no seu IDE
  2. Guarde o projecto numa localização conveniente

Passo 2: Adicionar componentes ao formulário

  1. Abra a paleta de componentes losLab
  2. Arraste um componente TPdf para o seu formulário
  3. Arraste um componente TPdfView para o seu formulário
  4. Defina a propriedade Pdf de TPdfView para apontar para o seu componente TPdf

Passo 3: Carregar o primeiro PDF

Carregamento simples de PDF:

// Carregue um ficheiro PDF
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));

// Ou carregue a partir de um fluxo 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;

Passo 4: Operações básicas em PDF

Navegar entre páginas

// Avance para a página seguinte
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

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

Extrair texto

// Extraia todo o texto da página actual
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

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

Pesquisar texto

// Localize texto no documento
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('search term');
  if Position >= 0 then
    ShowMessage('Encontrado na posição: ' + IntToStr(Position))
  else
    ShowMessage('Não encontrado');
end;

Criar um novo PDF

// Crie um novo PDF com texto
Pdf1.CreateDocument;
Pdf1.Compressed := True; // activar compressão de fluxos
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // tamanho A4
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Zoom e apresentação

// Defina o nível de zoom (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Defina o modo de apresentação
PdfView1.DisplayMode := dmSingleContinuous;

// Rode a página
PdfView1.Rotation := ro90;

Passo 5: Propriedades do documento

// Leia os metadados do documento
ShowMessage('Título: ' + Pdf1.Title);
ShowMessage('Autor: ' + Pdf1.Author);
ShowMessage('Criador: ' + Pdf1.Creator);
ShowMessage('Producer: ' + Pdf1.Producer);
ShowMessage('Páginas: ' + IntToStr(Pdf1.PageCount));
ShowMessage('Versão: ' + IntToStr(Ord(Pdf1.PdfVersion)));

Passo 6: Documentos protegidos por palavra-passe

// Abra um PDF protegido por palavra-passe
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Passo 7: Documentos grandes (carregamento em fluxo)

Para PDFs com vários GB ou origens remotas / suportadas por base de dados, use LoadCustomDocument para que o PDFium leia blocos sob pedido em vez de colocar o ficheiro inteiro na memória:

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

Passo 8: Disposição da página (modo FitMode de TPdfView)

FitMode mantém documentos longos enquadrados automaticamente em Resize e quando a página actual muda:

PdfView1.FitMode := pfmFitPage; // página inteira na área visível
// pfmFitWidth — a largura da página corresponde à largura da área visível
// pfmActualSize — 100%
// pfmNone — zoom manual

// Padrão de visualização em modo escuro: área de deslocamento escura, página PDF branca como papel
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Passo 9: Realce de pesquisa

HighlightSearchText pesquisa a página actual da vista e pinta uma máscara de HighlightColor sobre cada correspondência em cada redesenho:

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

// Mudar para uma página diferente limpa o realce automaticamente

Passo 10: Saída PDF/A para preservação

SaveAsPdfA pós-processa a gravação base com uma actualização incremental que injeta um fluxo de metadados XMP, um OutputIntent ICC sRGB e um catálogo de documento actualizado:

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

// Verifique a conformidade de um documento recebido
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Não é PDF/A');
end;

Passos seguintes