צינור רינדור
מתיעוד לתמונות דפים
בין OpenDocumentAsync ל‑PNG שמגיע לדפדפן יש שני שלבים מובחנים: פתרון הצופה (איזה מנוע טוען את המסמך, נקבע פעם אחת לכל פתיחה) ועיבוד דף (מה קורה לכל תמונת דף בכל בקשה). הידיעה על שני הדברים מסבירה מדוע פורמט מציג את עצמו כך — ומה DefaultRender באמת משנה.
שלב 1 — פתרון צופה הפורמט
המפעל ממפה את סיומת הקובץ לצופה דרך קטלוג הפורמט, עם שלושה רמות עדיפות:
- צופים מותאמים תחילה. כל מה שרשמת עם
DoconutOptions.RegisterViewer(extension, factory, defaultConfig?)מנצח על כל הצופים המובנים. - צופי משפחה מובנים. הקטלוג ממפה כל סיומת שניתנת לצפייה למשפחת צופה — Word, Excel, PowerPoint, Pdf, Cad, Dgn, Image, Tiff, Psd, Email, Visio, Project, Xps, Epub, Txt, Html, Mht, Dcn — שלכל אחת יש מתאם מנוע משלה. אם תוסף מורשה תורם צופה לאותה סיומת, צופה התוסף מחליף את הצופה המובנה.
AddDoconut()מאמת את זכויות התוסף הרשומות בעת ההפעלה; fallback של המפעל לצופה המובנה הוא כלל ריצה מגן. - פורמטים של תוסף בלבד. חלק מהסיומות אין להן צופה מובנה כלל — DICOM (
.dcm) קיים רק דרך תוסף DICOM. פתיחה של קובץ ללא היכולת הנדרשת גוררת זריקת:
LicenseException: This document type requires the 'Dicom' plugin license.סיומת שאין לה צופה מגרה את השגיאה:
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 — צינור תמונת‑דף
דפים מוצגים מעובדים לכל בקשה דרך רצף קבוע:
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/MPP | DefaultRender = false בתצורת הפורמט |
| זיכרון נמוך יותר במסמכים גדולים | CachePages = false, סגור מושבים במפורש |
| חותמת אישית על כל דף | DocOptions.Watermark |
האם דף זה היה מועיל?