Lavorare con intestazioni e piè di pagina

Aspose.Words consente agli utenti di lavorare con intestazioni e piè di pagina in un documento. Un’intestazione è il testo posizionato nella parte superiore della pagina, mentre un piè di pagina è il testo nella parte inferiore della pagina. In genere, queste aree vengono utilizzate per inserire informazioni che dovrebbero essere ripetute su tutte o alcune pagine del documento, come numeri di pagina, data di creazione, informazioni aziendali e così via.

Crea intestazioni o piè di pagina utilizzando DocumentBuilder

Se desideri aggiungere un’intestazione o un piè di pagina del documento a livello di codice, il modo più semplice è utilizzare la classe DocumentBuilder per farlo.

L’esempio di codice seguente mostra come aggiungere un’intestazione e un piè di pagina per le pagine del documento:

Specificare le opzioni di intestazione o piè di pagina

Quando aggiungi un’intestazione o un piè di pagina a un documento, puoi impostare alcune proprietà avanzate. Aspose.Words fornisce agli utenti le classi HeaderFooter e HeaderFooterCollection, nonché l’enumerazione HeaderFooterType che offre un maggiore controllo sul processo di personalizzazione di intestazione e piè di pagina.

Specificare il tipo di intestazione o piè di pagina

Puoi specificare tre diversi tipi di intestazione e tre diversi tipi di piè di pagina per un documento:

  1. Intestazione e/o piè di pagina per la prima pagina
  2. Intestazione e/o piè di pagina per le pagine pari
  3. Intestazione e/o piè di pagina per le pagine dispari

L’esempio di codice seguente mostra come aggiungere un’intestazione per le pagine del documento dispari:

Specificare se visualizzare intestazioni o piè di pagina diversi per la prima pagina

Come detto sopra, puoi anche impostare un’intestazione o un piè di pagina diversi per la prima pagina. Per fare ciò, è necessario impostare il flag DifferentFirstPageHeaderFooter su true e quindi specificare il valore HeaderFirst o FooterFirst.

L’esempio di codice seguente mostra come impostare l’intestazione solo per la prima pagina:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Specify that we want different headers and footers for first page.
builder.PageSetup.DifferentFirstPageHeaderFooter = true;
builder.MoveToHeaderFooter(HeaderFooterType.HeaderFirst);
builder.Write("Header for the first page.");
builder.MoveToHeaderFooter(HeaderFooterType.FooterFirst);
builder.Write("Footer for the first page.");
builder.MoveToSection(0);
builder.Writeln("Page 1");
builder.InsertBreak(BreakType.PageBreak);
builder.Writeln("Page 2");
doc.Save(ArtifactsDir + "WorkingWithHeadersAndFooters.DifferentFirstPage.docx");

Specificare se visualizzare intestazioni o piè di pagina diversi per le pagine pari o dispari

Successivamente, dovrai impostare intestazioni o piè di pagina diversi per le pagine pari e dispari in un documento. Per fare ciò è necessario impostare il flag OddAndEvenPagesHeaderFooter su true e quindi specificare i valori HeaderPrimary e HeaderEven, oppure FooterPrimary e FooterEven.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Specify that we want different headers and footers for even and odd pages.
builder.PageSetup.OddAndEvenPagesHeaderFooter = true;
builder.MoveToHeaderFooter(HeaderFooterType.HeaderEven);
builder.Write("Header for even pages.");
builder.MoveToHeaderFooter(HeaderFooterType.HeaderPrimary);
builder.Write("Header for odd pages.");
builder.MoveToHeaderFooter(HeaderFooterType.FooterEven);
builder.Write("Footer for even pages.");
builder.MoveToHeaderFooter(HeaderFooterType.FooterPrimary);
builder.Write("Footer for odd pages.");
builder.MoveToSection(0);
builder.Writeln("Page 1");
builder.InsertBreak(BreakType.PageBreak);
builder.Writeln("Page 2");
doc.Save(ArtifactsDir + "WorkingWithHeadersAndFooters.OddEvenPages.docx");

Inserisci un’immagine con posizione assoluta nell’intestazione

Per inserire un’immagine in un’intestazione o un piè di pagina, utilizzare il tipo di intestazione HeaderPrimary o il tipo di piè di pagina FooterPrimary e il metodo InsertImage.

