Εργασία με Ενότητες

Εργασία με Ενότητες

Ένα έγγραφο 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 και βεβαιωθείτε ότι υπάρχει η αντίστοιχη παραλλαγή header/footer
Η διάταξη πολλαπλών στηλών δεν εφαρμόζεται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Πότε η αυτόματη αρίθμηση γραμμών επανεκκινείται εντός μιας ενότητας

Δείτε επίσης

 Ελληνικά