TPDFlibViewer
Viewer
Descrição
Esta página descreve o controlo TPDFlibViewer no PDFlibPas no âmbito do tópico "Viewer". Os nomes de API, parâmetros, nomes de classe, nomes de ficheiros e literais são mantidos exactamente como aparecem na biblioteca Delphi.
TPDFlibViewer (unidade Lib\PDFlibViewer.pas) é um controlo VCL com deslocamento que apresenta páginas PDF dentro da sua aplicação. Renderiza através do mesmo motor que TPDFlib utiliza (GDI+, Cairo ou PDFium, seguindo SelectRenderer na instância anexada).
Key Members
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 através da instância TPDFlib própria do controlo; AttachLibrary apresenta o documento seleccionado de uma instância gerida pelo chamador (este mantém a propriedade). Os modos de zoom são uma percentagem fixa (zmPercent através de SetZoomPercent), ajustar à largura (zmFitWidth, predefinição) e ajustar à página (zmFitPage); os modos de ajuste são recalculados automaticamente quando o controlo é redimensionado. A navegação fica limitada ao intervalo de páginas do documento e acciona OnPageChange apenas quando a página visível muda efectivamente. SetDisplayMode alterna entre apresentação de página única (dmSinglePage, predefinição) e deslocamento vertical contínuo por todo o documento (dmContinuous), onde apenas as páginas visíveis na janela de visualização são renderizadas e a página actual acompanha a posição de deslocamento. As páginas renderizadas são mantidas numa cache de mapa de bits por ordem de utilização menos recente (128 MB por predefinição, ajustável com SetCacheLimit), de modo a que o deslocamento para trás não implique nova renderização. A roda do rato desloca verticalmente; PageUp/PageDown, as teclas de seta, Home e End navegam entre páginas. As páginas adjacentes são pré-renderizadas num fio de execução em segundo plano, tornando a paginação instantânea. Clicar numa anotação de ligação acciona OnLinkClick com o número de página e o resumo de acção tipado (TPDFlibActionInfo: endereço web, destino de documento, acção nomeada e mais); LinkActionAtPagePoint expõe o teste de impacto directamente, recebendo coordenadas no mesmo espaço de utilizador que GetAnnotRectEx reporta. Arrastar com o botão esquerdo do rato selecciona texto (clicar numa ligação acciona a ligação); Ctrl+C ou CopySelectedText copia a selecção, e GetTextInRegion realiza a mesma pesquisa de região baseada em blocos programaticamente. O controlo complementar TPDFlibOutlineViewer apresenta a árvore de marcadores do documento junto ao visualizador: invoque o seu método AttachViewer com a instância do visualizador e clicar num marcador navega para a respectiva página de destino. TPDFlibSearchPanel anexa-se da mesma forma: RunSearch lista todas as ocorrências no documento com a respectiva página e texto correspondente, e clicar numa ocorrência salta para essa página. TPDFlibThumbnailBar completa a família com uma miniatura renderizada preguiçosamente de cada página; clicar numa miniatura navega para a mesma. Instale o pacote de tempo de execução Package\PDFlibViewerPkg.dpk para colocar o controlo a partir da paleta losLab PDF em tempo de concepção.