مؤلفههای اصلی
- TPdf - مؤلفهٔ اصلی برای مدیریت اسناد PDF، برای باز کردن، پیمایش، استخراج متن و ویرایش اسناد PDF
- TPdfView - مؤلفهٔ بصری برای نمایش و تعامل با صفحههای PDF
- TPdfReadingSession - مؤلفهٔ هماهنگسازی خواندن با صدا برای engineهای 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ذخیرهٔ پایه را با یک update افزایشی پسپردازش میکنند که یک جریان فراداده XMP، یک OutputIntent مبتنی بر sRGB ICC، و یک catalog بهروزشده تزریق میکند تا نتیجه با PDF/A-1b سازگار باشد. profileهای ICC سفارشی از طریقTPdfASaveOptions.IccProfileDataپشتیبانی میشوند- اعتبارسنجی PDF/A -
ValidatePdfAو خاصیت فقطخواندنیPdfAConformanceیک سند باز را برای نشانگرهای XMPpdfaid، OutputIntent با ICC تعبیهشده، وجود رمزگذاری و سطح انطباق (pac1a,pac1b,pac2b,pac3b,pacNone, orpacUnknown) همراه با فهرستی از ورودیهایTPdfAValidationIssueرا که هر مشکل را توضیح میدهند گزارش میکنند- اعتبارسنجی سازگاری نسخه PDF - وقتی SaveAs روی PDF 1.0 تا PDF 1.7 هدفگذاری میشود، writer هر dictionary entry، filter، annotation subtype، action type، font، color space، یا encryption parameter اضافهشده پس از نسخه هدف انتخابی را رد میکند (برای مثال JBIG2Decode، MarkInfo، OutputIntents، AES / AES-256، Polygon / Caret / Watermark / Redact annotations، JavaScript / Trans / SetState actions)
- فشردهسازی جریان - فشردهسازی خودکار FlateDecode اطمینان میدهد همهٔ PDF streamها هنگام ذخیره بهینه فشرده میشوند؛ برای خروج از این رفتار،
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یک handle قابلاستفادهٔ مجددTPdfXObjectاز هر صفحهٔ سندی دیگر میسازد؛InsertFormObjectFromXObjectیک نسخه از صفحهٔ بستهبندیشده را در صفحهٔ جاری درج میکند. برای watermarkها، رویهمگذاری template و گردشکارهای «یک صفحه را روی چند صفحه stamp کن» ایدهآل است. شیء صفحهٔ مقصد را میتوان از طریقFPDFPageObj_SetMatrixو helperهایTPdfMatrixموقعیتدهی، مقیاسدهی و چرخش داد- مدیریت صفحه - افزودن، حذف و دستکاری صفحههای منفرد؛
AddPage(0, ...)نخستین صفحه را درج میکند و بلافاصله آن را فعال میکند- جعبههای صفحه - MediaBox، CropBox، BleedBox، TrimBox و ArtBox را روی صفحهٔ جاری بخوانید و بنویسید
- زبان کاتالوگ - زبان سند ذخیرهشده در ورودی /Lang کاتالوگ را بخوانید و بنویسید
- شناسههای فایل trailer - ورودیهای /ID ثابت و متغیر trailer را بهصورت bytes دودویی بخوانید
- عملیات JavaScript سند - نامها و scriptهای action درخت نامِ JavaScript در سطح سند را فهرست کنید
- درخت ساختار Tagged PDF - عناصر ساختار منطقی، متن دسترسپذیری، زبان، شناسههای marked-content و سلسلهمراتب صفحههای Tagged PDF را بررسی کنید
- ترجیحات نمایشگر -
PrintCopies،PrintPageRanges،PrintScalingوPrintPaperHandlingرا از viewer-preference dictionary سند بخوانید؛ PDFهای ذخیرهشده بهطور پیشفرض با action بازکردن صفحهٔ اول روی 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یک offset نویسهٔ صفحه را به TPdfWordBox دربرگیرنده نگاشت میکند، آن را برجسته میکند و اندیس واژه را برمیگرداند;TPdfView.SetReadingWordیکTPdfWordBoxرا بهعنوان واژهٔ گفتاری جاری رویTPdfViewنشان میدهد;TPdfView.ClearReadingWordپوشش مکاننمای خواندن در سطح واژه را پاک میکند; رنگ پوششی را که برای مکاننمای خواندن در سطح واژه استفاده میشود کنترل میکند; کنترل میکند که آیا TPdfView هنگام دنبالکردن خواندن، واژه گفتاری جاری را به نما اسکرول کند یا نه- هماهنگسازی نشست خواندن با صدا -
TPdfReadingSession,TPdfSpokenText,SpokenTextAppend,BuildSpokenTextFromWords,SpokenToPageChar, andEstimateSpokenWordIndexموتورهای TTS میزبان، قطعههای گفتاری، callbackهای موقعیت واژه، pacing تخمینی، مدیریت pause/resume و بهروزرسانی مکاننمای واژه درTPdfViewرا هماهنگ میکنند- جستجوی متن - متن را با گزینههای case-sensitive، whole word و consecutive search با استفاده از
FindFirst،FindNextوFindPreviousپیدا کنید- لایهٔ برجستهسازی جستجو -
TPdfView.HighlightSearchTextصفحهٔ جاری را اسکن میکند و روی هر تطابق در هر نوسازی یک پوشش واقعی با alpha blendedHighlightColorمیکشد و تعداد تطابقها را برمیگرداند.ClearHighlightپوشش را حذف میکند؛ رفتن به صفحهای دیگر آن را خودکار پاک میکند چون تطابقها مخصوص همان صفحه هستند.HighlightColorبهطور پیشفرضclYellowاست و بهصورت published در دسترس است تا برنامهها بتوانند آن را متناسبسازی کنند- Character ویژگیها - ویژگیهای indexشدهٔ
CharacterAngle،CharacterFontSize،CharacterFontWeight،CharacterGenerated،CharacterIsHyphenوCharacterMapErrorاندازهٔ قلم، وزن، زاویه و موقعیتگذاری نویسههای منفرد را در اختیار میگذارند- پشتیبانی از نویسههای اروپایی -
AddTextپیش از ایجاد یک object متنی، فونت TrueType system متناظر را بهطور خودکار بارگذاری و cache میکند تا نویسههای لهجهدار Czech، French، German، Spanish، Portuguese، Polish و Turkish که فونتهای استاندارد داخلی PDFium نمیتوانند نمایش دهند، اکنون بدون هیچ تغییر کدی درست رندر شوند- افزودن متن - متن جدید را با فونت، رنگ، شفافیت و چرخش دلخواه به صفحههای PDF اضافه کنید
- موقعیتگذاری object متن - موقعیتهای هر نویسه را برای objectهای متنی موجود از طریق
SetTextPositionsوTPdfSingleArrayتنظیم کنید- اطلاعات قلم - ویژگیهای قلم از جمله نام خانواده، وضعیت embedding، زاویهٔ italic، ascent / descent و دادهٔ خام قلم را در سطح هر object صفحه بازیابی کنید
پشتیبانی از حاشیهنویسی
- Annotation انواع - پشتیبانی از text، link، highlight، underline، strikeout و بسیاری از انواع دیگر annotation
- ایجاد حاشیهنویسی - ایجاد حاشیهنویسیهای جدید بهصورت برنامهنویسی
- ویرایش حاشیهنویسی - ویژگیهای حاشیهنویسی موجود از جمله رنگ، شفافیت و محتوا را تغییر میدهد
- حاشیهنویسیهای پیوند - پیوندهای داخلی و خارجی را با پشتیبانی action مدیریت میکند
پشتیبانی از فرم
- دسترسیگرهای پرکردن فرم با صدا -
FocusedFormFieldValue،FocusedFormFieldNameوFocusedFormFieldDetailsدرTPdfوTPdfViewمقدار منطقی current فیلد فرم، نام آن وTPdfFormFieldInfoرا برای پرکردن فرم با صفحهکلید یا صدا آشکار میکنند- Form انواع - پشتیبانی از فرمهای AcroForm و XFA
- پرکردن فرم - پر کردن تعاملی فرم با پشتیبانی JavaScript
- انتخاب DLL مربوط به V8 - Set
EnableV8Enginebefore loading to usepdfium.v8.dllfrom the matchingDLLs\Win32orDLLs\Win64folder and query V8/XFA helper availability viaV8FeaturesAvailable,XfaBStrHelpersAvailable, andGetRecommendedV8Flags- دسترسی به فیلد - مقادیر فیلد فرم را بر اساس اندیس یا موقعیت میخواند و مینویسد
- اطلاعات فیلد - نوع فیلد، flagها، نام و سایر ویژگیها را میخواند
- پرچمهای فیلد - flagهای فیلد AcroForm را از طریق
SetFormFieldFlags/SetFormFieldFlagsAtبر اساس اندیس یا موقعیت بهروزرسانی میکند، از جمله flagهای فقطخواندنی، اجباری، گذرواژه و چندانتخابی- تختسازی فرم -
GenerateFormAppearancesجریان appearance /AP را برای هر ویجت فرم در هر صفحه بازتولید میکند وFlattenPage/FlattenAllPagesحاشیهنویسیها و فیلدهای فرم را به محتوای ایستای صفحه تبدیل میکنند (غیرقابل ویرایش)- انتخاب متن ویجت فرم و Undo / Redo - روی ویجت AcroForm متمرکز، نما
GetSelectedFormText(متن انتخابشدهٔ جاری)،SelectAllFormText(انتخاب همهٔ نویسهها) وFormUndo/FormRedo/FormCanUndo/FormCanRedo(تاریخچهٔ ویرایش per-widget در PDFium) را آشکار میکند. هر شش مورد وقتی نما غیرفعال است یا هیچ ویجتی متمرکز نیست، بهطور ایمن زود خارج میشوند
عملیات تصویر
- استخراج تصویر - بیتمپها را از صفحههای PDF با خاصیت indexشدهٔ
Bitmapاستخراج کنید؛ با پیمایشBitmapCountهر تصویر را روی دیسک ذخیره کنید- درج JPEG -
AddJpegImageیکTStreamاز bytes خام JPEG میگیرد و تصویر را بدون رمزگذاری دوباره بهصورت یک/DCTDecodeXObject تعبیه میکند- پشتیبانی از Picture -
AddPictureیک شیءTPictureرا با تبدیل قالب خودکار از طریق کلاسهای گرافیکی ثبتشدهٔ VCL/LCL میپذیرد- درج مستقیم تصویر -
AddImage(FileName)هر قالبی را که در واحدهای graphics VCL یا LCL ثبت شده باشد میشناسد (BMP، PNG از طریق PngImage، JPG، ...) و از همان pipelineAddPictureاستفاده میکند.AddImage(TBitmap)لایهٔ میانیTPictureرا حذف میکند که کار را برای callerهایی که از قبل یکTBitmapاز رندر یا تولید دستهای در اختیار دارند سادهتر میکند- Image ICC Profile - objectهای صفحهٔ تصویر در صورت وجود، دادهٔ embedded ICC profile خود را آشکار میکنند (binding برای
FPDFImageObj_GetIccProfileDataDecoded)- تولید تصویر بندانگشتی - با خاصیت
Thumbnailبیتمپهای thumbnail صفحهٔ جاری را تولید کنید یا هر صفحهٔ یکمبنایی را از طریقTPdf.RenderPageThumbnailبدون تغییرPageNumberرندر کنید
واحدهای کمکی
- زیرساخت Async -
FPdfAsyncIPdfCancellationToken/IPdfCancellationTokenSourceرا برای cancel-from-UI بهصورت cooperative، یک singleton قابلاستفادهٔ مجددPdfNoCancellationTokenو یک helper سبکوزنTPdfFuture<T>فراهم میکند که یک worker را روی thread پسزمینه اجرا میکند و یک envelope از نوعTPdfFutureResult<T>را به thread اصلی برمیگرداند و حالتهای موفقیت، لغو و شکست را از هم جدا میکند- آداپتور Stream -
TPdfStreamAdapterیکTStreamپاسکال را به callbackهایFPDF_FILEACCESSدر PDFium وصل میکند تاLoadCustomDocumentبهجای buffer کردن کل PDF در حافظه، بلوکها را برحسب نیاز بخواند- ترکیب ماتریس -
FPdfMatrixFS_MATRIXPDFium را با یک API شیگرا برایTranslate،Scale،Rotate،HorizontalFlip،VerticalFlip،CentralFlip،SkewوMultiplyبستهبندی میکند.Multiplyشش عنصر ماتریس را پیش از محاسبهٔ مقادیر ردیف جدید snapshot میکند و از دام رایج پیادهسازیهای جایگزین پاسکال جلوگیری میکند که در آن عناصر قبلی در همان call بازنویسی میشوند و ترکیب نادرست میسازند- رندر Progressive قابللغو -
TPdf.RenderPageProgressiveحلقهٔFPDF_RenderPageBitmap_Start+RenderPage_Continueدر PDFium را هدایت میکند و میان iterationها از طریق callbackIFSDK_PAUSEیکIPdfCancellationTokenرا poll میکند تا رندرهای طولانی high-DPI بتوانند وسط صفحه لغو شوند و تا پایان block نکنند.TPdfProgressiveStatusبهصورتprsDone،prsCancelledیاprsFailedبرگردانده میشود- مسیر رندر بدون کپی -
RenderPage/RenderTile/RenderPageProgressiveخروجی PDFium را مستقیماً در buffer DIB مقصدTBitmapمینویسند و بهجای staging از یک buffer داخلی، یک کپی حافظهٔwidth × height × 4بایت را در هر رندر حذف میکنند؛ این در DPI بالا بیشترین اثر را دارد (پنلهای thumbnail، export با کیفیت چاپ، export دستهای). وقتی DIB مقصد را نتوان بهطور امن wrap کرد، مسیر fallback در سطح هر scanline حفظ میشود- تبدیل bitmap کمبینایی - InvertPdfBitmap, GrayscalePdfBitmap and DuotonePdfBitmap پیکسلهای 32-bit
TBitmapرندرشده را درجا برای نمایش وارونه، grayscale یا دورنگِ کمبینایی تبدیل میکنند- نمایش زنده کمبینایی -
TPdfView.OptionsازreInvertوreNightDuotoneپشتیبانی میکند وNightDuotoneInkوNightDuotonePaperپالت شبِ زنده را پیش از رسم overlayها کنترل میکنند
عملیات ترسیم
- ترسیم path - مسیرها را با خطها، منحنیهای Bezier و شکلهای بسته ایجاد کنید
- حذف object - objectهای صفحه را حذف کنید و محتوای صفحه را از TPdf یا TPdfView بازتولید کنید
- پرکردن و stroke - حالت پرکردن، رنگها، شفافیت و ویژگیهای stroke را تنظیم کنید
- حالتهای blend - پشتیبانی از حالتهای blend مختلف PDF
- سبکهای خط - line cap، line join و ضخامت stroke را تنظیم کنید
امضاهای دیجیتال
- تشخیص signature - امضاهای دیجیتال را در اسناد PDF تشخیص دهید و فهرست کنید
- اطلاعات signature - محتوای امضا، byte range، sub-filter، دلیل و زمان را بخوانید
- مجوزهای MDP - مجوزهای modification detection and prevention سند را استعلام کنید
پشتیبانی از پیوست
- دسترسی به پیوست - پیوستهای فایل تعبیهشده را میخواند، ایجاد میکند، تغییر میدهد و حذف میکند
- نامهای پیوست - نام فایل پیوستها را میخواند
- انواع پیوست - در صورت وجود، مقدار MIME subtype فایل تعبیهشده را میخواند
- نشانکها - نشانههای سند را با پشتیبانی سلسلهمراتبی از طریق آرایهٔ
Bookmarks،BookmarkChildren،HasBookmarkChildrenوBookmarkFromبررسی میکند- مقصدهای نامدار - مقصدهای نامدار را از طریق اندیس یا نام با
Destination،DestinationByNameوDestinationCountفراهم میکند- برچسبهای صفحه - برچسب صفحه را برای هر صفحه از طریق
PageLabelارائه میدهد؛ این ویژگی وقتی سندها برای بخشهای آغازین از اعداد رومی استفاده میکنند مفید است- پیوندهای وب - پیوندهای وب روی صفحهها را با
WebLink،WebLinkCountوTPdfView.WebLinkAtPosفراهم میکند- حاشیهنویسیهای پیوند - حاشیهنویسیهای پیوند را همراه با اطلاعات action و مقصد از طریق
LinkAnnotation،LinkAnnotationCountوTPdfView.LinkAnnotationAtPosارائه میدهد- مدیریت امن کلیک پیوند -
TPdfViewپیش از اجرای خودکار goto / URI رویدادهایOnAnnotationLinkClickوOnWebLinkClickرا فراخوانی میکند و actionهای launch را بهطور پیشفرض غیرفعال نگه میدارد. تشخیص کلیکِ پیوند فقط وقتی اجرا میشود که gesture واقعاً کلیک باشد نه drag، و از یک MouseDown تازه بهعنوان anchor استفاده میکند تا gestureهای جابهجایی همچنان بدون تغییر از مسیر scroll موجود عبور کنند
رندر
- رندر با کیفیت بالا - صفحهها را از طریق
RenderPageوRenderTileبه device context، bitmap یا tile رندر میکند و در buffer مقصد DIB بهصورت مستقیم و بدون کپی مینویسد- رندر Progressive قابللغو -
RenderPageProgressiveحلقهٔ progressive در PDFium را هدایت میکند و میان iterationها یکIPdfCancellationTokenدریافت میکند وprsDone،prsCancelledیاprsFailedبرمیگرداند. وقتی عملیات لغو شود، bitmap همان کار نیمهتمام انجامشده تا آن لحظه را نگه میدارد- گزینههای رندر - بهینهسازی متن LCD (
reLcd)، حاشیهنویسیها (reAnnotations)، خاکستری و پرچمهای حالت چاپ را ارائه میدهد- قلابهای Skia - وقتی caller یک SkCanvas خارجی ارائه کند، bindingهای سطح پایین
FPDF_RenderPageSkiaوFPDF_FFLDrawSkiaدر دسترس هستند و به exportهای DLL بستهشده وابستهاند- انتخاب حالت چاپ - حالتهای چاپ EMF، فقط متن، PostScript، pass-through، image-mask و نوع 42 PDFium را از طریق
SetPdfPrintModeباTPdfPrintModeتنظیم میکند- روکش ناهمگام - TPdfView میتواند یک لایهٔ بارگذاری اختیاری را در حالی نمایش دهد که workerهای متعلق به برنامه با نمونههای جداگانهٔ TPdf رندر میکنند
- چرخش صفحه - پشتیبانی از چرخش 0، 90، 180 و 270 درجه (
ro0،ro90،ro180،ro270)- تشخیص شفافیت - خاصیت
Transparentگزارش میدهد آیا هر object در صفحهٔ جاری شفافیت دارد یا نه، از جمله blend modeها و alpha جزئی
نمایش (TPdfView)
- حالتهای نمایش -
dmSingleContinuous،dmTwoPageContinuousوdmTwoPageContinuousWithCoverرا پشتیبانی میکند؛ در این حالت صفحهٔ روی جلد جداگانه نمایش داده میشود و سپس چیدمان دوصفحهای ادامه پیدا میکند. helper سطح واحدComputeSpreadPagesمحاسبهٔ spread page را بدون ساخت viewer در اختیار میگذارد- حالت Fit -
FitModeتعیین میکند صفحه چگونه در viewport قرار بگیرد:pfmNoneبرای zoom دستی،pfmActualSizeبرای 100%،pfmFitPageبرای جا شدن کامل صفحه در viewport وpfmFitWidthبرای همعرض شدن صفحه با viewport. حالت فعال fit بهطور خودکار هنگام Resize و تغییر صفحهٔ جاری دوباره اعمال میشود؛ تنظیم مستقیم Zoom حالت fit فعال را لغو میکند وFitModeبهpfmNoneبرمیگردد، مطابق با convention رایج viewerهای PDF- کنترل زوم - zoom متغیر را با helperهای per-page شامل
PageZoom،PageWidthZoom،PageHeightZoomوActualSizeZoomفراهم میکند- رنگ صفحه -
PageColorپسزمینهٔ صفحهٔ PDF رندرشده را ازColorکنترل اطراف جدا میکند. مقدار پیشفرضclWhiteاست، بنابراین صفحههای PDF صرفنظر از theme برنامهٔ میزبان به رنگ سفید کاغذی رندر میشوند. viewerهای حالت تاریک میتوانند ناحیهٔ scroll را تیره نگه دارند و خود صفحهٔ PDF را سفید، یا هر رنگ دیگری که برنامه انتخاب کند، باقی بگذارند- انتخاب متن تعاملی - کاربر نهایی میتواند متن صفحههای PDF را با کشیدن انتخاب کند و تشخیص برخورد بین selection و pan بهصورت خودکار جابهجا میشود: کلیک روی نویسه، کشیدن انتخاب را شروع میکند و کلیک روی فضای خالی، پن میکند. دوبارکلیک واژه را انتخاب میکند، سهبارکلیک خط را،
Ctrl+Aصفحه را انتخاب میکند (و در حالت spread هر دو صفحه را)،Ctrl+CباCF_UNICODETEXTکپی میکند،Shift+arrowsselection را گسترش میدهد، قرار گرفتن نشانگر روی متن cursor را بهcrIBeamتغییر میدهد و کشیدن تا لبهٔ viewer صفحه را خودکار scroll میکند.SelectionColorوOnSelectionChangeتازه منتشر شدهاند؛HasSelection،SelectedText،SelectionCharCount،ClearSelection،SelectAllوCopySelectionToClipboardنیز در API عمومی افزوده شدهاند. حالتهای نمایش spread با اتصال CR/LF هر دو صفحهٔ قابلمشاهده را انتخاب میکنند. وقتی میزبانPopupMenuخود را اختصاص نداده باشد، یک منوی پیشفرض Copy با کلیک راست بهطور خودکار افزوده میشود. این قابلیت با flagAllowUserTextSelectionاز v1.17.0 برای kiosk hostها کنترل میشود- نگاشت مختصات - مختصات device و صفحهٔ PDF را با
DeviceToPageوPageToDeviceبهصورت دوطرفه تبدیل میکند، از جمله overloadهایی کهTRectمیگیرند وTPdfRectangleبرمیگردانند- انتخاب متن و hit test - نویسههای زیر نقاط viewer را با
CharacterIndexAtPosپیدا میکند و هایلایت selection متن را از طریقPaintSelectionرسم میکند- ماوس و صفحهکلید - پشتیبانی کامل از ورودی را با drag ماوس برای scroll، میانبرهای PgUp / PgDn / Ctrl+خانه / Ctrl+End و ناوبری صفحه با wheel بالا و پایین فراهم میکند. Ctrl+wheel برای zoom برنامه رزرو شده و توسط handler ناوبری نادیده گرفته میشود
- قفلکردن ورودی کاربر -
AllowUserPageChangeمیانبرهای صفحه با صفحهکلید را کنترل میکند،ChangePageOnMouseScrollingپرش صفحه با wheel را کنترل میکند وAllowUserTextSelectionورودی selection متن با ماوس و صفحهکلید را کنترل میکند. هر سه بهطور پیشفرض True هستند؛ اگر آنها را False کنید، بدون subclassing میتوانید kioskها، preview paneها یا embeddingهای فقطخواندنی را قفل کنید- روکش رندر ناهمگام -
Asyncرندر،LoadingTextوLoadingColorیک نشانگر کوچک "Loading..." را روی صفحهٔ رندرشده رسم میکنند تا برنامههایی که برای رندرهای طولانی worker خودشان را دارند، رفتار بصری یکدستتری داشته باشند. تنظیمات پیشفرض رفتار موجود را حفظ میکنند.TPdfاکنون فراخوانیهای render و page-unload را برای هر نمونه بهصورت ترتیبی اجرا میکند؛ برنامه همچنان مسئول dispatch worker است و نباید در حالی که render در حال اجراست سند را تغییر دهد- مدیریت امن کلیک پیوند -
LinkOptionsیک set منتشرشده است که رفتار خودکار چهار نوع PDF link action را کنترل میکند:loAutoGotoبرای پرش صفحه،loAutoOpenURIوloAutoLaunchبرایShellExecuteوloAutoEmbeddedGotoکه رزرو شده است. تنظیمات پیشفرض فقطloAutoGotoوloAutoOpenURIرا فعال میکنند وloAutoLaunchوloAutoEmbeddedGotoخاموش میمانند تا کلیک ناخواسته نتواند برنامهای دلخواه را اجرا کند.OnAnnotationLinkClickوOnWebLinkClickپیش از هر action خودکار اجرا میشوند و به برنامه اجازه میدهند رویداد را Handled کند یا مسیر آن را تغییر دهد- تعامل با فرم - ویرایش تعاملی form را درون viewer فراهم میکند، بهعلاوه helperهای انتخاب / Undo / Redo از v1.23.0
- سبکدهی بصری -
PageShadowSize،PageShadowColorوPageBorderColorیک drop shadow اختیاری زیر مستطیل صفحه و یک border یکپیکسلی دور آن رسم میکنند؛SmoothScrollاکنون فرمانهای scrollbar خط و صفحه را در بخشهای زمانبندیشده انیمیت میکند و در عین حال tracking thumb همچنان فوری باقی میماند- پیمایش بندانگشتی -
TPdfThumbnailView(unitFPdfThumbnail) یک thumbnail برای هر صفحه را در هر ردیفِ یک پنل کناری قابل scroll با هایلایت hover و selection و ناوبری click-to-go رندر میکند. برای قرار گرفتن کنارTPdfViewطراحی شده است. ویژگیها:CurrentPageIndex،ThumbnailWidth،ThumbnailHeight،TextColor،HoverColor،SelectionColor،BorderColor؛ رویداد:OnPageClick
فشردهسازی
- فشردهسازی خودکار - وقتی ویژگی
Compressedبرابر True باشد (پیشفرض)، همه جریانهای PDF هنگام ذخیره بهصورت FlateDecode فشرده میشوند- پردازش پس از ذخیره - موتور فشردهسازی دادههای PDF ذخیرهشده را اسکن میکند و هر جریانِ بدون فشردهسازی را با بیشینهٔ فشردهسازی zlib فشرده میکند
- بازسازی Cross-Reference - وقتی فشردهسازی جریانها offsetهای بایت را تغییر دهد، جدول xref را بهطور خودکار بازسازی میکند
- بدون سربار - اگر همهٔ جریانها از قبل فشرده باشند، دادهها بدون تغییر عبور میکنند
امنیت
- پشتیبانی از گذرواژه - سندهای PDF محافظتشده با گذرواژه را باز میکند
- مجوزها - مجوزهای سند و کاربر را میخواند؛ دموی
SecurityAuditمجوزها، پیوستها، JavaScript سند، پیوندهای URI / Launch، signatureها، XFA و در دسترسبودن V8 را در یک سطح ریسک فقطخواندنی ترکیب میکند و امکان ذخیرهٔ گزارش TXT / JSON و کپی TXT را میدهد- حذف امنیت - سندها را با حذف امنیت ذخیره میکند، وقتی مجاز باشد
چاپ
- حالتهای چاپ - میان EMF، فقط متن، PostScript Level 2 / 3، pass-through PostScript، EMF image-mask و حالتهای چاپ نوع 42 را از طریق تابع سراسری
SetPdfPrintModeانتخاب میکند- ترجیحات نمایشگر - قصد نویسندهٔ سند را از طریق
PrintCopies،PrintPageRangesبا بازههای یکمبنایی،PrintScalingوPrintPaperHandlingآشکار میکند؛SetPdfPrintPaperHandlingDevModehint دوبلکس را بهDEVMODE.dmDuplexویندوز نگاشت میکند- چاپ N-up - دموهای
PrintPreferencesدر Delphi، C++Builder و Lazarus ترکیب برگهٔ N-up را نشان میدهند (1 / 2 / 4 / 9 صفحه در هر برگه) همراه با فیلتر صفحههای odd / even، رندر خاکستری، border اختیاری یکپیکسلی سلولها، ترجیحات چاپ نویسندهٔ PDF و نگاشت intent دوبلکس از طریقSetPdfPrintPaperHandlingDevMode
نمونههای همراه
درختهای
Demo\Delphi،Demo\CBuilderوDemo\Lazarusپروژههای نمونهٔ قابل اجرا را همراه دارند که سطح API زنده را در هر سه خانوادهٔ IDE آزمایش میکنند. نکات برجسته:
- PDFViewer / MultiPageViewer / SplitView - استفاده سرتاسری از TPdfView: بارگذاری، پیمایش، بزرگنمایی، چرخش، spread دوصفحهای، چیدمانهای آگاه از cover و مقایسه کناربهکنار PDF در Delphi / C++Builder / Lazarus با فرمانهای همگامسازیشده؛ نمونههای viewer همچنین آزمون سرعت عملی برای PDFهای چند گیگابایتی هستند، جایی که اسناد 2.x GB میتوانند تقریباً فوراً به یک نمای اول قابل استفاده برسند و رندر صفحه همچنان پاسخگو بماند
- ViewerInteractionLab - نمونههای تعاملی TPdfView در Delphi، C++Builder و Lazarus برای حالتهای نمایش، حالتهای fit، رنگ صفحه، چرخش، برجستهسازی جستجو، انتخاب متن، پیشنمایش متن انتخابشده، عملیات کلیپبورد و بازخورد مختصات DeviceToPage
- SearchAndSelect - نمونههای workflow متمرکز برای Delphi، Lazarus و C++Builder برای فهرستکردن نتایج جستوجوی کل صفحه، ناوبری match قبلی / بعدی، پرش نتیجه با double-click،
HighlightSearchText، جستوجوی match-case / whole-word،AllowUserTextSelection،SelectedText،SelectAll،CopySelectionToClipboard،ClearSelectionو حالتهای نمایش spread- PreflightReport - دموهای workflow در Delphi، Lazarus و C++Builder بههمراه یک همدم کنسولی Delphi حول
FPdfPreflightReportقابلاستفادهمجدد، نتایج اعتبارسنجی PDF/A، PDF/UA، PDF/E، PDF/X، PDF/R و PDF/VT را در قالب status، priority، issue category، شمارش issue-category، ردیفهای خلاصهٔ next-action، توصیههای issue، پیشنمایش متن / Markdown / JSON / CSV، گزارشهای TXT / HTML / Markdown / JSON / CSV، تولید scriptable گزارش، پردازش batch list و directory با routing به report-directory، خلاصههای تجمیعی TXT / JSON / HTML، manifestهای CSV row، embedding اختیاری گزارش و exit codeهای gating برای CI جمع میکند- ContentExtractionLab - workflow یکپارچه inventory محتوا در Delphi، Lazarus و C++Builder برای فراداده سند، متن صفحه، objectهای صفحه، تصویرها، پیوستها، پیوندها، حاشیهنویسیها، نشانهها و سنجههای قلم / نویسه با خروجی TXT / JSON، انتخاب دسته all / none، ذخیره PDF مبدأ و عملیات کپی گزارش
- WatermarkStamp - workflow قابلاستفادهمجدد Form XObject در Delphi، Lazarus و C++Builder برای واترمارکهای مرکزی، مهرهای گوشه و برچسبهای شماره صفحه روی یک PDF چندصفحهای
- CreatePDF - ساخت یک PDF چندصفحهای از ابتدا با متن، تصویرها، مسیرها، جداول و ترکیب واترمارک؛ شامل گزینه «متن اروپایی» برای نوشتن متن دارای accent از زبانهای Czech، French، German، Spanish، Portuguese، Polish و Turkish جهت تأیید انتخاب فونت و پردازش Unicode
- ExtractText / ExtractImages / ContentExtractionLab - متن استخراجشده (شامل خروجی جداگانه per-page) یا تصویرهای تعبیهشده را روی دیسک ذخیره میکند؛ یا یک گزارش inventory محتوا چنددستهای را در یک گذر تولید میکند
- FormFill - فرادادهٔ فیلد AcroForm را میخواند، مقدارها را مینویسد، appearanceهای /AP را بازتولید میکند و نتیجهٔ editable یا flattened را ذخیره میکند
- Fontویژگیها - فرادادهٔ شاخصگذاریشدهٔ نویسه و قلم را از طریق هر دو
TPdfوTPdfViewدر Delphi، C++Builder و Lazarus بررسی میکند- MergePDF / SplitPDF - چند PDF مبدأ را ترکیب میکند (با انتخاب بازه صفحه per-file، مسیر خروجی اختیاری، گزارش اجرا، دکمه لغو و خلاصه تکمیل ادغام) یا یک PDF را به فایلهای خروجی per-page تقسیم میکند
- PDFtoJpg / BatchExport - تبدیل یکباره یا batch چندفایلی PDF به JPG را در Delphi، C++Builder و Lazarus با پیشرفت کلی per-file، پیشرفت جاری per-page، ورودیهای DPI / quality / password و یک batch با لغوِ همکارانه مبتنی بر
IPdfCancellationTokenانجام میدهد- StandardsLab - نمونههای workflow در Delphi، C++Builder و Lazarus برای اعتبارسنجی PDF/A، PDF/UA، PDF/E، PDF/X، PDF/R و PDF/VT، گزارش issue و خروجیهای ذخیرهسازی مبتنی بر استاندارد
- PrintPDF / PrintPreferences - چاپ استاندارد PDF در Delphi، C++Builder و Lazarus با پیشنمایش، بازههای صفحه، copies، collate، progress و cancellation در
PrintPDF، بههمراه ترکیب برگهٔ N-up در Delphi، C++Builder و Lazarus با فیلتر odd / even و ترجیحات چاپ نویسندهٔ PDF درPrintPreferences- SecurityAudit - نمونههای فقطخواندنی برای سطح ریسک در Delphi، C++Builder و Lazarus برای مجوزها، پیوستها، عملیات JavaScript، پیوندهای URI / Launch، پیوندهای وب، signatureها، وضعیت XFA، در دسترسبودن helperهای V8 / XFA و گزارشهای بازبینی در TXT / JSON
- Attachment - ایجاد PDFها و افزودن / فهرستکردن / استخراج / حذف / ذخیرهٔ پیوستهای فایل تعبیهشده با نمایش MIME subtype
- ImageToPDF - تبدیل batch تصویر در Delphi، C++Builder و Lazarus به یک PDF، یک تصویر در هر صفحه، با پیشنمایش و پیشرفت per-image
مجموعههای regression در Delphi، C++Builder و Lazarus شامل 147 مورد برای Pas و 123 مورد برای C++ هستند و از همان PDFهای fixture مشترک استفاده میکنند تا رفتار در هر سه خانوادهٔ 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 - هر دو سکوی 32-bit و 64-bit ویندوز