עבודה עם מקטעים
עבודה עם מקטעים
מסמך Word מחולק לחלק אחד או יותר, שלכל אחד יש את הגדרת העמוד שלו, השוליים, כותרות עליונות ותחתונות. Aspose.Words FOSS עבור .NET מייצג קטע כ Section צומת, המכילה Body ו, באופן רשות, כותרות עליונות ותחתונות, בנוסף PageSetup ששולט בפריסתו. דף זה מכסה את מודל האובייקט של הקטע, הגדרת העמוד, כותרות עליונות ותחתונות, ופריסת טקסט מרובת עמודות.
מודל האובייקט של המקטע
Document.Sections מחזיר SectionCollection – כל Section במסמך, שכל אחד הוא CompositeNode וחלק מעץ הצמתים. Section מכיל Body אחד (Story המחזיק את הפסקאות והטבלאות הראשיות של המקטע) ו-כאשר קיים, צמתים HeaderFooter הנגישים דרך Section.HeadersFooters, HeaderFooterCollection. Document.FirstSection ו-Document.LastSection מספקים גישה ישירה למקטעים הגבוליים. Section.AppendContent(), PrependContent() ו-ClearContent() משנים את תוכן הגוף של המקטע בכמות גדולה, בעוד ClearHeadersFooters() ו-DeleteHeaderFooterShapes() מנקים את תוכן הכותרת/תחתון.
יצירת מקטעים והפסקות מקטע
DocumentBuilder.InsertBreak(BreakType) מוסיף הפסקה במיקום הסמן; BreakType כולל SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage ו-SectionBreakOddPage להתחלת מקטע חדש, יחד עם הערכים שאינם מקטעים PageBreak, ColumnBreak, LineBreak ו-ParagraphBreak. DocumentBuilder.MoveToSection() מזיז את הסמן להתחלת הגוף של מקטע מסוים. PageSetup.SectionStart קורא או מגדיר את סוג ההפסקה SectionStart הרשומה במקטע קיים.
הגדרת עמוד
Section.PageSetup הוא PageSetup שמכסה ממדי דף ושוליים (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation ו-PaperSize, וגבולות דף לכל צד (Borders, BorderAppliesTo דרך PageBorderAppliesTo, BorderDistanceFrom דרך PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). מספור השורות נשלט על ידי LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText, ו-LineStartingNumber. PageSetup.ClearFormatting() מאפס זאת לברירות המחדל.
כותרות ותחתיות
Section.HeadersFooters הוא HeaderFooterCollection עם גישה טיפוסית – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – בנוסף ל-GetByHeaderFooterType(), Add(), ו-LinkToPrevious(). כל HeaderFooter הוא Story (כמו Body) שמזוהה לפי HeaderFooterType ומסומן כ-IsHeader / IsLinkedToPrevious. PageSetup.DifferentFirstPageHeaderFooter ו-PageSetup.OddAndEvenPagesHeaderFooter שולטים האם Word מצפה שהוריאנטים של כותרת/תחתית לדף הראשון ולדף זוגי ישמשו בכלל.
עמודות טקסט מרובות
PageSetup.TextColumns מחזיר TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) עם SetCount() לסידור גוף החלק בעמודות מרובות. עמודות בודדות הן מופעי TextColumn (Width, SpaceAfter) ברגע שהאוסף מתמלא ביותר מעמודה אחת.
טיפים ושיטות מומלצות
- מעבר קטע נושא את העיצוב עבור הקטע ש follows הוא – קובע
PageSetupמאפיינים עלSectionשיצרת זה עתה (אחריInsertBreak) משפיע על התוכן שמופיע אחרי השבירה, ולא לפניו. - השתמש ב-
SectionBreakContinuousכאשר אתה צריך רק שינוי בהגדרות הדף (למשל, מעבר לטקסט בעמודות מרובות) בלי להתחיל דף חדש; השתמש ב-SectionBreakNewPageכאשר על הקטע החדש תמיד להתחיל בדף ריק. HeaderFooterCollection.LinkToPrevious()מחבר מחדש את הכותרת/תחתונה של קטע כדי לרשת את תוכן הקטע הקודם – בצע זאת לפני כתיבת תוכן כותרת/תחתונה חדש אם אתה רוצה שהקטע החדש יתחיל באופן עצמאי מהקודם.PageSetup.DifferentFirstPageHeaderFooterו-OddAndEvenPagesHeaderFooterפועלים רק אם הגרסאות המתאימות שלHeaderFooterType(HeaderFirst,HeaderEven, וכן הלאה) אכן קיימות ב-Section.HeadersFooters– הפעל את הדגל והוסף את הכותרת/תחתונה המתאימה יחד.Section.BodyוכלHeaderFooterהם מופעים נפרדים שלStory–Range.Fields, סימניות, ופעולות אחרות בטווח עלBodyשל הקטע אינן חודרות אוטומטית אל הכותרות והתחתונות שלו.
בעיות נפוצות
| בעיה | סיבה | תיקון |
|---|---|---|
| הגדרת העמוד של הסעיף החדש אינה תואמת למה שהגדרתי | PageSetup הוגדר על המופע הלא נכון של Section | הגדר PageSetup בקטע ש follows ההפסקה, לא את זו שלפניה |
| תוכן הכותרת/תחתית מהקטע הקודם מופיע באופן בלתי צפוי בקטע חדש | הכותרות/התחתיות של החלק החדש עדיין מקושרות לחלק הקודם | הפעל את HeaderFooterCollection.LinkToPrevious(false) (או הוסף תוכן כותרת/תחתית ייחודי) כדי לנתק אותם |
| הכותרת/התחתית של העמוד הראשון או של עמוד זוגי מתעלמת | DifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter הוא false, או שהגרסה המתאימה של HeaderFooterType אינה קיימת | הגדר את הדגל ב-PageSetup וודא שהגרסה המתאימה של הכותרת/התחתית קיימת |
| פריסת מרובה עמודות אינה חלה | TextColumns.SetCount() נקראה עם ספירה של 1, או בחלק הלא נכון של PageSetup | הפעל את SetCount() עם יותר מעמודה אחת על PageSetup.TextColumns של החלק היעד |
FAQ
איך אפשר להתחיל קטע חדש מבלי להתחיל דף חדש?
הכנס שבירת SectionBreakContinuous עם DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).
איך לתת לקטע שוליים וכיוון משלו?
הוסף שבירת מקטע, ואז הגדר את המאפיינים ב-PageSetup של המקטע החדש – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation, ו-PaperSize.
איך אפשר לגרום לדף הראשון של המקטע להשתמש בכותרת שונה?
הגדר PageSetup.DifferentFirstPageHeaderFooter = true במקטע זה, והוסף HeaderFooter מסוג HeaderFirst (ו-FooterFirst, אם נדרש) לאוסף ה-HeadersFooters שלו.
איך לסדר את טקסט הגוף של המקטע בשתי עמודות?
קרא PageSetup.TextColumns.SetCount(2) על המקטע, ואז התאם את Spacing ו-EvenlySpaced / ערכי TextColumn.Width האישיים לפי הצורך.
API Reference סיכום
| מחלקה / Enum | תיאור |
|---|---|
Section | צומת קטע; Body, HeadersFooters, PageSetup |
SectionCollection | כל Section במסמך, דרך Document.Sections |
Body / Story | מכולת תוכן ראשית עבור קטע (Body) או כותרת/תחתית (HeaderFooter) |
PageSetup | מימדי העמוד, שוליים, כיוון, גבולות ועמודות עבור מקטע |
HeaderFooter / HeaderFooterCollection | תוכן כותרת/תחתית והמאקססים המוגדרים עבור מקטע |
HeaderFooterType | מזהה איזו גרסה של כותרת/כותרת תחתונה (primary, first, even) HeaderFooter הוא |
TextColumn / TextColumnCollection | פריסת טקסט מרובת עמודות עבור קטע |
PaperSize / Orientation / Margins | גודל העמוד, כיוון, וערכי שוליים מוגדרים מראש |
PageBorderAppliesTo / PageBorderDistanceFrom | באילו עמודים מודפס גבול העמוד, ומהו קצה ההתייחסות שלו |
SectionStart / BreakType | סוג הפסקת-קטע שנרשם על קטע, וסוגי ההפסקה DocumentBuilder.InsertBreak() מקבלים |
LineNumberRestartMode | כאשר מספור השורות האוטומטי מתחיל מחדש בתוך קטע |