רכיבי ליבה
- TPdf - הרכיב הראשי לטיפול במסמכי PDF לצורך פתיחה, ניווט, חילוץ טקסט ועריכת מסמכי PDF
- TPdfView - רכיב חזותי להצגה ולאינטראקציה עם דפי PDF
- TPdfReadingSession - רכיב תזמור להקראה בקול עבור מנועי TTS של המארח ומעקב אחר מילים ב-TPdfView
- TPdfThumbnailView - חלונית צד עם תמונות ממוזערות הניתנת לגלילה לניווט בין דפים
פעולות מסמך
- טעינת מסמך - טוען קובצי PDF מהדיסק, מזרמי זיכרון, ממערכי בתים או ממותאמי TStream לפי דרישה דרך
LoadCustomDocument. PDFium קורא מקטעים לפי דרישה, כך שמסמכי ענק ומקורות מרוחקים או מבוססי מסד נתונים אינם זקוקים לעותק מלא בזיכרון מראש- הגנת סיסמה - פותח מסמכי PDF המוגנים בסיסמה ומדווח על
UserPermissionsהאפקטיביים של ההפעלה המאומתת- יצירת מסמך - בונה מסמכי PDF חדשים מאפס בעזרת
CreateDocument,AddPage,AddText,AddImage,AddPicture,AddJpegImage, ו-CreatePath- שמירת מסמך - שומר מסמכים שעברו שינוי עם אפשרויות שונות, כולל שמירה אינקרמנטלית והסרת אבטחה, ועם גרסאות יעד מפורשות של PDF מ-PDF 1.0 ועד PDF 1.7
- פלט PDF/A-1b -
SaveAsPdfA/SaveAsPdfAToStreamמבצעים עיבוד לאחר השמירה הבסיסית באמצעות עדכון אינקרמנטלי שמחדיר זרם מטא-נתונים XMP, OutputIntent מסוג sRGB ICC, ו-catalog מעודכן של המסמך כך שהתוצאה תואמת PDF/A-1b. פרופילי ICC מותאמים נתמכים דרךTPdfASaveOptions.IccProfileData- אימות PDF/A -
ValidatePdfAוהמאפיין לקריאה בלבדPdfAConformanceסורקים מסמך פתוח אחר סמני XMP שלpdfaid, OutputIntent עם ICC מוטמע, נוכחות הצפנה, ומדווחים על רמת התאימות (pac1a,pac1b,pac2b,pac3b,pacNone, אוpacUnknown) יחד עם רשימה שלTPdfAValidationIssueהמתארת כל בעיה שנמצאה- מאמת תאימות לגרסת PDF - כאשר SaveAs מכוון ל-PDF 1.0 עד PDF 1.7, הכותב דוחה כל ערך מילון, מסנן, תת-סוג הערה, סוג פעולה, גופן, מרחב צבע או פרמטר הצפנה שנוספו אחרי גרסת היעד שנבחרה, למשל JBIG2Decode, MarkInfo, OutputIntents, AES / AES-256, הערות Polygon / Caret / Watermark / Redact, ופעולות JavaScript / Trans / SetState
- דחיסת זרמים - דחיסת FlateDecode אוטומטית מבטיחה שכל זרמי ה-PDF יהיו דחוסים באופן מיטבי בעת השמירה; קבע
Compressed := Falseכדי לוותר עליה בצינורות ניפוי שגיאות- מיזוג מסמכים - מייבא דפים ממסמכי PDF אחרים
- ייבוא תת-קבוצת דפים -
ImportPagesByIndexמעתיק מערך אינדקסים מפורש מבוסס-אפס ממסמך מקור, עם InsertAt = 0 כדי להכניס לפני עמוד 1 או InsertAt = PageCount כדי לצרף בסוף. העברת מערך אינדקסים ריק מייבאת כל עמוד מקור- הרכבת N-up -
ImportNPagesToOneמחזירTPdfחדש לגמרי, שבו העמודים הם קומפוזיציות NumX×NumY של עמודי מסמך המקור, בגודל יחידות המשתמש של PDF (1 unit = 1/72 in)- סידור מחדש של עמודים -
MovePagesמסדר מחדש עמודים במקום באמצעות מערך אינדקסים מבוסס-אפס ואינדקס יעד עבור העמוד הראשון שהועבר- שימוש חוזר בעמודי Form XObject -
CreateXObjectFromPageיוצר ידיתTPdfXObjectלשימוש חוזר מכל עמוד במסמך אחר;InsertFormObjectFromXObjectמוסיף עותק אחד של העמוד העטוף אל העמוד הנוכחי. אידיאלי לסימני מים, שכבות תבנית וזרימות עבודה של "הטבעת עמוד אחד על רבים". אפשר למקם, להגדיל ולסובב את אובייקט העמוד היעד באמצעותFPDFPageObj_SetMatrixועזריTPdfMatrix- ניהול עמודים - הוספה, מחיקה ופעולות על עמודים בודדים;
AddPage(0, ...)מוסיף את העמוד הראשון ממש ומפעיל אותו מיד- תיבות עמוד - קריאה וכתיבה של MediaBox, CropBox, BleedBox, TrimBox ו-ArtBox בעמוד הנוכחי
- שפת הקטלוג - קריאה וכתיבה של שפת המסמך המאוחסנת בפריט /Lang של ה-catalog
- מזהי קובץ Trailer - קריאה של רשומות trailer /ID קבועות ומשתנות כבתים בינאריים
- פעולות JavaScript של המסמך - מונה שמות ותסריטים של פעולות JavaScript ברמת המסמך
- עץ מבנה של Tagged PDF - בודק רכיבי מבנה לוגי, טקסט נגישות, שפה, מזהי marked-content והיררכיה עבור דפי Tagged PDF
- העדפות מציג - קורא את
PrintCopies,PrintPageRanges,PrintScaling, ו-PrintPaperHandlingממילון העדפות המציג של המסמך; PDFים שנשמרו נפתחים כברירת מחדל בפעולת פתיחה ראשונית של Fit Height
פעולות טקסט
- חילוץ טקסט - מחלץ טקסט מדפי PDF בדיוק ברמת תו באמצעות המאפיינים
Text,TextInRectangle,Character,CharacterRectangleו-CharacterOriginהממוספרים- יחידות קריאה ברמת משפט -
TPdf.ReadingUnits,TPdf.DocumentReadingUnits,TPdfView.ReadingUnitsו-BuildReadingUnitsחושפים רשומותTPdfReadingUnitבגודל של משפט עבור קריאת TTS מסונכרנת- הדגשת קריאה ברמת מילה -
TPdf.PageWordBoxes,TPdfView.PageWordBoxes,BuildWordBoxes,WordBoxIndexAtCharIndex,TPdfView.SelectWordBox,TPdfView.SelectWordSpan,TPdfView.TrackReadingWordAt,TPdfView.SetReadingWord,TPdfView.ClearReadingWord,ReadingWordColor,ReadingWordFollowממפים היסט תו בעמוד אלTPdfWordBoxהמכיל אותו, מדגישים אותו ומחזירים את אינדקס המילה; מדגישיםTPdfWordBoxאחד כמילה המדוברת הנוכחית ב-TPdfView; מנקים את שכבת-העל של סמן הקריאה ברמת המילה ב-TPdfView; שולטים בצבע שכבת-העל של סמן הקריאה ברמת המילה; ושולטים בשאלה האםTPdfViewיגלול את המילה המדוברת הנוכחית לתצוגה בזמן מעקב אחר הקריאה- תזמור סשן הקראה -
TPdfReadingSession,TPdfSpokenText,SpokenTextAppend,BuildSpokenTextFromWords,SpokenToPageChar, ו-EstimateSpokenWordIndexמתאמים מנועי TTS של המארח, מקטעי דיבור, קריאות חזרה על מיקום מילים, קצב מוערך, טיפול בהשהיה/חידוש, ועדכוני סמן המילה שלTPdfView- חיפוש טקסט - מחפש טקסט עם אפשרויות חיפוש תלויות/בלתי תלויות רישיות, מילה שלמה ורצף באמצעות
FindFirst,FindNext,FindPrevious- שכבת-הדגשה לחיפוש -
TPdfView.HighlightSearchTextסורק את עמוד התצוגה הנוכחי ומצייר בכל רענון מחדש שכבת-על אמיתית עם ערבוב alpha שלHighlightColorמעל כל התאמה, ומחזיר את מספר ההתאמות.ClearHighlightמסיר את השכבה; מעבר לעמוד אחר מנקה אותה אוטומטית משום שההתאמות הן לפי עמוד.HighlightColorהוא ברירת המחדלclYellowוהוא פורסם כך שאפליקציות יוכלו להתאים את המראה שלו- מאפייני תווים - גישה לגודל הגופן, המשקל, הזווית והמיקום של תווים בודדים באמצעות המאפיינים הממוספרים
CharacterAngle,CharacterFontSize,CharacterFontWeight,CharacterGenerated,CharacterIsHyphen, ו-CharacterMapError- תמיכה בתווים אירופיים -
AddTextטוען ומטמון אוטומטית את גופן TrueType התואם של המערכת לפני יצירת אובייקט טקסט, כך שתווים עם סימני דיאקריטיקה בצ'כית, צרפתית, גרמנית, ספרדית, פורטוגזית, פולנית וטורקית, שגופני הסטנדרט המובנים של PDFium אינם יכולים לייצג, מוצגים כעת כהלכה ללא שינוי קוד- הוספת טקסט - מוסיף טקסט חדש לדפי PDF עם גופנים, צבעים, שקיפות וסיבוב מותאמים
- מיקום אובייקט טקסט - קובע מיקומים לכל תו עבור אובייקטי טקסט קיימים באמצעות
SetTextPositionsו-TPdfSingleArray- מידע על גופן - מאחזר מאפייני גופן כולל שם המשפחה, מצב ההטמעה, זווית נטויה, ascent / descent ונתוני הגופן הגולמיים ברמת אובייקט עמוד
תמיכה בהערות
- סוגי הערות - תמיכה בהערות טקסט, קישור, הדגשה, קו תחתון, קו חוצה וסוגי הערות רבים אחרים
- יצירת הערות - יוצר הערות חדשות באופן תכנותי
- עריכת הערות - משנה מאפייני הערות קיימים, כולל צבע, שקיפות ותוכן
- הערות קישור - מטפל בקישורים פנימיים וחיצוניים עם תמיכה בפעולות
תמיכה בטפסים
- עזרי מילוי טפסים בקול -
FocusedFormFieldValue,FocusedFormFieldNameו-FocusedFormFieldDetailsב-TPdfוב-TPdfViewחושפים את ערך שדה הטופס הלוגי הנוכחי, את שמו ואתTPdfFormFieldInfoעבור מילוי טפסים באמצעות מקלדת או קול- סוגי טפסים - תמיכה בטפסי AcroForm ובטפסי XFA
- מילוי טפסים - מילוי טפסים אינטראקטיבי עם תמיכה ב-JavaScript
- בחירת DLL של V8 - קבע
EnableV8Engineלפני הטעינה כדי להשתמש ב-pdfium.v8.dllמתוך התיקייה התואמתDLLs\Win32אוDLLs\Win64, ובדוק את זמינות עזרי V8/XFA דרךV8FeaturesAvailable,XfaBStrHelpersAvailable, ו-GetRecommendedV8Flags- גישה לשדות - קורא וכותב ערכי שדות טופס לפי אינדקס או מיקום
- מידע על שדות - ניגש לסוג השדה, לדגלים, לשם ולמאפיינים אחרים
- דגלי שדה - מעדכן דגלי שדות AcroForm לפי אינדקס או מיקום דרך
SetFormFieldFlags/SetFormFieldFlagsAt, כולל דגלים של קריאה בלבד, נדרש, סיסמה וריבוי בחירה- השטחת טפסים -
GenerateFormAppearancesיוצר מחדש את זרם המראה /AP עבור כל רכיב טופס בכל עמוד, ו-FlattenPage/FlattenAllPagesאופים הערות ושדות טופס לתוכן עמוד סטטי שאינו ניתן לעריכה- בחירת טקסט ברכיב טופס וביטול / ביצוע מחדש - על רכיב AcroForm שבפוקוס, התצוגה חושפת את
GetSelectedFormText(הטקסט שנבחר כרגע),SelectAllFormText(בחירת כל תו), ו-FormUndo/FormRedo/FormCanUndo/FormCanRedo(מפעילים את היסטוריית העריכה לכל רכיב של PDFium). כל השישה יוצאים בבטחה כאשר התצוגה אינה פעילה או שאין רכיב שבפוקוס
פעולות תמונה
- חילוץ תמונות - מחלץ מפות סיביות מדפי PDF באמצעות המאפיין הממוספר
Bitmap; איטרציה עלBitmapCountכדי לשמור כל תמונה לדיסק- החדרת JPEG -
AddJpegImageמקבלTStreamשל בתים גולמיים של JPEG ומטמיע את התמונה כ-XObject מסוג /DCTDecode ללא קידוד מחדש- תמיכה ב-Picture -
AddPictureמקבל אובייקטTPictureעם המרת פורמט אוטומטית דרך מחלקות הגרפיקה הרשומות של VCL/LCL- החדרת תמונה ישירה -
AddImage(FileName)מזהה כל פורמט הרשום ביחידות הגרפיקה של VCL או LCL (BMP, PNG דרך PngImage, JPG, ...) ומשתף את צינור העבודה של AddPicture.AddImage(TBitmap)מדלג על שכבת הביניים של TPicture, מה שמפשט קריאות שכבר מחזיקות TBitmap מעבודת רינדור או יצירה אצווה- פרופיל ICC של תמונה - אובייקטי עמוד של תמונה חושפים את נתוני פרופיל ה-ICC המוטמעים שלהם כאשר הם קיימים, עם מיפוי עבור
FPDFImageObj_GetIccProfileDataDecoded- יצירת תמונות ממוזערות - יוצר מפות סיביות ממוזערות של העמוד הנוכחי דרך המאפיין
Thumbnailאו מעבד כל עמוד מבוסס-אחת דרךTPdf.RenderPageThumbnailבלי לשנות אתPageNumber
יחידות עזר
- תשתית אסינכרונית -
FPdfAsyncחושף אתIPdfCancellationToken/IPdfCancellationTokenSourceעבור סמנטיקה שיתופית של ביטול מתוך ה-UI, singleton לשימוש חוזרPdfNoCancellationToken, ועזר קל משקלTPdfFuture<T>שמריץ worker על thread ברקע ושולח מעטפתTPdfFutureResult<T>חזרה ל-thread הראשי, תוך הבחנה בין הצלחה, ביטול וכשל- מתאם זרם -
TPdfStreamAdapterמגשר ביןTStreamשל Pascal לבין הקריאות החוזרותFPDF_FILEACCESSשל PDFium כך ש-LoadCustomDocumentקורא מקטעים לפי דרישה במקום לאגור את כל ה-PDF בזיכרון- הרכבת מטריצה -
FPdfMatrixעוטף אתFS_MATRIXשל PDFium עם API מונחה-עצמים עבורTranslate,Scale,Rotate,HorizontalFlip,VerticalFlip,CentralFlip,Skew, ו-Multiply. Multiplyשומר תמונת מצב של ששת רכיבי המטריצה לפני חישוב ערכי השורה החדשים, וכך נמנע ממלכודת של מימוש Pascal חלופי שבה רכיבים מוקדמים נדרסים במהלך אותה קריאה ונוצרים צירופים שגויים- רינדור הדרגתי שניתן לביטול -
TPdf.RenderPageProgressiveמפעיל את הלולאהFPDF_RenderPageBitmap_Start+RenderPage_Continueשל PDFium, וסוקרIPdfCancellationTokenבין איטרציות דרך הקריאה החוזרתIFSDK_PAUSE, כך שרינדורים ארוכים ובעלי DPI גבוה יכולים להיעצר באמצע העמוד במקום להיחסם עד להשלמה. מחזירTPdfProgressiveStatusשלprsDone,prsCancelled, אוprsFailed- מסלול רינדור ללא העתקה -
RenderPage/RenderTile/RenderPageProgressiveכותבים את פלט PDFium ישירות אל מאגר ה-DIB שלTBitmapהיעד במקום לעבור דרך מאגר פנימי, וכך חוסכים העתקת זיכרון אחת של width × height × 4 bytes בכל רינדור - בולט במיוחד ב-DPI גבוה, למשל בחלוניות תמונות ממוזערות, בייצוא באיכות הדפסה ובייצוא אצווה. נתיב חלופי לכל שורת סריקה נשמר כאשר אי אפשר לעטוף את ה-DIB של היעד בבטחה- שינויי מפה סיביות לנגישות ראייה -
InvertPdfBitmap,GrayscalePdfBitmapו-DuotonePdfBitmapמשנים במקום את פיקסלי ה-32-bit שלTBitmapשעבר רינדור עבור תצוגות הפוכות, בגווני אפור או דו-צבעיות לנגישות ראייה- תצוגת נגישות ראייה חיה -
TPdfView.Optionsתומך ב-reInvertוב-reNightDuotone, כאשרNightDuotoneInkו-NightDuotonePaperשולטים בפלטת הלילה החיה לפני ציור שכבות-על
פעולות ציור
- שרטוט נתיבים - יוצר נתיבים עם קווים, עקומות Bezier וצורות סגורות
- הסרת אובייקטים - מסיר אובייקטי עמוד ומייצר מחדש את תוכן העמוד מתוך
TPdfאוTPdfView- מילוי וקו מתאר - מגדיר מצב מילוי, צבעים, שקיפות ומאפייני קו מתאר
- מצבי מיזוג - תמיכה במצבי מיזוג שונים של PDF
- סגנונות קו - מגדיר קצה קו, חיבור קו ורוחב קו
חתימות דיגיטליות
- זיהוי חתימות - מזהה ומונה חתימות דיגיטליות במסמכי PDF
- מידע חתימה - ניגש לתוכן החתימה, לטווח הבתים, ל-sub-filter, לסיבה ולזמן
- הרשאות MDP - שואל את הרשאות גילוי ומניעת שינויי מסמך
תמיכה בקבצים מצורפים
- גישה לקבצים מצורפים - קורא, יוצר, משנה ומוחק קבצים מצורפים מוטמעים
- שמות קבצים מצורפים - ניגש לשמות הקבצים של הקבצים המצורפים
- סוגי קבצים מצורפים - קורא ערכי תת-סוג MIME של קובץ מוטמע כאשר הם קיימים
- סימניות - מנווט בסימניות המסמך עם תמיכה היררכית דרך מערך
Bookmarks, BookmarkChildren, HasBookmarkChildrenו-BookmarkFrom- יעדים בעלי שם - ניגש ליעדים בעלי שם לפי אינדקס או שם דרך
Destination,DestinationByNameו-DestinationCount- תוויות עמוד - מאחזר תוויות עמוד לכל דף דרך
PageLabel; שימושי כאשר מסמכים משתמשים בספרות רומיות לחלקי פתיחה- קישורי רשת - מזהה ומנווט בקישורי אינטרנט על עמודים באמצעות
WebLink,WebLinkCountו-TPdfView.WebLinkAtPos- הערות קישור - ניגש להערות קישור עם מידע על פעולה ויעד דרך
LinkAnnotation,LinkAnnotationCountו-TPdfView.LinkAnnotationAtPos- טיפול בטוח בלחיצות קישור -
TPdfViewמרים אירועיםOnAnnotationLinkClick/OnWebLinkClickלפני טיפול אוטומטי ב-goto / URI, כאשר פעולות launch מושבתות כברירת מחדל. זיהוי לחיצות קישור פועל רק כאשר המחווה היא לחיצה ולא גרירה, תוך שימוש בעוגן MouseDown חדש כך שמחוות הזזה עדיין ממשיכות דרך נתיב הגלילה הקיים ללא שינוי
רינדור
- רינדור באיכות גבוהה - מעבד דפים ל-device context, bitmap או tile דרך
RenderPage/RenderTile, עם כתיבה ישירה ללא העתקה אל מאגר ה-DIB של היעד- רינדור הדרגתי שניתן לביטול -
RenderPageProgressiveמפעיל את הלולאה ההדרגתית של PDFium וסוקר אתIPdfCancellationTokenבין איטרציות, ומחזירprsDone,prsCancelled, אוprsFailed. המפה הסיבית שומרת את העבודה החלקית שבוצעה עד כה כאשר הפעולה מבוטלת- אפשרויות רינדור - אופטימיזציית טקסט LCD (
reLcd), הערות (reAnnotations), גווני אפור ודגלי מצב הדפסה- Hooks של Skia - כריכות ברמה נמוכה של
FPDF_RenderPageSkiaו-FPDF_FFLDrawSkiaזמינות כאשר הקוראים מספקים SkCanvas חיצוני, בהתאם לייצואי ה-DLL המצורפים- בחירת מצב הדפסה - קובע מצבי הדפסה של PDFium מסוג EMF, טקסט בלבד, PostScript, pass-through, image-mask ו-Type 42 באמצעות
SetPdfPrintModeעםTPdfPrintMode- שכבת-על אסינכרונית -
TPdfViewיכול להציג שכבת טעינה אופציונלית בזמן שעובדים שבבעלות האפליקציה מרנדרים עם מופעיTPdfנפרדים- סיבוב עמוד - תמיכה בסיבוב של 0, 90, 180 ו-270 מעלות (
ro0,ro90,ro180,ro270)- זיהוי שקיפות - המאפיין
Transparentמדווח אם לאובייקט כלשהו בעמוד הנוכחי יש שקיפות, כולל מצבי מיזוג ו-alpha חלקי
תצוגה (TPdfView)
- מצבי תצוגה -
dmSingleContinuous,dmTwoPageContinuous, ו-dmTwoPageContinuousWithCover(עמוד הכריכה עומד לבדו, ואז ממשיכים בפריסות של שני עמודים). העזר ברמת היחידהComputeSpreadPagesחושף את המתמטיקה של עמודי פריסה בלי ליצור מציג- מצב התאמה -
FitModeקובע כיצד העמוד יושב ב-viewport: pfmNone(זום ידני),pfmActualSize(100%),pfmFitPage(כל העמוד נכנס ל-viewport), ו-pfmFitWidth(רוחב העמוד תואם לרוחב ה-viewport). מצב ההתאמה הפעיל מוחל שוב אוטומטית ב-Resize וכאשר העמוד הנוכחי משתנה; קביעה ישירה של Zoom מבטלת את מצב ההתאמה הפעיל (FitMode חוזר ל-pfmNone), בהתאם למוסכמה הרגילה של מציגי PDF- בקרת זום - זום משתנה עם עזרי דף-לפי-דף
PageZoom,PageWidthZoom,PageHeightZoomו-ActualSizeZoom- צבע עמוד -
PageColorמנתק את רקע עמוד ה-PDF המרונדר מ-Colorשל הפקד שמסביבו. ברירת המחדל היאclWhite, כך שעמודי PDF מוצגים כעת בלובן של נייר בלי קשר לערכת הנושא של האפליקציה המארחת. מציגים במצב כהה יכולים להשאיר את אזור הגלילה כהה בזמן שעמוד ה-PDF עצמו נשאר לבן, או בכל צבע שהאפליקציה בוחרת- בחירת טקסט אינטראקטיבית - משתמש הקצה יכול לגרור כדי לבחור טקסט בעמודי PDF, כאשר hit-test מחליף אוטומטית בין בחירה והזזה: לחיצה על תו מתחילה גרירת בחירה, לחיצה על שטח לבן מבצעת pan. לחיצה כפולה בוחרת מילה, לחיצה משולשת בוחרת שורה,
Ctrl+Aבוחר את העמוד (את שני העמודים במצב spread), Ctrl+Cמעתיק כ-CF_UNICODETEXT, Shift+arrowsמרחיב בחירה, ריחוף מעל טקסט מחליף את הסמן ל-crIBeam, וגרירה אל קצה המציג גוללת את העמוד אוטומטית.SelectionColorו-OnSelectionChangeחדשים ופורסמו; גםHasSelection,SelectedText,SelectionCharCount,ClearSelection,SelectAll,CopySelectionToClipboardחדשים וגלויים לציבור. מצבי תצוגה מסוג Spread בוחרים על פני שני העמודים הגלויים עם חיבור CR/LF. תפריט Copy ברירת מחדל בלחיצה ימנית מצורף אוטומטית כאשר המארח לא הגדירPopupMenuמשלו. מוגן על ידי הדגל v1.17.0AllowUserTextSelectionעבור מארחי קיוסק- מיפוי קואורדינטות - ממיר בין קואורדינטות מכשיר של המציג לבין קואורדינטות של עמוד PDF באמצעות
DeviceToPage/PageToDevice, כולל overloads שמקבליםTRectומחזיריםTPdfRectangle- בחירת טקסט ובדיקת פגיעה - מאתר תווים מתחת לנקודות המציג ומצייר הדגשות בחירת טקסט באמצעות
CharacterIndexAtPosו-PaintSelection- עכבר ומקלדת - תמיכה מלאה בהתקני קלט עם גלילת גרירה בעכבר, קיצורי
PgUp/PgDn/Ctrl+Home/Ctrl+End, וניווט עמוד למעלה / עמוד למטה בעזרת הגלגלת. Ctrl+wheelשמור לזום של האפליקציה ומדלגים עליו ב-handler של הניווט- נעילת קלט משתמש -
AllowUserPageChangeשולט בקיצורי מקלדת לדפדוף עמודים,ChangePageOnMouseScrollingשולט בקפיצות עמוד באמצעות הגלגלת, ו-AllowUserTextSelectionשולט בקלט בחירת טקסט בעכבר / מקלדת. שלושתם מוגדרים ל-True כברירת מחדל; החלף אותם ל-False כדי לנעול קיוסקים, חלוניות תצוגה מקדימה או הטמעות לקריאה בלבד בלי להגדיר מחלקת משנה- שכבת-על לרינדור אסינכרוני -
AsyncRendering,LoadingTextו-LoadingColorמציירים מחוון קטן "טוען" מעל העמוד המרונדר, כך שאפליקציות שמשתמשות ב-worker משלהן לרינדורים ארוכים יקבלו רמז חזותי עקבי. ברירות המחדל שומרות על ההתנהגות הקיימת.TPdfכעת מסדר באופן טורי קריאות לרינדור ולשחרור עמוד לכל מופע; האפליקציה עדיין אחראית על שליחת ה-worker וצריכה להימנע משינוי המסמך בזמן שרינדור מתבצע- טיפול בטוח בלחיצות קישור -
LinkOptionsהוא set שפורסם ושולט בהתנהגות האוטומטית עבור ארבעת סוגי פעולות הקישור של PDF:loAutoGoto(קפיצה לעמוד),loAutoOpenURI(ShellExecute),loAutoLaunch(ShellExecute), ו-loAutoEmbeddedGoto(שמורה). ברירת המחדל מפעילה רק אתloAutoGotoואתloAutoOpenURI; loAutoLaunchו-loAutoEmbeddedGotoנשארים כבויים כך שלחיצה מקרית לא תוכל להריץ תוכנית שרירותית. OnAnnotationLinkClickו-OnWebLinkClickנורים לפני כל פעולה אוטומטית ומאפשרים לאפליקציה לסמן את האירוע כ-Handled או להפנות אותו מחדש- אינטראקציה עם טפסים - עריכת טפסים אינטראקטיבית בתוך המציג, יחד עם עזרי הבחירה / Undo / Redo של v1.23.0
- עיצוב חזותי -
PageShadowSize,PageShadowColorו-PageBorderColorמציירים צל נופל אופציונלי מתחת למלבן העמוד ומסגרת של פיקסל אחד סביבו; SmoothScrollכעת מחייה פקודות של פסי גלילה לעמוד/שורה במקטעים מונעי טיימר בעוד מעקב אחר הידית נשאר מיידי- ניווט באמצעות תמונות ממוזערות -
TPdfThumbnailView(היחידהFPdfThumbnail) מציג תמונה ממוזערת אחת לכל עמוד בשורה, בחלונית צד ניתנת לגלילה עם הדגשת ריחוף ובחירה לצד ניווט בלחיצה לעמוד. מיועד לשבת לצדTPdfView. מאפיינים:CurrentPageIndex,ThumbnailWidth,ThumbnailHeight,TextColor,HoverColor,SelectionColor,BorderColor; אירוע:OnPageClick
דחיסה
- דחיסה אוטומטית - כאשר המאפיין
Compressedהוא True (ברירת מחדל), כל זרמי ה-PDF מובטחים כדחוסים ב-FlateDecode בעת השמירה- עיבוד לאחר השמירה - מנוע הדחיסה סורק את נתוני ה-PDF שנשמרו ודוחס כל זרם שאינו דחוס באמצעות דחיסת zlib מרבית
- בניית Cross-Reference מחדש - בונה מחדש אוטומטית את טבלת ה-xref כאשר דחיסת הזרם משנה היסטי בתים
- ללא תקורה - אם כל הזרמים כבר דחוסים, הנתונים עוברים ללא שינוי
הדפסה
- מצבי הדפסה - בחירה בין מצבי הדפסה EMF, טקסט בלבד, PostScript Level 2 / 3, PostScript pass-through, EMF image-mask, ו-Type 42 דרך הפונקציה הגלובלית
SetPdfPrintMode- העדפות מציג - חשיפת כוונת מחבר המסמך דרך
PrintCopies,PrintPageRanges(טווחי עמודים מבוססי-אחת),PrintScaling, ו-PrintPaperHandling;SetPdfPrintPaperHandlingDevModeממפה את רמז ההדפסה הדו-צדדית ל-DEVMODE.dmDuplexשל Windows- הדפסת N-up - הדגמות
PrintPreferencesב-Delphi, C++Builder ו-Lazarus מציגות הרכבת גיליונות N-up (1 / 2 / 4 / 9 עמודים לגיליון) עם סינון עמודים זוגיים / אי-זוגיים, רינדור בגווני אפור, גבולות תא של פיקסל אחד אופציונליים, העדפות הדפסה של מחבר ה-PDF, ומיפוי כוונת הדפסה דו-צדדית דרךSetPdfPrintPaperHandlingDevMode
הדגמות מצורפות
עצי
Demo\Delphi,Demo\CBuilderו-Demo\Lazarusכוללים פרויקטים לדוגמה הניתנים להפעלה ומתרגלים את ה-API החי על פני כל שלוש משפחות ה-IDE. דגשים:
- PDFViewer / MultiPageViewer / SplitView - שימוש מלא ב-TPdfView: טעינה, ניווט, זום, סיבוב, פריסת שני עמודים, פריסות מודעות-כריכה, והשוואת PDF זה לצד זה ב-Delphi / C++Builder / Lazarus עם פקודות מסונכרנות; הדגמות המציג הן גם מבחני מהירות מעשיים ל-PDFים של גיגה-בתים מרובים, שבהם מסמכים של 2.x GB יכולים להגיע לתצוגה ראשונית שמישה כמעט מיד בעוד שרינדור העמודים נשאר רספונסיבי
- ViewerInteractionLab - דגימות אינטראקציה ממוקדות ב-TPdfView עבור Delphi, C++Builder ו-Lazarus למצבי תצוגה, מצבי התאמה, צבעי עמוד, סיבוב, הדגשת חיפוש, בחירת טקסט, תצוגה מקדימה של טקסט נבחר, פעולות לוח, ומשוב קואורדינטות DeviceToPage
- SearchAndSelect - דגימות זרימת עבודה ממוקדות עבור Delphi, Lazarus ו-C++Builder להצגת תוצאות חיפוש בכל העמודים, ניווט להתאמה הקודמת / הבאה, קפיצה לתוצאה בלחיצה כפולה,
HighlightSearchText, חיפוש תלוי-רישיות / מילה שלמה,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection, ומצבי תצוגה של פריסה כפולה- PreflightReport - הדגמות זרימת עבודה עבור Delphi, Lazarus ו-C++Builder בתוספת כלי שורת פקודה ב-Delphi סביב
FPdfPreflightReportלשימוש חוזר, אשר אוספות תוצאות אימות של PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R, ו-PDF/VT לתוך שורות מצב, עדיפות, קטגוריית בעיה, ספירות קטגוריות בעיה, סיכום פעולה-הבאה, המלצות לבעיות, תצוגה מקדימה ב-TXT / Markdown / JSON / CSV, דוחות ב-TXT / HTML / Markdown / JSON / CSV, יצירת דוחות ניתנת לסקריפט, עיבוד אצווה של רשימות ותיקיות עם ניתוב תיקיית-דוחות, סיכומים מצטברים ב-TXT / JSON / HTML, מניפסטים של שורות CSV, הטמעת קובץ מצורף של דוח אופציונלית, וקוד יציאה לשערי CI- ContentExtractionLab - זרימת עבודה מאוחדת של מלאי תוכן עבור Delphi, Lazarus ו-C++Builder עבור מטא-נתונים של המסמך, טקסט עמוד, אובייקטי עמוד, תמונות, קבצים מצורפים, קישורים, הערות, סימניות, ומדדי גופן / תו עם ייצוא ל-TXT / JSON, בחירת הכל / ללא קטגוריות, שמירת PDF מקור, ופעולות העתקת דוח
- WatermarkStamp - זרימת עבודה של Form XObject לשימוש חוזר ב-Delphi, Lazarus ו-C++Builder עבור סימני מים ממורכזים, חותמות פינתיות ותוויות מספרי עמודים על פני PDF יעד מרובה עמודים
- CreatePDF - בניית PDF מרובה-עמודים מאפס עם טקסט, תמונות, נתיבים, טבלאות ושילוב סימן מים; כוללת אפשרות 'טקסט אירופאי' לכתיבת טקסט מוטעם בצ'כית / צרפתית / גרמנית / ספרדית / פורטוגזית / פולנית / טורקית לאימות בחירת גופן וטיפול ב-Unicode
- ExtractText / ExtractImages / ContentExtractionLab - שמירת טקסט שחולץ (כולל פלט מופרד לפי עמודים) או תמונות מוטמעות לדיסק; או יצירת דוח חילוץ תוכן מרובה-קטגוריות במעבר אחד
- FormFill - קריאת מטא-נתונים של שדות AcroForm, כתיבת ערכים, יצירה מחדש של הופעות /AP, ושמירה של התוצאה הניתנת לעריכה או המשוטחת
- FontProperties - בדיקת מטא-נתונים של תווים / גופנים באינדקס דרך TPdf וגם TPdfView ב-Delphi, C++Builder ו-Lazarus
- MergePDF / SplitPDF - שילוב מספר קובצי PDF מקור (עם בחירת טווח עמודים לכל קובץ, נתיב פלט אופציונלי, יומן ריצה, כפתור ביטול וסיכום השלמת מיזוג) או פיצול PDF אחד לקובצי פלט לכל עמוד
- PDFtoJpg / BatchExport - המרת PDF ל-JPG בקובץ בודד או באצווה של מספר קבצים ב-Delphi, C++Builder ו-Lazarus עם התקדמות כללית לכל קובץ, התקדמות נוכחית לכל עמוד, קלטי DPI / איכות / סיסמה, ואצווה הניתנת לביטול שיתופי המגובה על ידי
IPdfCancellationToken- StandardsLab - דגימות זרימת עבודה עבור Delphi, C++Builder ו-Lazarus עבור אימות PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R, ו-PDF/VT, דיווח על בעיות, ופלטי שמירה מכווני-תקנים
- PrintPDF / PrintPreferences - הדפסת PDF סטנדרטית ב-Delphi, C++Builder ו-Lazarus עם תצוגה מקדימה, טווחי עמודים, עותקים, איסוף, התקדמות וביטול (PrintPDF), בתוספת הרכבת גיליונות N-up ב-Delphi, C++Builder ו-Lazarus עם סינון אי-זוגי / זוגי והעדפות הדפסה של מחבר ה-PDF (PrintPreferences)
- SecurityAudit - דגימות משטח סיכון לקריאה בלבד עבור Delphi, C++Builder ו-Lazarus עבור הרשאות, קבצים מצורפים, פעולות JavaScript, קישורי URI / Launch, קישורי רשת, חתימות, מצב XFA, זמינות עזרי V8 / XFA, ודוחות ביקורת ב-TXT / JSON
- Attachment - יצירת מסמכי PDF, הוספה / רשימה / חילוץ / מחיקה / שמירה של קבצים מצורפים מוטמעים עם תצוגת תת-סוג MIME
- ImageToPDF - המרת אצווה של תמונות ל-PDF אחד ב-Delphi, C++Builder ו-Lazarus, תמונה אחת לכל עמוד, עם תצוגה מקדימה והתקדמות לכל תמונה
חבילות הרגרסיה של Delphi, C++Builder ו-Lazarus מכסות 147 מקרי Pas ו-123 מקרי C++ המשתפים את אותם קובצי PDF קבועים, כך שההתנהגות נשארת מיושרת ברמת הבתים על פני כל שלוש משפחות ה-IDE.
תמיכת פלטפורמות
- Delphi - מ-Delphi XE5 (RAD Studio XE5) ועד Delphi 13.1 Florence (RAD Studio 13.1)
- C++Builder - מ-C++Builder XE5 (RAD Studio XE5) ועד C++Builder 13.1 Florence
- Lazarus - תמיכה ב-Free Pascal / Lazarus
- Win32 / Win64 - גם פלטפורמות Windows של 32 סיביות וגם של 64 סיביות