TPDFlibViewer

Peržiūros programa

Aprašas

Šiame puslapyje aprašomas TPDFlibViewer valdiklis PDFlibPas bibliotekoje, temoje „Peržiūros programa“. API pavadinimai, parametrai, klasių pavadinimai, failų pavadinimai ir literalai paliekami tiksliai tokie, kokie jie rodomi Delphi bibliotekoje.

TPDFlibViewer (modulis Lib\PDFlibViewer.pas) yra VCL slenkantis valdiklis, rodantis PDF puslapius jūsų programos viduje. Jis atvaizduoja naudodamas tą patį variklį, kurį naudoja TPDFlib (GDI+, Cairo arba PDFium, atsižvelgiant į SelectRenderer prijungtame egzemplioriuje).

Pagrindiniai nariai

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;

Pastabos

LoadFromFile atidaro dokumentą per paties valdiklio TPDFlib egzempliorių; AttachLibrary rodo pasirinktą dokumentą iš egzemplioriaus, kurį valdote patys (kviečiantysis išlaiko nuosavybę). Mastelio keitimo režimai yra fiksuotas procentas (zmPercent per SetZoomPercent), pritaikyti prie pločio (zmFitWidth, numatytasis) ir pritaikyti prie puslapio (zmFitPage); pritaikymo režimai automatiškai perskaičiuojami keičiant valdiklio dydį. Navigacija apribojama dokumento puslapių diapazonu ir iššaukia OnPageChange tik tada, kai matomas puslapis tikrai pasikeičia. SetDisplayMode perjungia tarp vieno puslapio rodymo (dmSinglePage, numatytasis) ir nuolatinio vertikalaus slinkimo per visą dokumentą (dmContinuous), kur atvaizduojami tik peržiūros srityje (viewport) matomi puslapiai, o dabartinis puslapis seka slinkties padėtį. Atvaizduoti puslapiai saugomi mažiausiai neseniai naudoto (least-recently-used) taškų žemėlapio talpykloje (numatytoji 128 MB, reguliuojama su SetCacheLimit), todėl slenkant atgal nereikia atvaizduoti iš naujo. Pelės ratukas slenka vertikaliai; PageUp/PageDown, rodyklių klavišai, Home ir End atlieka navigaciją. Gretimi puslapiai iš anksto atvaizduojami fono gijoje, todėl perėjimas tarp puslapių yra momentinis. Spustelėjus nuorodos anotaciją, iššaukiama OnLinkClick su puslapio numeriu ir tipizuota veiksmo santrauka (TPDFlibActionInfo: interneto adresas, dokumento paskirties vieta, įvardytas veiksmas ir kt.); LinkActionAtPagePoint tiesiogiai atskleidžia paspaudimo testą (hit test), priimant koordinates toje pačioje vartotojo erdvėje, apie kurią praneša GetAnnotRectEx. Vilkimas kairiuoju pelės mygtuku pasirenka tekstą (vietoj to spustelėjus nuorodą paleidžiama nuoroda); Ctrl+C arba CopySelectedText nukopijuoja pasirinkimą, o GetTextInRegion programiškai atlieka tą pačią blokais pagrįstą regiono paiešką. Papildomas valdiklis TPDFlibOutlineViewer rodo dokumento žymių medį šalia peržiūros programos: iškvieskite jo AttachViewer su peržiūros programos egzemplioriumi ir spustelėjus žymę pereinama į jos paskirties puslapį. TPDFlibSearchPanel prijungiamas tokiu pačiu būdu: RunSearch pateikia kiekvieną atitikmenį dokumente su jo puslapiu ir atitinkančiu tekstu, o spustelėjus atitikmenį pereinama į tą puslapį. TPDFlibThumbnailBar užbaigia šeimą tingiai atvaizduojama (lazily rendered) kiekvieno puslapio miniatiūra; spustelėjus miniatiūrą pereinama į ją. Įdiekite dizaino laiko paketą Package\PDFlibViewerPkg.dpk, kad projektavimo metu valdiklį patalpintumėte iš losLab PDF paletės puslapio.