خط أنابيب العرض
من المستند إلى صور الصفحات
بين OpenDocumentAsync وملف PNG الذي يصل إلى المتصفح هناك مرحلتان مميزتان: حل العارض (أي المحرك الذي يحمل المستند، يُحدد مرة واحدة عند الفتح) و معالجة الصفحة (ما يحدث لكل صورة صفحة عند كل طلب). معرفة كلاهما يوضح لماذا تُعرض صيغة معينة بهذه الطريقة — وما الذي يفعله DefaultRender فعليًا.
المرحلة 1 — حل عارض الصيغة
يقوم المصنع بربط امتداد الملف بعارض عبر كتالوج الصيغ، مع ثلاثة مستويات من الأولوية:
- العارضات المخصصة أولاً. أي شيء سجلته باستخدام
DoconutOptions.RegisterViewer(extension, factory, defaultConfig?)يتفوق على جميع العارضات المدمجة. - عائلات العارضات المدمجة. يربط الكتالوج كل امتداد قابل للعرض بعائلة عارض — Word, Excel, PowerPoint, Pdf, Cad, Dgn, Image, Tiff, Psd, Email, Visio, Project, Xps, Epub, Txt, Html, Mht, Dcn — كل منها بموصل محرك خاص به. إذا كان مكوّن إضافي مرخص يضيف عارضًا لنفس الامتداد، فإن عارض المكوّن الإضافي يحل محل المدمج.
AddDoconut()يتحقق من صلاحيات المكوّن الإضافي المسجل عند بدء التشغيل؛ والعودة إلى العارض المدمج من قبل المصنع هي قاعدة تشغيلية دفاعية. - الصيغ التي تعتمد على المكوّن الإضافي فقط. بعض الامتدادات لا تمتلك عارضًا مدمجًا على الإطلاق — DICOM (
.dcm) موجود فقط عبر مكوّن DICOM الإضافي. فتح أحدها بدون القدرة المطلوبة يطرح الاستثناء:
LicenseException: This document type requires the 'Dicom' plugin license.امتداد لا يدعي أي عارض يرفع الاستثناء:
FormatNotSupportedException: Document format '<extension>' is not supported.بعد الحل، يتم تثبيت التكوين: كائن التكوين الصريح إذا قمت بتمريره، وإلا التكوين الافتراضي للصيغة من الكتالوج. يتم نسخ DocOptions.Password إلى التكوين للمستندات المحمية.
المرحلة 1ب — وضع التحويل (DefaultRender = false)
معظم التكوينات الخاصة بكل صيغة تعرض علم DefaultRender. يختار بين مسارين مختلفين جوهريًا:
DefaultRender = true— يُعرض المستند أصليًا، مباشرة إلى صور الصفحات.DefaultRender = false— يُحوَّل المستند أولاً إلى PDF في الذاكرة، يُحرّر محرك المصدر، ويتولى عارض PDF المهمة. يضمّن PDF المُنتج نصًا حقيقيًا، لذا يحصل البحث النصي الكامل على تظليل أصلي بدقة البكسل؛ يفرض خط الأنابيب تشغيلAllowSearchوAllowCopyللـ PDF المحوَّل لأن التحويل غير مرئي للمستخدم.
يستخدم XPS والافتراضي في الكتالوج لـ MHT مسار التحويل. يمكن لإسقاط PDF أن يوفر بحثًا أصليًا لصيغ مثل HTML وMicrosoft Project. إذا كان PDF الناتج يحتوي على صور بدون طبقة نصية، فإن العارض القياسي لا يستطيع البحث في تلك البكسلات.
استخدم وضع التحويل عندما تحتاج إلى إسقاط PDF يحتوي على نص — على حساب تحويل مبدئي عند فتح المستند.
المرحلة 2 — خط أنابيب صورة الصفحة
تُعالج الصفحات المرسومة لكل طلب عبر تسلسل ثابت:
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response- العلامة المائية — تُطبق بناءً على حالة الترخيص (ترخيص مفقود، مؤقت منتهي أو اشتراك، نطاق غير صالح، نسخة خاطئة) ومن
DocOptions.Watermarkللنص المخصص الخاص بك. التطبيق المرخص بشكل صحيح — أو ترخيص مؤقت نشط — بدون علامة مائية مخصصة يتخطى هذه الخطوة. - الدوران/القلب — حالة كل صفحة يحددها المستخدم في الواجهة (90°/180°/270°، قلب أفقي/عمودي) تُخزن في الجلسة وتُطبق في كل عرض لاحق لتلك الصفحة.
- التحجيم — تُنتج المصغرات ومستويات التكبير عن طريق تحجيم الصفحة المرسومة إلى الحجم المستهدف المطلوب؛
0يعني الإرسال بالحجم الأصلي. - حرق التعليقات التوضيحية — تُرسم التعليقات التوضيحية المحفوظة على البت ماب بحيث تظهر في الصادرات وصور الصفحات.
- الترميز — يتم ترميز النتيجة إلى PNG باستخدام تدفقات الذاكرة المشتركة وتُكتب مباشرة إلى استجابة HTTP.
الأخطاء داخل الوسيط تُعاد كـ صور خطأ PNG (نص أحمر على خلفية بيضاء) بدلاً من صفحات خطأ HTTP، حتى يتمكن الواجهة من عرضها في منطقة الصفحة.
تخزين الصفحات مؤقتًا
BaseConfig.CachePages (الافتراضي true) يحتفظ بصور الصفحات المرسومة في الذاكرة طوال مدة جلسة المستند، لذا إعادة زيارة صفحة لا تُعيد رسمها. BaseConfig.ImageResolution (25–300 DPI، 0 = الافتراضي للصيغة) هو المقياس الرئيسي للجودة/الذاكرة؛ الافتراضي لكل صيغة موثق في صفحة تكوينها.
DocOptions.ImageResolution مهمل ولا يتحكم في جودة العرض. إذا كنت تنقل تطبيقًا من المكتبة السابقة، انقل تلك القيمة إلى تكوين الصيغة — سيُظهر المترجم كل موقع استدعاء.
العرض على عقدة واحدة مقابل عدة عقد
كل ما سبق يصف عرضًا على عقدة واحدة عند الطلب للجلسة التي فتحت المستند. النشر حيث تقوم عقدة واحدة بعرض ونشر مجموعة الأصول بالكامل، وتقوم العقد الأخرى بخدمة تلك الصفحات من تخزين مشترك، يستخدم مسار قراءة مختلف — راجع النشر الموزع.
أين تُضبط ماذا
| ما تريد | الإعداد |
|---|---|
| صفحات أكثر وضوحًا | ImageResolution on the format config |
| بحث نصي دقيق على HTML/EPUB/البريد الإلكتروني/MHT/MPP | DefaultRender = false on the format config |
| استهلاك ذاكرة أقل في المستندات الضخمة | CachePages = false, close sessions explicitly |
| ختمك الخاص على كل صفحة | DocOptions.Watermark |
هل كانت هذه الصفحة مفيدة؟