כיצד לעבוד עם מקטעים ב-.NET

כיצד לעבוד עם מקטעים ב-.NET

מדריך זה מציג כיצד ליצור שבירות סעיף, להגדיר הגדרות דף, ולנהל כותרות, כותרות תחתונות ועיצוב מרובה עמודות ב Aspose.Words FOSS עבור .NET, באמצעות ה Section and PageSetup classes. הוא מכסה קריאת הסעיפים שכבר קיימים במסמך, התחלת סעיף חדש עם DocumentBuilder, הגדרת ממדי הדף והמרווחים, הוספת וריאנטים של כותרת וכותרת תחתונה, וסידור טקסט הגוף בעמודות מרובות.

מדריך שלב-אחר-שלב

שלב 1: התקנת החבילה

Aspose.Words FOSS for .NET עדיין אינו מפרסם חבילת NuGet – במקום זאת יש לבנות את הספרייה מהמקור. שכפלו את https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, ואז בנו את Aspose.Words.sln בתצורת Release עם ערכת הפיתוח .NET והפנו את ההרכבה Aspose.Words שנוצרה מהפרויקט שלכם. הספרייה מכוונת ל.NET Standard 2.0, ולכן היא פועלת על .NET Framework 4.6.2+ ו-.NET 6/8/10.


שלב 2: ייבוא המחלקות הדרושות

הוסיפו הנחיית using Aspose.Words; – Section, PageSetup, HeaderFooter, וה-enum-ים הקשורים המשמשים במדריך זה קיימים ישירות במרחב השמות Aspose.Words לצד Document ו-DocumentBuilder.


שלב 3: קרא את החלקים שכבר קיימים במסמך

Document.Sections מחזיר SectionCollection שמחזיק את כל Section במסמך, כל אחד הוא CompositeNode שגם הוא חלק מעץ הצמתים הכולל. Document.FirstSection ו-Document.LastSection מספקים גישה ישירה לחלקים הגבוליים ללא איטרציה על האוסף. כל Section מכיל Body אחד – נגיש באותו האופן כמו כל Story אחר – וכאשר קיים, תוכן כותרת עליונה ותחתונה נגיש דרך Section.HeadersFooters.


שלב 4: התחל קטע חדש עם שבירת קטע

Call DocumentBuilder.InsertBreak(BreakType) במצב הסמן כדי להתחיל סעיף חדש. העבר BreakType.SectionBreakNewPage כאשר הסעיף החדש צריך תמיד להתחיל בעמוד חדש, BreakType.SectionBreakContinuous כאשר נדרש רק שינוי בהגדרות הדף (למשל, מעבר לטקסט מרובה עמודות) מבלי לאלץ שבירת עמוד, או BreakType.SectionBreakNewColumn, SectionBreakEvenPage, וגם SectionBreakOddPage עבור ההתנהגויות של תחילת פסקאות אחרות ש-Word תומך בהן. קו מקטע נושא את העיצוב עבור המקטע ש follows שלו, ולכן יש להגדיר PageSetup מאפיינים על החדש Section – לא על הקודם לפניו – ברגע שהפסקה מוזנת. DocumentBuilder.MoveToSection(sectionIndex) מזיז את הסמן לתחילת גוף של מקטע ספציפי, ו PageSetup.SectionStart קורא או מגדיר את SectionStart סוג הפסקה שכבר נרשם במקטע קיים.


שלב 5: הגדר ממדי עמוד ושוליים

כל Section.PageSetup הוא מופע של PageSetup. הגדר את PageWidth, PageHeight, LeftMargin, RightMargin, TopMargin, BottomMargin ו-Gutter עבור ממדי העמוד והשוליים, או הקצה ערכת Margins מראש ישירות ל-PageSetup.Margins. Orientation ו-PaperSize שולטות בכיוון העמוד וגודל הנייר. גבולות העמוד מוגדרים באמצעות Borders (‏BorderCollection), BorderAppliesTo (‏PageBorderAppliesTo), BorderDistanceFrom (‏PageBorderDistanceFrom), BorderAlwaysInFront, BorderSurroundsHeader ו-BorderSurroundsFooter. קרא ל-PageSetup.ClearFormatting() כדי לאפס את הגדרת העמוד של קטע לברירות המחדל לפני קונפיגורציה מאפס.


שלב 6: הוסף וקשר כותרות עליונות ותחתונות

