خط لوله رندر
از سند تا تصاویر صفحه
بین OpenDocumentAsync و PNGی که به مرورگر میرسد دو مرحله متمایز وجود دارد: حلکنندهٔ نمایشگر (کدام موتور سند را بارگذاری میکند، یک بار برای هر باز کردن تصمیمگیری میشود) و پردازش صفحه (آنچه برای هر تصویر صفحه در هر درخواست رخ میدهد). دانستن هر دو توضیح میدهد چرا یک فرمت به آن شکل رندر میشود — و DefaultRender واقعاً چه چیزی را تغییر میدهد.
مرحله ۱ — حل فرمت نمایشگر
کارخانه پسوند فایل را از طریق فهرست فرمت به یک نمایشگر نگاشت میکند، با سه سطح اولویت:
- نمایشگرهای سفارشی ابتدا. هر چیزی که با
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 در پیکربندی برای اسناد محافظتشده کپی میشود.
مرحله ۱b — حالت تغییر مسیر (DefaultRender = false)
اکثر پیکربندیهای هر فرمت یک پرچم DefaultRender را افشا میکنند. این پرچم بین دو مسیر اساسی متفاوت انتخاب میکند:
DefaultRender = true— سند بهصورت بومی رندر میشود، مستقیم به تصاویر صفحه.DefaultRender = false— سند ابتدا به PDF در حافظه تبدیل میشود، موتور منبع آزاد میگردد و یک نمایشگر PDF بر عهده میگیرد. PDF تولید شده متن واقعی را در خود جای میدهد، بنابراین جستجوی تمام متن، هایلایتهای بومی دقیق به پیکسل را دریافت میکند؛ خط لولهAllowSearchوAllowCopyرا برای PDF تغییر مسیر فعال میکند چون تبدیل برای کاربر نامرئی است.
XPS و پیشفرض فهرست برای MHT از مسیر تغییر مسیر استفاده میکنند. یک پروجکشن PDF میتواند جستجوی بومی را برای فرمتهایی مانند HTML و Microsoft Project فراهم کند. اگر PDF حاصل شامل تصاویری بدون لایهٔ متن باشد، نمایشگر استاندارد نمیتواند آن پیکسلها را جستجو کند.
از حالت تغییر مسیر استفاده کنید وقتی به یک پروجکشن PDF حاوی متن نیاز دارید — به هزینهٔ تبدیل پیشاز پیش هنگام باز کردن سند.
مرحله ۲ — خط لوله تصویر‑صفحه
صفحات رندر شده برای هر درخواست از طریق یک توالی ثابت پردازش میشوند:
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 (۲۵–۳۰۰ DPI، 0 = پیشفرض فرمت) دیال اصلی کیفیت/حافظه است؛ پیشفرض هر فرمت در صفحهٔ پیکربندی خود مستند شده است.
DocOptions.ImageResolution منسوخ شده و کیفیت رندر را کنترل نمیکند. اگر برنامهای را از کتابخانهٔ قبلی بهروزرسانی میکنید، آن مقدار را به پیکربندی فرمت منتقل کنید — کامپایلر هر نقطهٔ فراخوانی را نشان میدهد.
رندرینگ بر روی یک گره در مقابل چند گره
همهٔ موارد بالا توصیف رندرینگ یک گرهٔ تک بهصورت درخواستمحور برای جلسهای است که سند را باز کرده است. یک استقرار که در آن یک گره رندر میکند و کل مجموعهٔ آرتیفکت را منتشر میکند، و گرههای دیگر آن صفحات را از ذخیرهسازی مشترک سرو میکنند، مسیر خواندن متفاوتی دارد — ببینید استقرارهای توزیعشده.
کجا چه چیزی را تنظیم کنیم
| چه میخواهید | تنظیم |
|---|---|
| صفحات واضحتر | ImageResolution در پیکربندی فرمت |
| جستجوی دقیق متن در HTML/EPUB/email/MHT/MPP | DefaultRender = false در پیکربندی فرمت |
| حافظه کمتر برای اسناد بزرگ | CachePages = false، جلسات را بهصورت صریح ببندید |
| مهر خودتان بر هر صفحه | DocOptions.Watermark |
آیا این صفحه مفید بود؟