public static void SetDocumentInfo(this C1WordDocument doc, string title, bool graphicFooter = false) { // set document info var di = doc.Info; di.Author = Strings.DocumentAuthor; di.Subject = Strings.DocumentSubject; di.Title = title; // footer font var font = new Font("Arial", 8, RtfFontStyle.Bold); var fmt = new StringFormat(); fmt.Alignment = HorizontalAlignment.Right; fmt.LineAlignment = VerticalAlignment.Bottom; // render footers if (graphicFooter) { // this reopens each page and adds content to them (now we know the page count). for (int page = 0; page < doc.PageCount(); page++) { doc.CurrentPage(page); var text = string.Format(Strings.Documentfooter, di.Title, page + 1, doc.PageCount()); doc.DrawString( text, font, Colors.DarkGray, WordUtils.Inflate(doc.PageRectangle(), -72, -36), fmt); } } else { // standard footer var text = string.Format(Strings.Documentfooter, di.Title, "|", "|"); var paragraph = new RtfParagraph(doc.CurrentSection.Footer); paragraph.Alignment = RtfHorizontalAlignment.Right; int count = 0; foreach (var part in text.Split('|')) { if (!string.IsNullOrEmpty(part)) { paragraph.Add(new RtfString(part)); } switch (count) { case 0: paragraph.Add(new RtfPageField()); break; case 1: paragraph.Add(new RtfNumPagesField()); break; } count++; } doc.CurrentSection.Footer.Add(paragraph); } }