כיצד לטעון מסמכי Word ב-.NET
כיצד לטעון מסמכי Word ב-.NET
Aspose.Words FOSS עבור .NET קורא מסמך לזיכרון ברגע שאתה בונה a Document object — כל נתיב טעינה בספרייה מתעביר דרך Documentהעמסת הקונסטרוקטורים של ’s וה LoadOptions class. מדריך זה מראה כיצד לטעון מסמך מקובץ או זרם, לספק סיסמה או הגדרות ספציפיות לפורמט, ולשלוט במה שקורה כאשר טעינה נתקלת במשאב חיצוני או במסמך שעשוי להיות פגום. Aspose.Words FOSS עבור .NET נבנה ממקור ומופנה ישירות בפרויקט במקום להיות מותקן ממאגר חבילות — ראה את מדריך ההתקנה לצעדי הבנייה לפני העבודה על המשימות למטה.
מדריך שלב-אחר-שלב
שלב 1: טעינת מסמך מקובץ או מזרם
Document מכיל חמישה בוניונים. Document() יוצר מסמך חדש וריק במקום לטעון קיים. Document(fileName) טוען ישירות מנתיב על הדיסק, ו-Document(stream) טוען מכל Stream קריא — שימושי כאשר המקור אינו קובץ, כגון תוכן שכבר נמצא בזיכרון או שהתקבל דרך חיבור רשת. שניהם כוללים הצפת בן-זוג המקבלת ארגומנט שני, Document(fileName, loadOptions) ו-Document(stream, loadOptions), שהיא נקודת הכניסה לכל משימה אחרת במדריך זה.
שלב 2: טעינת מסמך המוגן בסיסמה
צור LoadOptions עם הסיסמה לפני קריאה ל-Document(fileName, loadOptions) (או לטעינה העודפת של הזרם). new LoadOptions(password) מגדיר את LoadOptions.Password ישירות; לחלופין, הגדר את Password במופע LoadOptions() ללא פרמטרים לפני העברתו. ספק את הסיסמה מראש במקום לטעון תחילה ולהגיב לכישלון — Aspose.Words FOSS עבור .NET זקוק לסיסמה כדי לנתח קובץ מוגן בכלל, ולכן אין מצב טעינה חלקית שממנו ניתן להתאושש.
שלב 3: החל אפשרויות ספציפיות לפורמט עבור מקורות טקסט ו-Markdown
קובצי טקסט פשוט ו-Markdown מקבלים הגדרות שה-LoadOptions הבסיסי אינו חושף. TxtLoadOptions מוסיף AutoNumberingDetection ו-DetectNumberingWithWhitespaces לזיהוי רשימות ממוספרות בטקסט פשוט, DetectHyperlinks להפיכת כתובות URL חשופות לקישורים, DocumentDirection (LeftToRight, RightToLeft או Auto) לכיוון זרימת הטקסט, ו-LeadingSpacesOptions/TrailingSpacesOptions נפרדים (מסוג TxtLeadingSpacesOptions/TxtTrailingSpacesOptions) לטיפול ברווחים בתחילת וסוף כל שורה. MarkdownLoadOptions מוסיף את PreserveEmptyLines, ImportUnderlineFormatting ו-SoftLineBreakCharacter לשליטה כיצד קונבנציות השבירת שורה של Markdown ממופות לפסקאות ולרצים. שני המ subclasses יורשים מ-LoadOptions, ולכן סיסמה או קריית-טעינת-משאב שהוגדרה על אחד מהם מתנהגת זהה לזו של המחלקה הבסיסית — העבר את המופע הספציפי לפורמט ל-Document(fileName, loadOptions) בדיוק כפי שהיית מעביר LoadOptions רגיל.
שלב 4: הפנה מחדש או תפוס משאבים חיצוניים במהלך הטעינה
הגדר את LoadOptions.ResourceLoadingCallback למימוש של IResourceLoadingCallback כאשר עליך לשלוט באופן שבו משאב חיצוני המתואר במסמך נפתר בזמן הטעינה. המתודה ResourceLoading(args) שלו מקבלת ResourceLoadingArgs המתארת את ResourceType של המשאב (Image, Font, CssStyleSheet או Document) יחד עם Uri ו-OriginalUri, ומחזירה ResourceLoadingAction — Default כדי לטעון את המשאב כרגיל, Skip כדי להשמיט אותו, או UserProvided כדי להחליף בנתונים שסופקו דרך ResourceLoadingArgs.SetData(data).
שלב 5: הגדר ערכי ברירת מחדל לשפה והתנהגות התאוששות
כאשר המטא-נתונים של השפה במסמך חסרים או לא אמינים, הגדר את LoadOptions.LanguagePreferences.DefaultEditingLanguage לערך EditingLanguage לפני הטעינה, והשתמש ב-AddEditingLanguage(language) או AddEditingLanguages(languages) על LanguagePreferences כדי לרשום שפות נוספות שהמסמך עשוי לכלול. עבור מקורות שעשויים להיות פגומים, הגדר את LoadOptions.RecoveryMode לערך DocumentRecoveryMode — None לטעון ללא שום ניסיון התאוששות, או TryRecover כדי שהטוען ימצא פתרון לבעיות מבניות מסוימות במקום להיכשל לחלוטין.
בעיות נפוצות ותיקונים
טעינת מסמך מוגן בסיסמה עדיין זורקת יוצאת מן הכלל לאחר אספקת סיסמה. אשר שהסיסמה הוגדרה על ה- LoadOptions מופע שהועבר ל Document(fileName, loadOptions) (או העומס של הזרם) — דרך new LoadOptions(password) או על-ידי הגדרה Password לאחר מכן — ושזהו האובייקט שבאמת הועבר לבונה. A LoadOptions שנוצר אך מעולם לא נמסר ל Document אין לו שום השפעה על הטעינה.
הגדרות ספציפיות לטקסט או ל-Markdown אינן נראות כמופעלות. בדוק ש- TxtLoadOptions or MarkdownLoadOptions instance — לא הבסיס LoadOptions — נשלח ל- Document constructor. רק תת-המחלקה חושפת את המאפיינים הספציפיים לפורמט; העברת מחלקת הבסיס מתקמפל אך משמטת אותם בשקט.
המשאבים החיצוניים אינם נלכדים או מנותבים מחדש. ResourceLoadingCallback חייב להיות מוגדר על אותו LoadOptions אובייקט שהועבר ל- Document constructor, והוא חייב להיות מוקצה לפני קריאת ה-load. הקצאה לאחר שהטעינה כבר הסתיימה אינה משפיעה.
מסמך פגום עדיין נכשל בטעינה לאחר ההגדרה RecoveryMode. DocumentRecoveryMode.TryRecover מאפשר למטען לעקוף כמה בעיות מבניות במסמך, אך נזק חמור יותר עדיין עלול למנוע מהמסמך לטעון בהצלחה.
מסמך שנטען מ- Stream מתנהג בצורה שונה מהקובץ הזהה שנטען באמצעות נתיב. ודא שמיקום הזרם נמצא בתחילה לפני שמעבירים אותו ל- Document(stream) or Document(stream, loadOptions) — זרם שנשאר באמצע תוכנו טוען רק את הבתים שנשארו.
שאלות נפוצות
איך אני טוען מסמך ללא אפשרויות מיוחדות?
העבר נתיב קובץ או Stream ישירות ל-Document(fileName) או Document(stream) — LoadOptions נדרש רק כאשר נדרשת סיסמה, הגדרות ספציפיות לפורמט, או קריאה חוזרת.
מה ההבדל בין LoadOptions, TxtLoadOptions ו-MarkdownLoadOptions?
TxtLoadOptions ו-MarkdownLoadOptions שניהם נגזרים מ-LoadOptions ומוסיפים הגדרות ספציפיות למקורות טקסט רגיל ול-Markdown בהתאמה. כל תכונת LoadOptions כללית — סיסמה, קידוד, קריאות חוזרות — נשארת זמינה בכל אחת מהתתי-מחלקות.
האם אני יכול לטעון מסמך ישירות ממערך בתים?
עטוף את הבייטים ב-MemoryStream והעבר את הזרם הזה ל-Document(stream) או Document(stream, loadOptions) — אין בנאי שמקבל מערך בתים ישירות.
איך אני שולט במה שמתרחש כאשר המטען אינו יכול לפתור משאב חיצוני?
מימוש את IResourceLoadingCallback והקצה אותו ל-LoadOptions.ResourceLoadingCallback. החזר ResourceLoadingAction.Skip מ-ResourceLoading(args) כדי לדלג על המשאב במקום לאפשר לכשל בטעינה.
האם הגדרת RecoveryMode משנה את אופן טעינת מסמך תקין?
לא. DocumentRecoveryMode משנה את ההתנהגות רק כאשר הטוען נתקל בפועל בבעיות מבנה — מסמך בעל מבנה תקין נטען באותו אופן ללא קשר להגדרה.