Arbeiten mit Kopf- und Fußzeilen

Aspose.Words ermöglicht Benutzern das Arbeiten mit Kopf- und Fußzeilen in einem Dokument. Eine Kopfzeile ist Text, der oben auf einer Seite platziert wird, und eine Fußzeile ist Text am Ende einer Seite. In der Regel werden diese Bereiche zum Einfügen von Informationen verwendet, die auf allen oder einigen Seiten des Dokuments wiederholt werden sollen, z. B. Seitenzahlen, Erstellungsdatum, Unternehmensinformationen usw.

Kopf- oder Fußzeilen mit DocumentBuilder erstellen

Wenn Sie eine Dokumentkopf- oder -fußzeile programmgesteuert hinzufügen möchten, verwenden Sie dazu am einfachsten die Klasse DocumentBuilder.

Das folgende Codebeispiel zeigt, wie Sie eine Kopf- und Fußzeile für Dokumentseiten hinzufügen:

Kopf- oder Fußzeilenoptionen angeben

Wenn Sie einem Dokument eine Kopf- oder Fußzeile hinzufügen, können Sie einige erweiterte Eigenschaften festlegen. Aspose.Words bietet Benutzern die Klassen HeaderFooter und HeaderFooterCollection sowie die HeaderFooterType-Aufzählung, mit der Sie mehr Kontrolle über den Anpassungsprozess für Kopf- und Fußzeilen haben.

Geben Sie den Kopf- oder Fußzeilentyp an

Sie können drei verschiedene Kopfzeilentypen und drei verschiedene Fußzeilentypen für ein Dokument angeben:

  1. Kopf- und/oder Fußzeile für die erste Seite
  2. Kopf- und/oder Fußzeile für gerade Seiten
  3. Kopf- und / oder Fußzeile für ungerade Seiten

Das folgende Codebeispiel zeigt, wie Sie eine Kopfzeile für ungerade Dokumentseiten hinzufügen:

Geben Sie an, ob für die erste Seite unterschiedliche Kopf- oder Fußzeilen angezeigt werden sollen

Wie oben erwähnt, können Sie für die erste Seite auch eine andere Kopf- oder Fußzeile festlegen. Dazu müssen Sie das Flag DifferentFirstPageHeaderFooter auf true setzen und dann den Wert HeaderFirst oder FooterFirst angeben.

Das folgende Codebeispiel zeigt, wie die Kopfzeile nur für die erste Seite festgelegt wird:

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

Geben Sie an, ob für ungerade oder gerade Seiten unterschiedliche Kopf- oder Fußzeilen angezeigt werden sollen

Als nächstes möchten Sie verschiedene Kopf- oder Fußzeilen für ungerade und gerade Seiten in einem Dokument festlegen. Dazu müssen Sie das Flag OddAndEvenPagesHeaderFooter auf true setzen und dann die Werte HeaderPrimary und HeaderEven oder FooterPrimary und FooterEven angeben.

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

Fügen Sie ein absolut positioniertes Bild in die Kopfzeile ein

Um ein Bild in einer Kopf- oder Fußzeile zu platzieren, verwenden Sie den Kopfzeilentyp HeaderPrimary oder den Fußzeilentyp FooterPrimary und die Methode InsertImage.

Das folgende Codebeispiel zeigt, wie Sie einem Header ein Bild hinzufügen:

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

Festlegen von Schrift- und Absatzeigenschaften für Kopf- oder Fußzeilentext

Mit Aspose.Words können Sie die Schrift- und Absatzeigenschaften festlegen, den Kopfzeilentyp HeaderPrimary oder den Fußzeilentyp FooterPrimary sowie Methoden und Eigenschaften für die Arbeit mit den Schriftarten und Absätzen verwenden, die Sie für den Dokumentkörper verwenden.

Das folgende Codebeispiel zeigt, wie Sie den Text in der Kopfzeile auf Arial, fett, Größe 14 und zentrierte Ausrichtung festlegen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderPrimary);
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_Font()->set_Size(14);
builder->Write(u"Header for page.");
doc->Save(ArtifactsDir + u"WorkingWithHeadersAndFooters.FontProps.docx");
view raw font-props.h hosted with ❤ by GitHub

Seitenzahlen in die Kopf- oder Fußzeile einfügen

Bei Bedarf können Sie der Kopf- oder Fußzeile Seitenzahlen hinzufügen. Verwenden Sie dazu den Kopfzeilentyp HeaderPrimary oder den Fußzeilentyp FooterPrimary und die Methode InsertField, um das erforderliche Feld hinzuzufügen.

Das folgende Codebeispiel zeigt, wie Sie der Fußzeile rechts Seitenzahlen hinzufügen:

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

Verwenden Sie Kopf- oder Fußzeilen, die im vorherigen Abschnitt definiert wurden

Wenn Sie die Kopf- oder Fußzeile aus dem vorherigen Abschnitt kopieren müssen, können Sie dies auch tun.

Das folgende Codebeispiel zeigt, wie Sie die Kopf- oder Fußzeile aus dem vorherigen Abschnitt kopieren:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
/// <summary>
/// Clones and copies headers/footers form the previous section to the specified section.
/// </summary>
void CopyHeadersFootersFromPreviousSection(SharedPtr<Section> section)
{
auto previousSection = System::ExplicitCast<Section>(section->get_PreviousSibling());
if (previousSection == nullptr)
{
return;
}
section->get_HeadersFooters()->Clear();
for (const auto& headerFooter : System::IterateOver<HeaderFooter>(previousSection->get_HeadersFooters()))
{
section->get_HeadersFooters()->Add((System::ExplicitCast<Node>(headerFooter))->Clone(true));
}
}

Stellen Sie das Erscheinungsbild der Kopf- oder Fußzeile sicher, wenn Sie unterschiedliche Seitenausrichtungen und Seitengrößen verwenden

Aspose.Words ermöglicht es Ihnen, das Erscheinungsbild einer Kopf- oder Fußzeile anzugeben, wenn Sie unterschiedliche Ausrichtungen und Seitengrößen verwenden.

Das folgende Beispiel zeigt, wie das geht:

So entfernen Sie nur Kopf- oder Fußzeilen

Jeder Abschnitt in einem Dokument kann bis zu drei Kopf- und bis zu drei Fußzeilen haben (für erste, gerade und ungerade Seiten). Wenn Sie alle Kopf- oder Fußzeilen in einem Dokument entfernen möchten, müssen Sie alle Abschnitte durchlaufen und jeden entsprechenden Kopf- oder Fußzeilenknoten entfernen.

Das folgende Codebeispiel zeigt, wie Sie alle Fußzeilen aus allen Abschnitten entfernen, die Kopfzeilen jedoch intakt lassen. Sie können nur Header auf ähnliche Weise entfernen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Header and footer types.docx");
for (const auto& section : System::IterateOver<Section>(doc))
{
// Up to three different footers are possible in a section (for first, even and odd pages)
// we check and delete all of them.
SharedPtr<HeaderFooter> footer = section->get_HeadersFooters()->idx_get(HeaderFooterType::FooterFirst);
if (footer != nullptr)
{
footer->Remove();
}
// Primary footer is the footer used for odd pages.
footer = section->get_HeadersFooters()->idx_get(HeaderFooterType::FooterPrimary);
if (footer != nullptr)
{
footer->Remove();
}
footer = section->get_HeadersFooters()->idx_get(HeaderFooterType::FooterEven);
if (footer != nullptr)
{
footer->Remove();
}
}
doc->Save(ArtifactsDir + u"RemoveContent.RemoveFooters.docx");