TPDFlibViewer
Просмотрщик
Описание
Данная страница описывает элемент управления TPDFlibViewer в PDFlibPas в разделе «Просмотрщик». Имена API, параметры, имена классов, имена файлов и литеральные значения сохраняются в точном соответствии с библиотекой Delphi.
TPDFlibViewer (модуль Lib\PDFlibViewer.pas) — это VCL-элемент управления с прокруткой, отображающий страницы PDF внутри приложения. Отрисовка выполняется через тот же движок, который использует TPDFlib (GDI+, Cairo или PDFium, в соответствии с настройкой SelectRenderer на подключённом экземпляре).
Основные члены
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;Примечания
LoadFromFile открывает документ через собственный экземпляр TPDFlib элемента управления; AttachLibrary отображает выбранный документ экземпляра, которым управляет вызывающая сторона (владение остаётся за вызывающей стороной). Режимы масштабирования: фиксированный процент (zmPercent через SetZoomPercent), вписать по ширине (zmFitWidth, по умолчанию) и вписать на страницу (zmFitPage); режимы вписывания пересчитываются автоматически при изменении размеров элемента управления. Навигация ограничена диапазоном страниц документа и вызывает OnPageChange только при реальном изменении видимой страницы. SetDisplayMode переключает между отображением одной страницы (dmSinglePage, по умолчанию) и непрерывной вертикальной прокруткой всего документа (dmContinuous), при которой отрисовываются только страницы, видимые в области просмотра, а текущая страница следует за позицией прокрутки. Отрисованные страницы хранятся в кэше растровых изображений по принципу «вытеснения давно неиспользуемых» (128 МБ по умолчанию, регулируется через SetCacheLimit), поэтому прокрутка назад не требует повторной отрисовки. Колесо мыши прокручивает по вертикали; клавиши PageUp/PageDown, стрелки, Home и End обеспечивают навигацию. Соседние страницы отрисовываются заранее в фоновом потоке, что обеспечивает мгновенный переход между страницами. Нажатие на аннотацию-ссылку вызывает OnLinkClick с номером страницы и типизированной сводкой действия (TPDFlibActionInfo: веб-адрес, назначение в документе, именованное действие и другое); LinkActionAtPagePoint предоставляет прямой доступ к проверке попадания, принимая координаты в том же пространстве пользователя, которое сообщает GetAnnotRectEx. Перетаскивание левой кнопкой мыши выделяет текст (нажатие на ссылку вызывает ссылку, а не выделение); Ctrl+C или CopySelectedText копируют выделение, а GetTextInRegion выполняет аналогичный поиск по прямоугольной области программно. Сопутствующий элемент управления TPDFlibOutlineViewer отображает дерево закладок документа рядом с просмотрщиком: вызовите его AttachViewer с экземпляром просмотрщика — и нажатие на закладку выполнит переход к её целевой странице. TPDFlibSearchPanel подключается аналогичным образом: RunSearch выводит список всех совпадений в документе с указанием страницы и соответствующего текста, а нажатие на совпадение выполняет переход к этой странице. TPDFlibThumbnailBar дополняет набор панелью с отложенно отрисованными миниатюрами всех страниц; нажатие на миниатюру выполняет переход к ней. Установите пакет времени разработки Package\PDFlibViewerPkg.dpk, чтобы размещать элемент управления из палитры losLab PDF во время разработки в дизайнере форм.