Come lavorare con le sezioni in .NET

Come lavorare con le sezioni in .NET

Questa guida mostra come creare interruzioni di sezione, configurare l’impostazione della pagina e gestire intestazioni, piè di pagina e layout a più colonne in Aspose.Words FOSS per .NET, usando le Section and PageSetup classi. Copre la lettura delle sezioni già presenti in un documento, l’avvio di una nuova sezione con DocumentBuilder, configurando le dimensioni e i margini della pagina, aggiungendo varianti di intestazione e piè di pagina, e disponendo il testo del corpo in più colonne.

Guida passo-passo

Passo 1: Installa il pacchetto

Aspose.Words FOSS per .NET non pubblica ancora un pacchetto NuGet – costruisci invece la libreria dal sorgente. Clona https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, quindi compila Aspose.Words.sln in configurazione Release con l’SDK .NET e fai riferimento all’assembly Aspose.Words risultante dal tuo progetto. La libreria è destinata a .NET Standard 2.0, quindi funziona su .NET Framework 4.6.2+ e .NET 6/8/10.


Passo 2: Importa le classi richieste

Aggiungi una direttiva using Aspose.Words; – Section, PageSetup, HeaderFooter e gli enum correlati usati in questa guida risiedono direttamente nello spazio dei nomi Aspose.Words insieme a Document e DocumentBuilder.


Passo 3: Leggi le sezioni già presenti in un documento

Document.Sections restituisce un SectionCollection che contiene ogni Section nel documento, ciascuno un CompositeNode che fa anche parte dell’albero dei nodi complessivo. Document.FirstSection e Document.LastSection forniscono accesso diretto alle sezioni di confine senza iterare la collezione. Ogni Section contiene un Body – raggiunto nello stesso modo di qualsiasi altro Story – e, quando presente, contenuto dell’intestazione e del piè di pagina raggiunto tramite Section.HeadersFooters.


Passo 4: Inizia una nuova sezione con un interruzione di sezione

Call DocumentBuilder.InsertBreak(BreakType) al cursore per avviare una nuova sezione. Pass BreakType.SectionBreakNewPage quando la nuova sezione deve sempre iniziare su una pagina nuova, BreakType.SectionBreakContinuous quando è necessaria solo una modifica dell’impostazione della pagina (ad esempio, passare a testo a più colonne) senza forzare un’interruzione di pagina, o BreakType.SectionBreakNewColumn, SectionBreakEvenPage, e SectionBreakOddPage per gli altri comportamenti di avvio sezione che Word supporta. Un’interruzione di sezione trasporta la formattazione per la sezione che follows essa, quindi imposta PageSetup proprietà sulla nuova Section – non quella precedente – una volta inserita l’interruzione. DocumentBuilder.MoveToSection(sectionIndex) sposta il cursore all’inizio del corpo di una sezione specifica, e PageSetup.SectionStart legge o imposta il SectionStart tipo di interruzione già registrato in una sezione esistente.


Passo 5: Configura le dimensioni della pagina e i margini

Ogni Section.PageSetup è un’istanza PageSetup. Imposta PageWidth, PageHeight, LeftMargin, RightMargin, TopMargin, BottomMargin e Gutter per le dimensioni della pagina e i margini, oppure assegna un preset Margins direttamente a PageSetup.Margins. Orientation e PaperSize controllano l’orientamento della pagina e la dimensione della carta. I bordi della pagina sono configurati con Borders (un BorderCollection), BorderAppliesTo (PageBorderAppliesTo), BorderDistanceFrom (PageBorderDistanceFrom), BorderAlwaysInFront, BorderSurroundsHeader e BorderSurroundsFooter. Chiama PageSetup.ClearFormatting() per ripristinare la configurazione di pagina di una sezione ai valori predefiniti prima di configurarla da zero.


Passo 6: Aggiungi e collega intestazioni e piè di pagina

