TPDFlibViewer
Visualizador
Descrição
Esta página descreve o controle TPDFlibViewer no PDFlibPas dentro do tópico "Visualizador". Nomes de APIs, parâmetros, classes, arquivos e valores literais são preservados exatamente como aparecem na biblioteca Delphi
TPDFlibViewer (unidade Lib\PDFlibViewer.pas) é um controle VCL com rolagem que exibe páginas PDF dentro de sua aplicação. Ele renderiza pelo mesmo mecanismo que TPDFlib usa (GDI+, Cairo ou PDFium, seguindo SelectRenderer na instância anexada).
Membros principais
Function LoadFromFile(Const FileName, Password: WideString): Integer;
Procedure AttachLibrary(ALib: TPDFlib);
Procedure CloseDocument;
Function PageCount: Integer;
Function GoToPage(NewPage: Integer): Integer;
Function NextPage: Integer;
Function PrevPage: Integer;
Procedure SetZoomPercent(Percent: Double);
Procedure SetZoomMode(Mode: TPDFlibViewerZoomMode);
Procedure SetDisplayMode(Mode: TPDFlibViewerDisplayMode);
Procedure SetCacheLimit(MegaBytes: Integer);
Procedure RefreshPage;
Function LinkActionAtPagePoint(APage: Integer; XPos, YPos: Double; Out Info: TPDFlibActionInfo): Integer;
Function GetTextInRegion(APage: Integer; XPos, YPos, RWidth, RHeight: Double): WideString;
Function CopySelectedText: Integer;
Property SelectedText: WideString;
Property Page: Integer;
Property DisplayMode: TPDFlibViewerDisplayMode;
Property OnPageChange: TPDFlibViewerPageChange;
Property OnLinkClick: TPDFlibViewerLinkClick;Observações
LoadFromFile abre um documento pela própria instância TPDFlib do controle; AttachLibrary exibe o documento selecionado de uma instância que você gerencia (o chamador mantém a posse). Os modos de zoom são uma porcentagem fixa (zmPercent via SetZoomPercent), ajustar à largura (zmFitWidth, o padrão) e ajustar à página (zmFitPage); os modos de ajuste recalculam automaticamente quando o controle é redimensionado. A navegação é limitada ao intervalo de páginas do documento e dispara OnPageChange apenas quando a página visível realmente muda. SetDisplayMode alterna entre exibição de página única (dmSinglePage, o padrão) e rolagem vertical contínua por todo o documento (dmContinuous), onde apenas as páginas visíveis na área de exibição são renderizadas e a página atual acompanha a posição de rolagem. As páginas renderizadas são mantidas em um cache de bitmap por uso menos recente (128 MB por padrão, ajustável com SetCacheLimit), portanto rolar de volta não renderiza novamente. A roda do mouse rola verticalmente; PageUp/PageDown, as teclas de seta, Home e End navegam. As páginas vizinhas são pré-renderizadas em um thread em segundo plano, tornando a paginação instantânea. Clicar em uma anotação de link dispara OnLinkClick com o número da página e o resumo de ação tipada (TPDFlibActionInfo: endereço web, destino de documento, ação nomeada e mais); LinkActionAtPagePoint expõe o teste de acerto diretamente, tomando coordenadas no mesmo espaço do usuário que GetAnnotRectEx reporta. Arrastar com o botão esquerdo do mouse seleciona texto (um clique em um link dispara o link); Ctrl+C ou CopySelectedText copia a seleção, e GetTextInRegion realiza a mesma pesquisa de região baseada em bloco programaticamente. O controle complementar TPDFlibOutlineViewer exibe a árvore de marcadores do documento ao lado do visualizador: chame seu AttachViewer com a instância do visualizador e clicar em um marcador navega para a página de destino correspondente. TPDFlibSearchPanel se anexa da mesma forma: RunSearch lista cada ocorrência no documento com sua página e texto correspondente, e clicar em uma ocorrência vai para essa página. TPDFlibThumbnailBar completa a família com uma miniatura renderizada de forma lazy de cada página; clicar em uma miniatura navega para ela. Instale o pacote de design Package\PDFlibViewerPkg.dpk para colocar o controle a partir da página de paleta losLab PDF em tempo de design.