FlattenTransparency

معالجة المستندات، العرض، توافق PDF

الوصف

يستبدل كل صفحة محددة بصورة راستر معتمة واحدة تحفظ المظهر المرسوم مع إزالة الشفافية من محتوى الصفحة القابل للوصول

الصيغة

Delphi

Function TPDFlib.FlattenTransparency(Const PageRange: WideString; DPI: Double; BackgroundColor: Cardinal; Options: Integer): Integer;

المعاملات

PageRangeتعبير مدى صفحات، أو سلسلة فارغة لكل الصفحات
DPIدقة البيانات النقطية من 36 إلى 1200 نقطة في البوصة
BackgroundColorخلفية راستر معتمة كقيمة COLORREF
Optionsمزيج bitwise من PDF_FLATTEN_TRANSPARENCY_KEEP_ANNOTATIONS وPDF_FLATTEN_TRANSPARENCY_GARBAGE_COLLECT أو PDF_FLATTEN_TRANSPARENCY_DEFAULT

قيم الإرجاع

تُرجع عدد الصفحات المستبدلة أو 0 عند فشل التحقق أو الرسم قبل استبدال أي صفحة

ملاحظات

يرسم الخيار الافتراضي التعليقات التوضيحية وحقول النماذج في صورة الاستبدال ويزيل كائناتها التفاعلية ويجمع الكائنات غير القابلة للوصول فيمكن اختيار إصدار PDF أقدم متوافق بعدها

