Bekerja dengan Header dan Footer

Aspose.Words memungkinkan pengguna untuk bekerja dengan header dan footer dalam sebuah dokumen. Header adalah teks yang ditempatkan di bagian atas halaman, dan footer adalah teks di bagian bawah halaman. Biasanya, area ini digunakan untuk menyisipkan informasi yang harus diulang pada seluruh atau beberapa halaman dokumen, seperti nomor halaman, tanggal pembuatan, informasi perusahaan, dan sebagainya.

Jika Anda ingin menambahkan header atau footer dokumen secara terprogram, cara termudah adalah menggunakan kelas DocumentBuilder untuk melakukannya.

Contoh kode berikut menunjukkan cara menambahkan header dan footer untuk halaman dokumen:

Saat Anda menambahkan header atau footer ke dokumen, Anda dapat mengatur beberapa properti tingkat lanjut. Aspose.Words memberi pengguna kelas HeaderFooter dan HeaderFooterCollection, serta enumerasi HeaderFooterType yang memberi Anda kontrol lebih besar atas proses penyesuaian header dan footer.

Anda dapat menentukan tiga tipe header berbeda dan tiga tipe footer berbeda untuk satu dokumen:

  1. Header dan/atau footer untuk halaman pertama
  2. Header dan/atau footer untuk halaman genap
  3. Header dan/atau footer untuk halaman ganjil

Contoh kode berikut menunjukkan cara menambahkan header untuk halaman dokumen ganjil:

Seperti disebutkan di atas, Anda juga dapat mengatur header atau footer berbeda untuk halaman pertama. Untuk melakukan ini, Anda perlu menyetel tanda DifferentFirstPageHeaderFooter ke true dan kemudian menentukan nilai HeaderFirst atau FooterFirst.

Contoh kode berikut menunjukkan cara menyetel header untuk halaman pertama saja:

// 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");

Selanjutnya, Anda ingin mengatur header atau footer yang berbeda untuk halaman ganjil dan genap dalam sebuah dokumen. Untuk melakukan ini, Anda perlu menyetel tanda OddAndEvenPagesHeaderFooter ke true dan kemudian menentukan nilai HeaderPrimary dan HeaderEven, atau FooterPrimary dan 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");

Sisipkan Gambar yang Diposisikan Sepenuhnya ke dalam Header

Untuk menempatkan gambar di header atau footer, gunakan tipe header HeaderPrimary atau tipe footer FooterPrimary dan metode InsertImage.

Contoh kode berikut menunjukkan cara menambahkan gambar ke header:

// 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

Dengan Aspose.Words Anda dapat mengatur properti font dan paragraf, menggunakan tipe header HeaderPrimary atau tipe footer FooterPrimary, serta metode dan properti untuk bekerja dengan font dan paragraf yang Anda gunakan untuk badan dokumen.

Contoh kode berikut menunjukkan cara mengatur teks di header menjadi Arial, tebal, ukuran 14, dan perataan tengah:

// 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

Jika perlu, Anda dapat menambahkan nomor halaman pada header atau footer. Untuk melakukannya, gunakan tipe header HeaderPrimary atau tipe footer FooterPrimary dan metode InsertField untuk menambahkan bidang yang diperlukan.

Contoh kode berikut menunjukkan cara menambahkan nomor halaman ke footer di sebelah kanan:

// 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

Jika Anda perlu menyalin header atau footer dari bagian sebelumnya, Anda juga dapat melakukannya.

Contoh kode berikut menunjukkan cara menyalin header atau footer dari bagian sebelumnya:

// 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));
}

Aspose.Words memungkinkan Anda memberikan tampilan header atau footer saat menggunakan orientasi dan ukuran halaman berbeda.

Contoh berikut menunjukkan cara melakukannya:

Setiap bagian dalam dokumen dapat memiliki hingga tiga header dan hingga tiga footer (untuk halaman pertama, genap, dan ganjil). Jika Anda ingin menghapus semua header atau footer dalam dokumen, Anda perlu mengulang semua bagian dan menghapus setiap node header atau node footer yang sesuai.

Contoh kode berikut menunjukkan cara menghapus semua footer dari semua bagian tetapi membiarkan header tetap utuh. Anda hanya dapat menghapus header dengan cara serupa:

// 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");