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