خط لوله رندر

از سند تا تصاویر صفحه

بین OpenDocumentAsync و PNGی که به مرورگر می‌رسد دو مرحلهٔ متمایز وجود دارد: حل‌کنندهٔ نمایشگر (کدام موتور سند را بارگذاری می‌کند، که یک‌بار برای هر باز کردن تصمیم‌گیری می‌شود) و پردازش صفحه (چه اتفاقی برای هر تصویر صفحه در هر درخواست می‌افتد). دانستن هر دو سبب می‌شود بفهمیم چرا یک فرمت به‌این شکل رندر می‌شود — و DefaultRender واقعاً چه چیزی را تغییر می‌دهد.

مرحله ۱ — حل‌کنندهٔ نمایشگر فرمت

کارخانهٔ نمایشگر، پسوند فایل را از طریق فهرست فرمت‌ها به یک نمایشگر مرتبط می‌کند و این کار با سه سطح اولویت انجام می‌شود:

  1. نمایشگرهای سفارشی ابتدا. هر چیزی که با DoconutOptions.RegisterViewer(extension, factory, defaultConfig?) ثبت کرده‌اید، بر تمام نمایشگرهای پیش‌فرض برتری دارد.
  2. نمایشگرهای خانواده‌ای داخلی. فهرست هر پسوند قابل نمایش را به یک خانوادهٔ نمایشگر — Word، Excel، PowerPoint، Pdf، Cad، Dgn، Image، Tiff، Psd، Email، Visio، Project، Xps، Epub، Txt، Html، Mht، Dcn — مرتبط می‌کند که هر کدام آداپتور موتور مخصوص خود را دارند. اگر یک افزونهٔ دارای مجوز، نمایشگری برای همان پسوند ارائه دهد، نمایشگر افزونه جایگزین نمایشگر داخلی می‌شود. AddDoconut() در زمان راه‌اندازی، مجوزهای ثبت‌شدهٔ افزونه‌ها را اعتبارسنجی می‌کند؛ بازگشت کارخانه به نمایشگر داخلی یک قانون دفاعی در زمان اجرا است.
  3. فرمت‌های فقط‑افزونه‌ای. برخی پسوندها اصلاً نمایشگر داخلی ندارند — DICOM (.dcm) فقط از طریق افزونهٔ DICOM موجود است. باز کردن چنین فایلی بدون داشتن قابلیت مورد نیاز خطای زیر را می‌اندازد:
text
LicenseException: This document type requires the 'Dicom' plugin license.

یک پسوند که هیچ نمایشگری برای آن تعریف نشده باشد، خطای زیر را ایجاد می‌کند:

text
FormatNotSupportedException: Document format '<extension>' is not supported.

پس از حل‌کننده، پیکربندی نهایی می‌شود: اگر شیء پیکربندی صریحی را پاس داده باشید، همان استفاده می‌شود؛ در غیر این صورت پیکربندی پیش‌فرض فرمت از فهرست گرفته می‌شود. DocOptions.Password برای اسناد محافظت‌شده به پیکربندی کپی می‌شود.

مرحله ۱b — حالت تغییر مسیر (DefaultRender = false)

اکثریت پیکربندی‌های هر فرمت، پرچم DefaultRender را ارائه می‌دهند. این پرچم بین دو مسیر اساسی متفاوت انتخاب می‌کند:

  • DefaultRender = true — سند به‌صورت بومی رندر می‌شود و مستقیماً به تصاویر صفحه تبدیل می‌گردد.
  • DefaultRender = false — ابتدا سند به‌صورت PDF در حافظه تبدیل می‌شود، موتور منبع آزاد می‌گردد و یک نمایشگر PDF کار را بر عهده می‌گیرد. PDF تولید شده متن واقعی را در خود جای می‌دهد، بنابراین جستجوی تمام‑متن با هایلایت‌های بومی دقیق به‑پیکسل امکان‌پذیر می‌شود؛ خط لوله AllowSearch و AllowCopy را برای PDF تغییر مسیر فعال می‌کند چون تبدیل برای کاربر نامرئی است.

XPS و پیش‌فرض فهرست برای MHT از مسیر تغییر مسیر استفاده می‌کنند. یک پروجکشن PDF می‌تواند جستجوی بومی برای فرمت‌هایی مانند HTML و Microsoft Project فراهم کند. اگر PDF حاصل شامل تصاویری بدون لایهٔ متنی باشد، نمایشگر استاندارد نمی‌تواند آن پیکسل‌ها را جستجو کند.

از حالت تغییر مسیر زمانی استفاده کنید که به یک پروجکشن PDF حاوی متن نیاز دارید — با این هزینهٔ تبدیل اولیه هنگام باز کردن سند.

مرحله ۲ — خط لولهٔ تصویر‑صفحه

صفحات رندر شده برای هر درخواست از طریق یک توالی ثابت پردازش می‌شوند:

text
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response
  • Watermark — از وضعیت مجوز (عدم وجود مجوز، انقضای موقت یا اشتراک، دامنه نامعتبر، نسخهٔ نادرست) و از DocOptions.Watermark برای متن سفارشی شما اعمال می‌شود. یک برنامه با مجوز صحیح — یا یک مجوز موقت فعال — که واترمارک سفارشی نداشته باشد، این مرحله را نادیده می‌گیرد.
  • Rotate/flip — وضعیت صفحه‌ای که کاربر در ویجت تنظیم می‌کند (۹۰°/۱۸۰°/۲۷۰°، چرخش افقی/عمودی) در جلسه ذخیره می‌شود و در هر رندر بعدی آن صفحه اعمال می‌گردد.
  • Scale — تصویرهای بندانگشتی و سطوح زوم با مقیاس‌بندی صفحه رندر شده به اندازهٔ هدف درخواست‌شده تولید می‌شوند؛ 0 به معنای ارائه به اندازهٔ اصلی است.
  • Annotation burn — حاشیه‌نویسی‌های ذخیره‌شده بر روی بیت‌مپ کشیده می‌شوند تا در خروجی‌ها و تصاویر صفحه نشان داده شوند.
  • Encoding — نتیجه به‌صورت PNG با استفاده از استریم‌های حافظهٔ مشترک رمزگذاری شده و مستقیماً به پاسخ HTTP نوشته می‌شود.

خطاهای داخل میدل‌ویر به‌صورت تصاویر خطای PNG (متن قرمز روی پس‌زمینهٔ سفید) بازگردانده می‌شوند نه به‌صورت صفحات خطای HTTP، به‌طوری که ویجت بتواند آن‌ها را در ناحیهٔ صفحه نمایش دهد.

کش‌گذاری صفحه

BaseConfig.CachePages (پیش‌فرض true) تصاویر صفحهٔ رندر شده را در حافظه برای طول عمر جلسهٔ سند نگه می‌دارد، بنابراین بازدید مجدد از یک صفحه باعث رندر دوبارهٔ آن نمی‌شود. BaseConfig.ImageResolution (۲۵–۳۰۰ DPI، 0 = پیش‌فرض فرمت) اصلی‌ترین تنظیم کیفیت/حافظه است؛ پیش‌فرض هر فرمت در صفحهٔ پیکربندی آن مستند شده است.

کجا چه تنظیمی انجام شود

چه می‌خواهیدتنظیم
صفحات واضح‌ترImageResolution on the format config
جستجوی دقیق متن در HTML/EPUB/email/MHT/MPPDefaultRender = false on the format config
حافظه کمتر برای اسناد بزرگCachePages = false, close sessions explicitly
مهر شخصی شما بر هر صفحهDocOptions.Watermark

آیا این صفحه مفید بود؟