צינור רינדור

מתוך מסמך לתמונות עמוד

בין 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() מאמת את זכויות התוסף הרשומות בעת ההפעלה; המעבר של המפעל למציג המובנה הוא כלל ריצה מגן.
  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

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