Section.HeadersFooters è un HeaderFooterCollection con accessor tipizzati – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – insieme a GetByHeaderFooterType() per la ricerca per HeaderFooterType e Add() per aggiungerne uno nuovo. Ogni HeaderFooter è un Story, contrassegnato IsHeader e IsLinkedToPrevious. Abilita PageSetup.DifferentFirstPageHeaderFooter o PageSetup.OddAndEvenPagesHeaderFooter prima di aggiungere la variante corrispondente HeaderFirst/FooterFirst o HeaderEven/FooterEven – il flag e la variante hanno effetto solo insieme. Chiama HeaderFooterCollection.LinkToPrevious() per ricollegare l’intestazione o il piè di pagina di una sezione in modo da ereditare il contenuto della sezione precedente, o per scollegarlo così che la nuova sezione inizi con contenuto indipendente.


Passo 7: Disporre il testo del corpo in più colonne

PageSetup.TextColumns restituisce un TextColumnCollection per la sezione. Chiama SetCount() con il numero di colonne in cui il testo del corpo deve fluire, quindi regola EvenlySpaced, Spacing, LineBetween e Width per controllare come sono disposte le colonne. Una volta che la raccolta contiene più di una colonna, le singole istanze di TextColumn espongono il proprio Width e SpaceAfter.


Passo 8: Cancellare o modificare in blocco il contenuto della sezione

Section.AppendContent() e PrependContent() copiano il contenuto del corpo di un’altra sezione in questa; ClearContent() svuota il corpo di una sezione in blocco. ClearHeadersFooters() e DeleteHeaderFooterShapes() cancellano il contenuto di intestazione e piè di pagina nella sezione senza rimuovere la sezione stessa.

Problemi comuni e soluzioni

La configurazione della pagina di una nuova sezione non corrisponde a ciò che ho impostato PageSetup è stata impostata sul sbagliato Section istanza. Un’interruzione di sezione trasporta la formattazione per la sezione che la segue – impostare PageSetup sulla sezione che segue InsertBreak(), non quella precedente.

Il contenuto di intestazione o piè di pagina della sezione precedente appare inaspettatamente in una nuova sezione L’intestazione o il piè di pagina della nuova sezione è ancora collegato alla sezione precedente. Chiama HeaderFooterCollection.LinkToPrevious(false), oppure aggiungi contenuto di intestazione/piè di pagina distinto alla nuova sezione, per scollegarlo.

L’intestazione/piè di pagina della prima pagina o delle pagine pari è ignorata DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, o la corrispondenza HeaderFooterType la variante non esiste in Section.HeadersFooters. Imposta il flag su PageSetup e aggiungi la variante corrispondente dell’intestazione/piè di pagina insieme.

Il layout a più colonne non si applica TextColumns.SetCount() è stato chiamato con un conteggio di uno, o nella sezione sbagliata PageSetup. Chiama SetCount() con più di una colonna nella sezione di destinazione PageSetup.TextColumns.

Interruzione di sezione inserita nella posizione sbagliata del documento DocumentBuilder.InsertBreak(BreakType) inserisce al cursore corrente del builder. Usa DocumentBuilder.MoveToSection() o gli altri membri di posizionamento del cursore del builder per posizionare il cursore prima di chiamare InsertBreak().

Domande frequenti

Come posso avviare una nuova sezione senza iniziare una nuova pagina?

Inserisci un’interruzione SectionBreakContinuous con DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

Come posso assegnare a una sezione i propri margini e orientamento?

Inserisci un’interruzione di sezione, poi imposta TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation e PaperSize sul PageSetup della nuova sezione.

Come faccio a far sì che la prima pagina di una sezione utilizzi un’intestazione diversa?

Imposta PageSetup.DifferentFirstPageHeaderFooter = true su quella sezione e aggiungi un HeaderFooter di tipo HeaderFirst (e FooterFirst, se necessario) alla sua collezione HeadersFooters.

Come dispongo il testo del corpo di una sezione in due colonne?

Chiama PageSetup.TextColumns.SetCount(2) sulla sezione, quindi regola Spacing, EvenlySpaced o i valori individuali di TextColumn.Width secondo necessità.

Come posso accedere direttamente alle prime e alle ultime sezioni?

Leggi Document.FirstSection e Document.LastSection invece di indicizzare Document.Sections.

Vedi anche

 Italiano