تفتح LoadFromFile مستندًا عبر مثيل TPDFlib الخاص بالتحكم نفسه؛ ويعرض AttachLibrary المستند المحدد لمثيل تديره أنت (يحتفظ المستدعي بالملكية). وأوضاع التكبير نسبة ثابتة‏ (zmPercent عبر SetZoomPercent) وملاءمة العرض‏ (zmFitWidth، الافتراضي) وملاءمة الصفحة‏ (zmFitPage)؛ وتحسب أوضاع الملاءمة من جديد تلقائيًا عند تغيير حجم التحكم. ويقيَّد التنقل بمدى صفحات المستند ويُطلق OnPageChange فقط عندما تتغير الصفحة المرئية فعلًا؛ ويُبلغ OnZoomChange عن كل تغيير للتكبير الفعلي (بما في ذلك إعادة حساب وضع الملاءمة عند تغيير الحجم أو التدوير) ويتتبع OnHScroll / OnVScroll موضع التمرير، فتبقى أشرطة الأدوات وأشرطة الحالة متزامنة دون استطلاع. وأثناء سحب مقبض شريط التمرير الرأسي تعاين فقاعة عائمة "Page N / M" صفحة الهبوط‏ (ScrollHintEnabled، مفعل افتراضيًا). ويقفز GoToPagePoint إلى صفحة ويمرر نقطة صفحة معينة إلى الزاوية العلوية اليسرى لإطار العرض‏ (وجهات الارتباطات وإصابات البحث)؛ وتمنح ScrollBy والخاصيتان القابلتان للقراءة والكتابة HScrollPos / VScrollPos‏ (مفيدتان لمزامنة عارضين جنبًا إلى جنب) وGetScrollPosForPage تحكمًا برمجيًا في التمرير، وتحول الجسور العامة ClientPointToPage / PageRectToClientRect بين بكسلات العميل وفضاء مستخدم الصفحة عبر التكبير والدوران والتمرير. وتبدل SetDisplayMode بين عرض صفحة واحدة‏ (dmSinglePage، الافتراضي) وتمرير رأسي متصل عبر المستند كله‏ (dmContinuous)، حيث تُرسم الصفحات المرئية في إطار العرض فقط وتتبع الصفحة الحالية موضع التمرير. تُحفظ الصفحات المرسومة في مخزن صور نقطية الأقل استخدامًا مؤخرًا‏ (128 MB افتراضيًا، قابل للضبط عبر SetCacheLimit)، فلا يُعاد رسم الصفحات عند التمرير للخلف. ويؤدي ضبط DiskCacheFolder إضافيًا إلى إبقاء الصفحات المرسومة على القرص عبر الجلسات: تُخزن صفحات كل مستند تحت بصمة من مسار الملف وحجمه وزمن كتابته (تحرير الملف يبطل مدخلاته طبعًا)، وتُقلَّم المستندات الأقل استخدامًا مؤخرًا خارج موازنة عشرة مستندات، وإعادة فتح ملف عُرض مؤخرًا تعرض صفحاته دون إعادة رسم‏ (DiskCacheHits يُبلغ كم مرة قدم القرص صفحة). وتومض عجلة الفأرة رأسيًا وتكبر عبر سلم الإعدادات المسبقة القياسي (1–3200%) أثناء ضغط Ctrl؛ وتكشف ZoomInStep / ZoomOutStep الخطوات المسبقة نفسها برمجيًا (تستخدمها إجراءات تكبير شريط الأدوات أيضًا). وينقل PageUp/PageDown ومفاتيح الأسهم وHome وEnd؛ وتدرج Ctrl+'+'/'-' التكبير، وتحول Ctrl+1/2/3 إلى الحجم الفعلي وملاءمة العرض وملاءمة الصفحة، ويقفز Shift+Up/Down إلى أول وآخر صفحة. وتُرسَم الصفحات المجاورة مسبقًا على خيط خلفي فيكون التنقل فوريًا‏ (PrefetchEnabled، مفعل افتراضيًا، يوقف العامل ويعيد تشغيله)، ويعاير DiskCacheMaxDocuments عدد المستندات التي يحتفظ بها مخزن صفحات القرص. ويُطلق OnBeforeSnapshot قبل التقاط سحب لقطة ويمكنه الاستيلاء على المنطقة كليًا بضبط Handled. ونقر التعليق ارتباط التوضيحي يطلق OnLinkClick مع رقم الصفحة وملخص الإجراء المكتوب‏ (TPDFlibActionInfo: عنوان ويب ووجهة مستند وإجراء مسمى وغيرها)؛ ويكشف LinkActionAtPagePoint اختبار الإصابة مباشرةً بالأحداثيات في فضاء المستخدم نفسه الذي يُبلغ عنه GetAnnotRectEx. ونقر أي تعليق توضيحي آخر يطلق OnAnnotClick مع الصفحة وفهرس التعليق التوضيحي واسم النوع الفرعي‏ (AnnotAtPagePoint هو اختبار الإصابة البرمجي)؛ ويحوم تعليق توضيحي فيعرض نص Contents له كتلميح للتحكم عندما يكون AnnotHints وShowHint مفعّلين، وتكتب SaveAnnotAttachmentToFile الملف المضمّن للتعليق التوضيحي FileAttachment المنقور على القرص — تجعل هذه مجتمعةً النوافذ المنبثقة للملاحظات وحفظ المرفقات وفحص التعليقات أمرًا مباشرًا. وتُملأ حقول AcroForm تفاعليًا: النقر على مربع اختيار أو زر اختيار يبدله، والنقر على حقل نص أو اختيار يفتح محررًا موضعيًا فوق الحقل‏ (Enter يثبت، Escape يلغي، مغادرة المحرر تثبت)، وتُرسم الصفحة المتغيرة من جديد تلقائيًا، ويطلق كل كتابة OnFormFieldValueChanged؛ ويرسم HighlightFormFields خلفية شبه شفافة فوق كل منطقة قابلة للتعبئة، وتقود FormFieldAtPagePoint وToggleCheckBoxField وSetFormFieldValueAndRefresh وBeginEditFormField الآلية نفسها برمجيًا (تُترك الحقول للقراءة فقط). وتحرر حقول النص متعددة الأسطر في memo‏ (يدخل Enter فاصل سطر، ويثبت Ctrl+Enter)؛ وتدور Tab وShift+Tab المحرر الموضعي عبر حقول النص والاختيار القابلة للتحرير في المستند‏ (FocusNextFormField هو الصيغة البرمجية)، وتكتب SaveToFile / SaveToStream المستند المعروض - بما فيه تعديلات النماذج المثبتة - عائدًا إلى القرص أو تدفق، مكتملةً دورة التعبئة والحفظ داخل التحكم. ويسحب زر الفأرة الأيسر النص لتحديده‏ (نقر على ارتباط يطلق الارتباط بدلًا من ذلك)؛ وينسخ Ctrl+C أو CopySelectedText التحديد، وتجري GetTextInRegion البحث في المنطقة نفسه بالكتل برمجيًا. وتقرر خاصية ViewerMode ما يفعله زر الفأرة الأيسر: vmSelect‏ (الافتراضي) يسحب تحديد نص، وvmHand يحرك العرض بمؤشر قبضة بينما يتبع النقر العادي الارتباطات، وvmZoom يسحب إطار تحديد يكبر المنطقة المحددة لتملأ إطار العرض‏ (النقر العادي يزيد التكبير درجة)، وvmSnapshot ينسخ المنطقة المسحوبة إلى الحافظة كصورة نقطية ويطلق OnSnapshot، وvmHighlight يميز المنطقة المسحوبة بتمييز شبه شفاف دائم. ويكشف CaptureRegion محرك اللقطات برمجيًا، وتدير AddHighlightRegion / ClearHighlightRegions التمييزات الدائمة‏ (في إحداثيات الصفحات، ناجيةً من التكبير والدوران والتنقل؛ واللون عبر HighlightColor). ويطبع PrintDoc المستند المعروض: افتراضيًا يعرض حوار طباعة Windows القياسي‏ (اختيار الطابعة ومدى الصفحات والنسخ والتجميع) ويسند المهمة إلى محرك طباعة المكتبة؛ ويطبع PrintDoc(False) كل صفحة إلى الطابعة الافتراضية دون واجهة، وPrintDocRange هو الشقيق البرمجي الكامل الذي يأخذ اسم طابعة ومدى صفحات. وتدير RotateClockwise90 وRotateAntiClockwise90 العرض كله بخطوات 90 درجة‏ (قابلة للضبط أيضًا عبر ViewRotation: 0 أو 90 أو 180 أو 270)؛ والتدوير خاصية عرض تترك المستند سليمًا، ويبقى الارتباط وتحديد النص يعملان عند كل زاوية، ويُعاد إلى الصفر عند فتح مستند جديد. ويعرض التحكم الرفيق TPDFlibOutlineViewer شجرة إشارات المستند المرجعية بجوار العارض: استدعِ AttachViewer الخاصة به بمثيل العارض وينقلك نقر إشارة مرجعية إلى صفحة وجهتها. ويبحث HighlightSearchHits في المستند كله ويرسم شريطًا شبه شفاف‏ (SearchHighlightColor) فوق كل إصابة؛ وتبقى الأشرطة في مواضعها أثناء التمرير والتكبير والتدوير حتى يزيلها ClearSearchHighlights. ويلتحق TPDFlibSearchPanel بالطريقة نفسها: يسرد RunSearch كل إصابة في المستند مع صفحتها ونصها المطابق، وينقلك نقر إصابة إلى تلك الصفحة، ومع HighlightInView‏ (مفعل افتراضيًا) يرسم اللوحة أشرطة الإصابة في العارض الملحق أيضًا. ويكمل TPDFlibThumbnailBar العائلة بصورة مصغرة مرسومة بكسلًا عن كل صفحة؛ والنقر على مصغرة ينتقل إليها. وتوفر وحدة الرفيق Lib\PDFlibViewerActions.pas عشرين سليل TAction جاهزًا‏ (مسجلًا تحت فئة losLab PDF) فلا تحتاج أشرطة الأدوات والقوائم إلى شيفرة وصل: وجّه خاصية Viewer لكل إجراء إلى التحكم وتزامن TPDFlibViewerFirstPage / TPDFlibViewerPriorPage / TPDFlibViewerNextPage / TPDFlibViewerLastPage وTPDFlibViewerZoomIn / TPDFlibViewerZoomOut / TPDFlibViewerFitWidth / TPDFlibViewerFitPage / TPDFlibViewerActualSize وTPDFlibViewerRotateClockwise / TPDFlibViewerRotateAntiClockwise وTPDFlibViewerPrint وTPDFlibViewerFileOpen / TPDFlibViewerFileSaveAs وTPDFlibViewerCopyText وإجراءات وضع الأدوات TPDFlibViewerSelectMode / TPDFlibViewerHandMode / TPDFlibViewerMarqueeZoomMode / TPDFlibViewerSnapshotMode / TPDFlibViewerHighlightMode حالتي التمكين والتحديد تلقائيًا مع المستند والأداة النشطة. ثبّت حزمة وقت التصميم Lib\PDFlibViewerPkg.dpk لوضع التحكم من صفحة لوحة losLab PDF في وقت التصميم. ويستكمل الأعضاء المتبقون السطح البرمجي: يُبلغ RenderedWidth / RenderedHeight عن حجم البكسل لصورة الصفحة المرسومة حاليًا‏ (0 قبل عرض مستند)، وEffectiveZoomPercent عن التكبير الساري فعليًا شاملًا معاملات الملاءمة المحسوبة، وScreenDPI عن تخطيط النقطة إلى البكسل‏ (يُكشف تلقائيًا من شاشة المضيف وقابل للتجاوز لاختبارات الرسم بلا واجهة؛ تغييره يمسح مخزن الصور النقطية)، ويفحص IsPageCached / Cache مخزن الصور النقطية، ويفك DrainPrefetched عمليات الرسم الخلفية المنتهية للمضيفين بلا مضخة رسائل، وتُرجع Lib مثيل TPDFlib الملحق. وتكشف التوصيلات الداخلية لحقول النماذج كاملةً أيضًا: تُرجع GetFormFieldTabSequence كل عنصر مرئي بترتيب تبويب مستقر، وتحل GetFormFieldEditorKind نوع المحرر الذي سيستخدمه الحقل، وترسل ActivateFormField إجراء رفع الفأرة للحقل إلى المضيف‏ (أزرار الضغط وعناصر التوقيع مشمولة حتى بلا إجراء)، وتُبلغ EditingFieldIndex / FocusedFormFieldIndex عن حالة المحرر الموضعي، ويخبر OnFormFieldAction المضيف كلما أطلق إجراء حقل

TPDFlibSignatureFieldInfo بنية سجل تحمل خصائص حقل توقيع نموذج تفاعلي داخل مستند PDF

معالجة مسبقة تنقّط الصفحات في تدفق لتقييد ذروة ذاكرة الصور، وتدعم التقدم والإلغاء التعاوني، وقد تعيد عدد صفحات جزئيًا بعد فشل أو إلغاء صفحة لاحقة

يبطل جمع المهملات المعرفات للصور والالتقاطات وحالات الرسومات وسائر الموارد المحذوفة غير القابلة للوصول، فاحصل على معرفات جديدة بعد هذا الاستدعاء عند استخدام خيار جمع المهملات

انظر أيضًا

RenderPageTileToStream, SetInformation, FlattenAnnotsOnPageRange