TPDFlibViewer

Viewer

תיאור

דף זה מתעד את הפקד TPDFlibViewer ב-PDFlibPas תחת הנושא "Viewer". שמות ה-API, הפרמטרים, שמות המחלקות, שמות הקבצים והערכים המילוליים נשמרים בדיוק כפי שהם מופיעים בספריית Delphi

TPDFlibViewer (יחידה Lib\PDFlibViewer.pas) הוא פקד גלילה של VCL המציג דפי PDF בתוך היישום שלכם. הוא מעבד דרך אותו מנוע שבו משתמש TPDFlib (כלומר GDI+, Cairo או PDFium, בהתאם ל-SelectRenderer במופע המצורף).

חברים מרכזיים (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;

הערות

LoadFromFile פותח מסמך דרך המופע TPDFlib של הפקד עצמו; AttachLibrary מציג את המסמך הנבחר של מופע שאתם מנהלים בעצמכם (המתקשר שומר על הבעלות). מצבי התצוגה (Zoom) הם אחוז קבוע (zmPercent דרך SetZoomPercent), התאמה לרוחב (zmFitWidth, ברירת המחדל) והתאמה לדף (zmFitPage); מצבי התאמה מחושבים מחדש באופן אוטומטי כאשר הפקד משנה גודל. הניווט מקובע לטווח הדפים של המסמך ומפעיל את OnPageChange רק כאשר הדף הגלוי משתנה באמת. SetDisplayMode מחליף בין תצוגת דף בודד (dmSinglePage, ברירת המחדל) וגלילה אנכית רציפה דרך כל המסמך (dmContinuous), שבה רק הדפים הגלויים באזור התצוגה מעובדים והדף הנוכחי עוקב אחר מיקום הגלילה. דפים שעובדו נשמרים במטמון מפת סיביות מהפחות-בשימוש-לאחרונה (128 MB כברירת מחדל, ניתן לכוונון עם SetCacheLimit), כך שגלילה לאחור אינה דורשת עיבוד מחדש. גלגל העכבר גולל אנכית; PageUp/PageDown, מקשי החצים, Home ו-End מנווטים. דפים שכנים מעובדים מראש בתהליכון רקע כך שהדפדוף הוא מיידי. לחיצה על הערת קישור מפעילה את OnLinkClick עם מספר הדף ותקציר הפעולה המוקלד (TPDFlibActionInfo: כתובת אינטרנט, יעד מסמך, פעולה בשם ועוד); LinkActionAtPagePoint חושף את בדיקת הפגיעה (hit test) באופן ישיר, כשהוא לוקח קואורדינטות באותו מרחב משתמש ש-GetAnnotRectEx מדווח עליו. גרירה בעזרת הלחצן השמאלי של העכבר בוחרת טקסט (לחיצה על קישור מפעילה את הקישור במקום); Ctrl+C או CopySelectedText מעתיקים את הבחירה, ו-GetTextInRegion מבצע את אותו חיפוש אזור מבוסס בלוק באופן תכנותי. הפקד המלווה TPDFlibOutlineViewer מציג את עץ הסימניות של המסמך לצד המציג (Viewer): קראו ל-AttachViewer שלו עם מופע המציג, ולחיצה על סימנייה תנווט לדף היעד שלה. TPDFlibSearchPanel מתחבר באותה דרך: RunSearch מפרט כל פגיעה במסמך עם הדף והטקסט התואם שלה, ולחיצה על פגיעה קופצת לדף זה. TPDFlibThumbnailBar משלים את המשפחה עם תמונה ממוזערת המעובדת באופן עצל (lazily rendered) של כל דף; לחיצה על תמונה ממוזערת מנווטת אליה. התקינו את חבילת זמן העיצוב Package\PDFlibViewerPkg.dpk כדי למקם את הפקד מדף לוח הצבעים losLab PDF בזמן העיצוב.