Section.HeadersFooters הוא HeaderFooterCollection עם מקבלי גישה typed – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – לצד GetByHeaderFooterType() לחיפוש לפי HeaderFooterType ו-Add() להוספת אחד חדש. כל HeaderFooter הוא Story, מסומן כ-IsHeader ו-IsLinkedToPrevious. הפעל PageSetup.DifferentFirstPageHeaderFooter או PageSetup.OddAndEvenPagesHeaderFooter לפני הוספת הווריאנט המתאים HeaderFirst/FooterFirst או HeaderEven/FooterEven – הדגל והווריאנט פועלים רק יחד. קרא ל-HeaderFooterCollection.LinkToPrevious() כדי לחבר מחדש את הכותרת העליונה או התחתונה של קטע כדי שיורשת את תוכן הקטע הקודם, או לנתק אותה כדי שהקטע החדש יתחיל עם תוכן עצמאי.


שלב 7: פריסת טקסט הגוף בעמודות מרובות

PageSetup.TextColumns מחזיר TextColumnCollection עבור החלק. קרא ל-SetCount() עם מספר העמודות שאליו צריך לזרום טקסט הגוף, ואז התאם את EvenlySpaced, Spacing, LineBetween, ו-Width כדי לשלוט באופן שבו העמודות מוצגות. ברגע שהאוסף מכיל יותר מעמודה אחת, מופעי TextColumn בודדים חושפים את ה-Width וה-SpaceAfter שלהם.


שלב 8: ניקוי או עריכה קבוצתית של תוכן החלק

Section.AppendContent() ו-PrependContent() מעתיקים את תוכן הגוף של חלק אחר לתוך זה; ClearContent() מרוקן את גוף החלק בצורה קבוצתית. ClearHeadersFooters() ו-DeleteHeaderFooterShapes() מוחקים תוכן כותרת ותחתית בכל החלק מבלי להסיר את החלק עצמו.

בעיות נפוצות ותיקונים

הגדרת דף של קטע חדש אינה תואמת למה שהגדרתי PageSetup הוגדר על הלא נכון Section instance. שבירת קטע נושאת עיצוב עבור הקטע שמגיע אחריה – הגדר PageSetup על הקטע שמגיע אחרי InsertBreak(), לא על הקודם לפניו.

תוכן כותרת עליונה או תחתונה מהקטע הקודם מופיע באופן בלתי צפוי בקטע חדש הכותרת העליונה או התחתונה של הקטע החדש עדיין מקושרת לקטע הקודם. התקשר HeaderFooterCollection.LinkToPrevious(false), או הוסף תוכן כותרת/תחתונה מובחן לקטע החדש, כדי לנתק אותו.

כותרת/תחתית של העמוד הראשון או של עמוד זוגי מתעלמת DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, או ההתאמה HeaderFooterType הגרסה אינה קיימת ב Section.HeadersFooters. הגדר את הדגל על PageSetup והוסף יחד את גרסת הכותרת/תחתית המתאימה.

פריסת מרובה עמודות אינה חלה TextColumns.SetCount() היקראה עם ספירה של אחד, או בחלק הלא נכון של PageSetup. קרא SetCount() עם יותר מעמודה אחת במקטע היעד של PageSetup.TextColumns.

שבירת קטע הוכנסה במיקום הלא נכון של המסמך DocumentBuilder.InsertBreak(BreakType) מתבצעת הוספה במצב הסמן הנוכחי של הבונה. השתמש DocumentBuilder.MoveToSection() או לחברי המיקום האחרים של הבונה כדי למקם את הסמן לפני קריאה InsertBreak().

שאלות נפוצות

איך מתחילים קטע חדש מבלי להתחיל דף חדש?

הכנס הפסקת SectionBreakContinuous עם DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

איך נותנים לקטע מרווחים וכיוונון משלו?

הכנס הפסקת קטע, ואז הגדר את TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation, ו-PaperSize ב-PageSetup של הקטע החדש.

איך אני גורם לדף הראשון של קטע להשתמש בכותרת שונה?

הגדר PageSetup.DifferentFirstPageHeaderFooter = true על הקטע הזה, והוסף HeaderFooter מסוג HeaderFirst (ו-FooterFirst, אם נדרש) לאוסף HeadersFooters שלו.

איך אני מסדר את טקסט הגוף של קטע בשתי עמודות?

קרא ל-PageSetup.TextColumns.SetCount(2) על הקטע, ואז התאם את Spacing, EvenlySpaced, או ערכי TextColumn.Width בודדים לפי הצורך.

איך אני ניגש ישירות לקטעים הראשון והאחרון?

קרא Document.FirstSection ו-Document.LastSection במקום לאנדקס ב-Document.Sections.

ראה גם

 עברית