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 با یک مینیاتور تنبلرندرشده از هر صفحه، این خانواده را تکمیل میکند؛ با کلیک بر روی یک تصویر کوچک، به صفحه آن هدایت میشوید. برای قرار دادن کنترل از صفحه پالت PDF losLab در زمان طراحی، بسته زمان طراحی Package\PDFlibViewerPkg.dpk را نصب کنید.