//
// This code is part of Document Solutions for Word demos.
// Copyright (c) MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Linq;
using GrapeCity.Documents.Word;
namespace DsWordWeb.Demos
{
// Shows how to add headers and footers to a document.
public class Headers
{
public GcWordDocument CreateDocx()
{
const int NPARS = 30;
var doc = new GcWordDocument();
// Add a section and some text to it:
var sec1 = doc.Body.Sections.First;
var pars1 = sec1.GetRange().Paragraphs;
pars1.Add("Section 1").Style = doc.Styles[BuiltInStyleId.Heading2];
for (int i = 0; i < NPARS; ++i)
pars1.Add($"Section 1, paragraph {i + 1}: " + Util.LoremIpsumPar());
// Add styles for primary, first and even page headers:
const string snHdrPrimary = "Primary page header";
var sHdrPrimary = doc.Styles.Add(snHdrPrimary, StyleType.Paragraph);
sHdrPrimary.ParagraphFormat.Alignment = ParagraphAlignment.Left;
sHdrPrimary.Font.Color.RGB = Color.Blue;
const string snHdrFirstPage = "First page header";
var sHdrFirstPage = doc.Styles.Add(snHdrFirstPage, StyleType.Paragraph);
sHdrFirstPage.ParagraphFormat.Alignment = ParagraphAlignment.Center;
sHdrFirstPage.Font.Color.RGB = Color.Gray;
const string snHdrEvenPages = "Even header pages";
var sHdrEvenPages = doc.Styles.Add(snHdrEvenPages, StyleType.Paragraph);
sHdrEvenPages.ParagraphFormat.Alignment = ParagraphAlignment.Right;
sHdrEvenPages.Font.Color.RGB = Color.Blue;
// Use a different header on the first, even and odd pages:
var p = sec1.Headers[HeaderFooterType.Primary].Body.Paragraphs.Add("DsWord Headers Sample - Section 1 - Primary Header - Page ");
p.GetRange().SimpleFields.Add("PAGE");
p.Style = sHdrPrimary;
sec1.PageSetup.DifferentFirstPageHeaderFooter = true;
p = sec1.Headers[HeaderFooterType.FirstPage].Body.Paragraphs.Add("DsWord Headers Sample - Section 1 - First Page");
p.Style = sHdrFirstPage;
sec1.PageSetup.OddAndEvenPagesHeaderFooter = true;
p = sec1.Headers[HeaderFooterType.EvenPages].Body.Paragraphs.Add("DsWord Headers Sample - Section 1 - Even Pages - Page ");
p.GetRange().SimpleFields.Add("PAGE");
p.Style = sHdrEvenPages;
// Add another section with different page orientation and different headers:
var sec2 = doc.Body.Paragraphs.Last.AddSectionBreak();
var pars2 = sec2.GetRange().Paragraphs;
pars2.Add("Section 2").Style = doc.Styles[BuiltInStyleId.Heading2];
for (int i = 0; i < NPARS; ++i)
pars2.Add($"Section 2, paragraph {i + 1}: " + Util.LoremIpsumPar());
// Set page orientation to landscape:
sec2.PageSetup.Size.Orientation = PageOrientation.Landscape;
// Unlink and specify own headers for section 2:
var hdr = sec2.Headers[HeaderFooterType.Primary];
// Add styles for primary and even page headers in secton 2:
const string snHdrPrimary2 = "Primary page header 2";
var sHdrPrimary2 = doc.Styles.Add(snHdrPrimary2, StyleType.Paragraph);
sHdrPrimary2.ParagraphFormat.Alignment = ParagraphAlignment.Left;
sHdrPrimary2.Font.Color.RGB = Color.Purple;
const string snHdrEvenPages2 = "Even header pages 2";
var sHdrEvenPages2 = doc.Styles.Add(snHdrEvenPages2, StyleType.Paragraph);
sHdrEvenPages2.ParagraphFormat.Alignment = ParagraphAlignment.Right;
sHdrEvenPages2.Font.Color.RGB = Color.Purple;
// NOTE: This property must be set BEFORE changing the header,
// otherwise it will affect headers in previous sections too:
hdr.LinkToPrevious = false;
// NOTE: OddAndEvenPagesHeaderFooter applies to the WHOLE document,
// not just to the current section:
// sec2.PageSetup.OddAndEvenPagesHeaderFooter = false;
sec2.PageSetup.DifferentFirstPageHeaderFooter = false;
p = hdr.Body.Paragraphs.Add("DsWord Headers Sample - Section 2 - Primary Header - Page ");
p.GetRange().SimpleFields.Add("PAGE");
p.Style = sHdrPrimary2;
hdr = sec2.Headers[HeaderFooterType.EvenPages];
hdr.LinkToPrevious = false;
p = hdr.Body.Paragraphs.Add("DsWord Headers Sample - Section 2 - Even Pages - Page ");
p.GetRange().SimpleFields.Add("PAGE");
p.Style = sHdrEvenPages2;
// Done:
return doc;
}
}
}