L’esempio di codice seguente mostra come aggiungere un’immagine a un’intestazione:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToHeaderFooter(HeaderFooterType.HeaderPrimary);
builder.InsertImage(ImagesDir + "Logo.jpg", RelativeHorizontalPosition.RightMargin, 10,
RelativeVerticalPosition.Page, 10, 50, 50, WrapType.Through);
doc.Save(ArtifactsDir + "WorkingWithHeadersAndFooters.InsertImage.docx");
view raw insert-image.cs hosted with ❤ by GitHub

Imposta le proprietà del carattere e del paragrafo per il testo dell’intestazione o del piè di pagina

Con Aspose.Words puoi impostare le proprietà del carattere e del paragrafo, utilizzare il tipo di intestazione HeaderPrimary o il tipo di piè di pagina FooterPrimary, nonché metodi e proprietà per lavorare con i caratteri e i paragrafi che utilizzi per il corpo del documento.

L’esempio di codice seguente mostra come impostare il testo nell’intestazione su Arial, grassetto, dimensione 14 e allineamento al centro:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToHeaderFooter(HeaderFooterType.HeaderPrimary);
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
builder.Font.Name = "Arial";
builder.Font.Bold = true;
builder.Font.Size = 14;
builder.Write("Header for page.");
doc.Save(ArtifactsDir + "WorkingWithHeadersAndFooters.FontProps.docx");
view raw font-props.cs hosted with ❤ by GitHub

Inserisci i numeri di pagina nell’intestazione o nel piè di pagina

Se necessario, puoi aggiungere numeri di pagina all’intestazione o al piè di pagina. A tale scopo, utilizzare il tipo di intestazione HeaderPrimary o il tipo di piè di pagina FooterPrimary e il metodo InsertField per aggiungere il campo richiesto.

L’esempio di codice seguente mostra come aggiungere i numeri di pagina al piè di pagina a destra:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToHeaderFooter(HeaderFooterType.FooterPrimary);
builder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
builder.Write("Page ");
builder.InsertField("PAGE", "");
builder.Write(" of ");
builder.InsertField("NUMPAGES", "");
doc.Save(ArtifactsDir + "WorkingWithHeadersAndFooters.PageNumbers.docx");
view raw page-numbers.cs hosted with ❤ by GitHub

Utilizza intestazioni o piè di pagina definiti nella sezione precedente

Se devi copiare l’intestazione o il piè di pagina della sezione precedente, puoi farlo anche tu.

L’esempio di codice seguente mostra come copiare l’intestazione o il piè di pagina dalla sezione precedente:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
/// <summary>
/// Clones and copies headers/footers form the previous section to the specified section.
/// </summary>
private void CopyHeadersFootersFromPreviousSection(Section section)
{
Section previousSection = (Section)section.PreviousSibling;
if (previousSection == null)
return;
section.HeadersFooters.Clear();
foreach (HeaderFooter headerFooter in previousSection.HeadersFooters)
section.HeadersFooters.Add(headerFooter.Clone(true));
}

Garantire l’aspetto dell’intestazione o del piè di pagina quando si utilizzano orientamenti e dimensioni della pagina diversi

Aspose.Words consente di fornire l’aspetto di un’intestazione o di un piè di pagina quando si utilizzano orientamenti e dimensioni di pagina diversi.

L’esempio seguente mostra come eseguire questa operazione:

Come rimuovere solo intestazioni o solo piè di pagina

Ciascuna sezione di un documento può avere fino a tre intestazioni e fino a tre piè di pagina (per la prima pagina, pari e dispari). Se desideri rimuovere tutte le intestazioni o tutti i piè di pagina in un documento, devi scorrere tutte le sezioni e rimuovere ciascun nodo di intestazione o nodo di piè di pagina corrispondente.

Nell’esempio di codice seguente viene illustrato come rimuovere tutti i piè di pagina da tutte le sezioni lasciando intatte le intestazioni. Puoi rimuovere solo le intestazioni in modo simile:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document(MyDir + "Header and footer types.docx");
foreach (Section section in doc)
{
// Up to three different footers are possible in a section (for first, even and odd pages)
// we check and delete all of them.
HeaderFooter footer = section.HeadersFooters[HeaderFooterType.FooterFirst];
footer?.Remove();
// Primary footer is the footer used for odd pages.
footer = section.HeadersFooters[HeaderFooterType.FooterPrimary];
footer?.Remove();
footer = section.HeadersFooters[HeaderFooterType.FooterEven];
footer?.Remove();
}
doc.Save(ArtifactsDir + "RemoveContent.RemoveFooters.docx");