خط لوله رندر

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

بین 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
  • آب‌نشان — بر اساس وضعیت مجوز (عدم وجود مجوز، موقت یا اشتراک منقضی‌شده، دامنه نامعتبر، نسخه نادرست) و از DocOptions.Watermark برای متن سفارشی شما اعمال می‌شود. برنامه‌ای که به‌درستی مجوز دارد — یا مجوز موقت فعال — و واترمارک سفارشی ندارد، این مرحله را نادیده می‌گیرد.
  • چرخش/وارونگی — وضعیت صفحه‑به‑صفحه‌ای که کاربر در ویجت تنظیم می‌کند (۹۰°/۱۸۰°/۲۷۰°، وارونگی افقی/عمودی) در جلسه ذخیره می‌شود و در هر رندر بعدی آن صفحه اعمال می‌شود.
  • مقیاس — تصویرهای بندانگشتی و سطوح زوم با مقیاس‌بندی صفحه رندر شده به اندازه هدف درخواست‌شده تولید می‌شوند؛ 0 به معنای ارائه در اندازه اصلی است.
  • سوزاندن حاشیه‌نویسی — حاشیه‌نویسی‌های ذخیره‌شده بر روی بیت‌مپ کشیده می‌شوند تا خروجی‌ها و تصاویر صفحه آن‌ها را نشان دهند.
  • رمزگذاری — نتیجه به PNG رمزگذاری می‌شود با استفاده از استریم‌های حافظهٔ مشترک و مستقیماً به پاسخ HTTP نوشته می‌شود.

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

کش کردن صفحات

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

کجا چه چیزی را تنظیم کنیم

چه می‌خواهیدتنظیم
صفحات واضح‌ترImageResolution در پیکربندی فرمت
جستجوی دقیق متن در HTML/EPUB/email/MHT/MPPDefaultRender = false در پیکربندی فرمت
مصرف حافظه کمتر در اسناد بزرگCachePages = false، جلسات را به‌صورت صریح ببندید
مهر یا متن دلخواه شما روی هر صفحهDocOptions.Watermark

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