צינור רינדור

מתוך מסמך לתמונות דפים

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

סיומת שאין לה מציג שמטפל בה תגרום ל‑FormatNotSupportedException.

אחרי הפתרון, תצורת ההגדרות מתייצבת: אובייקט התצורה המפורש שלך אם העברת אחד, אחרת תצורת ברירת המחדל של הפורמט מהקטלוג. DocOptions.Password מועתק לתצורה עבור מסמכים מוגנים.

שלב 1ב — מצב הפניה (DefaultRender = false)

רוב התצורות לכל פורמט חושפות דגל DefaultRender. הוא בוחר בין שני מסלולים שונים באופן יסודי:

  • DefaultRender = true — המסמך מציג באופן מקורי, ישירות לתמונות דפים.
  • DefaultRender = false — המסמך קודם כל מומר ל‑PDF בזיכרון, מנוע המקור משוחרר, ומציג PDF לוקח את ההצגה. ה‑PDF שנוצר מכיל טקסט אמיתי, ולכן חיפוש טקסט מלא מקבל הדגשות מדויקות; הצינור מפעיל AllowSearch ו‑AllowCopy עבור ה‑PDF המופנה, מכיוון שההמרה אינה נראית למשתמש.

XPS, ו‑MHT כברירת מחדל, משתמשים במסלול ההפניה. פרויקט PDF מספק חיפוש מקורי לפורמטים כגון HTML ו‑Microsoft Project. אם ה‑PDF שנוצר מכיל תמונות ללא שכבת טקסט, הפיקסלים הללו אינם ניתנים לחיפוש.

השתמש במצב הפניה כאשר אתה זקוק לפרויקט שניתן לחיפוש, נושא טקסט — על חשבון המרה מראש כאשר המסמך נפתח.

שלב 2 — צינור תמונת‑דף

כל בקשת דף ל‑DocImage.axd מריצה רצף קבוע:

text
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response
  • סימן מים — מוחל ממצב הרישיון (אין רישיון, רישיון זמני או מנוי שפג תוקפו, תחום לא תקף, גרסה מחוץ לגרסאות הרישיון) וכן מ‑DocOptions.Watermark עבור הטקסט שלך. אתר מורשה ללא סימן מים מותאם אישית מדלג על שלב זה.
  • סיבוב/הפיכה — מצב לכל דף שהמשתמש מגדיר בווידג'ט (90°/180°/270°, הפיכות אופקיות ואנכיות) נשמר במפגש ומיושם על כל רינדור מאוחר יותר של הדף.
  • קנה מידה — תמונות ממוזערות ורמות זום נוצרות על ידי שינוי גודל של הדף המוצג לגודל המבוקש.
  • שריפת הערות — ההערות השמורות מצוירות על גבי המפת סיביות, כך שייצוא ותמונות דפים מציגים אותן.
  • קידוד — התוצאה מקודדת כ‑PNG ונכתבת ישירות לתגובה.

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

אחסון דפים במטמון

BaseConfig.CachePages (ברירת מחדל true) שומר תמונות דפים שהוצגו בזיכרון לכל משך חיי מושב המסמך, כך שביקור חוזר בדף אינו מציג אותו מחדש. BaseConfig.ImageResolution (25–300 DPI, 0 = ברירת המחדל של הפורמט) הוא המדד המרכזי לאיכות וזיכרון; ברירת המחדל של כל פורמט מפורטת ב‑תצורת פורמטים.

בצומת יחיד, מושבים ודפים במטמון חיים בזיכרון של תהליך העובד. מחזור של בריכת יישומים — מתוזמן, או מופעל על ידי עריכת Web.config או פקיעת זמן חוסר פעילות — משחרר כל מושב מסמך פתוח, והווידג'ט מציג אז Document session not found. Please re-open document. במצב מבוזר (ראו מושבים ואבטחה), מושב נבנה מחדש מהמאגר המשותף.

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

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

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