צינור רינדור

מתיעוד לתמונות דפים

בין OpenDocumentAsync ל‑PNG שמגיע לדפדפן יש שני שלבים מובחנים: פתרון הצופה (איזה מנוע טוען את המסמך, נקבע פעם אחת לכל פתיחה) ועיבוד דף (מה קורה לכל תמונת דף בכל בקשה). הידיעה על שני הדברים מסבירה מדוע פורמט מציג את עצמו כך — ומה DefaultRender באמת משנה.

שלב 1 — פתרון צופה הפורמט

המפעל ממפה את סיומת הקובץ לצופה דרך קטלוג הפורמט, עם שלושה רמות עדיפות:

  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() מאמת את זכויות התוסף הרשומות בעת ההפעלה; fallback של המפעל לצופה המובנה הוא כלל ריצה מגן.
  3. פורמטים של תוסף בלבד. חלק מהסיומות אין להן צופה מובנה כלל — DICOM (.dcm) קיים רק דרך תוסף DICOM. פתיחה של קובץ ללא היכולת הנדרשת גוררת זריקת:
text
LicenseException: This document type requires the 'Dicom' plugin license.

סיומת שאין לה צופה מגרה את השגיאה:

text
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 — צינור תמונת‑דף

דפים מוצגים מעובדים לכל בקשה דרך רצף קבוע:

text
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 = ברירת המחדל של הפורמט) הוא המדד המרכזי לאיכות/זיכרון; ברירת המחדל של כל פורמט מתועדת בדף התצורה שלו.

היכן לכוונן מה

מה אתה רוצהכוונון
דפים חדים יותרImageResolution בתצורת הפורמט
חיפוש טקסט מדויק ב‑HTML/EPUB/דוא"ל/MHT/MPPDefaultRender = false בתצורת הפורמט
זיכרון נמוך יותר במסמכים גדוליםCachePages = false, סגור מושבים במפורש
חותמת אישית על כל דףDocOptions.Watermark

האם דף זה היה מועיל?