Help with creating / removing a header/footer in PDF and saving.

Q: I am having problems removing a header which i have created. The
XObject form is getting removed, but the text elements are staying.

Here are the functions that I am using to create and clear the
headers.

private void ClearHeader()
        {
            try
            {
                int totalPages = _pdfDoc.GetPageCount();
                Element element;
                for (int pageIndex = 1; pageIndex <= totalPages; +
+pageIndex)
                {
                    Page page = _pdfDoc.GetPage(1);
                    _elementReader.Begin(page);
                    Page newPage = _pdfDoc.PageCreate();
                    _pdfDoc.PagePushBack(newPage);
                    _elementWriter.Begin(newPage);
                    while ((element = _elementReader.Next()) != null)
                    {
                        if (element.GetType() == Element.Type.e_form)
                        {
                            Obj form = element.GetXObject();
                            if ((form.FindObj("LeftHeaderText" +
pageIndex.ToString()) != null) ||
                                (form.FindObj("CenterHeaderText" +
pageIndex.ToString()) != null) ||
                                (form.FindObj("RightHeaderText" +
pageIndex.ToString()) != null))
                            {
                                _elementReader.FormBegin();
                                while ((element = _elementReader.Next
()) != null)
                                {
                                    continue;
                                }
                                _elementReader.End();
                                continue;
                            }
                            else
                            {
                                _elementWriter.WriteElement(element);
                            }
                        }
                        else
                        {
                            _elementWriter.WriteElement(element);
                        }
                    }
                    _elementWriter.End();
                    _elementReader.End();
                    newPage.SetMediaBox(page.GetCropBox());
                    _pdfDoc.PageRemove(_pdfDoc.GetPageIterator(1));
                }
            }
            catch { }
        }

        private bool CreateHeader()
        {
            bool functionReturnValue = true;
            try
            {
                //Clear existing header.
                ClearHeader();
                PageIterator itr = _pdfDoc.GetPageIterator();
                Element element = null;
                string date = DateTime.Today.ToShortDateString();
                string time = DateTime.Now.ToShortTimeString();
                string totalPages = _pdfDoc.GetPageCount().ToString();
                while (itr.HasNext())
                {
                    Page page = itr.Current();
                    string pageNumber = page.GetIndex().ToString();
                    double height = page.GetPageHeight();
                    double width = page.GetPageWidth();
                    Graphics g = Graphics.FromHwnd(this.Handle);
                    SizeF textSize;
                    double left = 0;
                    double top = 0;
                    string appendText = "";
                    string leftHeader = "";
                    string centerHeader = "";
                    string rightHeader = "";
                    GState gs = null;
                    Obj form = null;
                    _elementWriter.Begin(itr.Current());
                    if (!txtHeaderLeft.Text.Equals(""))
                    {
                        appendText = txtHeaderLeft.Text;
                        appendText = appendText.Replace("[Page]",
pageNumber);
                        appendText = appendText.Replace("[Pages]",
totalPages);
                        appendText = appendText.Replace("[Date]",
date);
                        appendText = appendText.Replace("[Time]",
time);
                        appendText = appendText.Replace("[File]", new
FileInfo(_fileName).Name);
                        appendText = appendText.Replace("[Path]", new
FileInfo(_fileName).Directory.FullName);
                        appendText = appendText.Replace("[Tab]",
"\t");
                        textSize = g.MeasureString(appendText,
_leftHeaderFont);
                        left = 20;
                        top = height - 20;
                        leftHeader = left.ToString("0#.###").Replace
(".", "__") + "___" + top.ToString("0#.###").Replace(".", "__");
                        element = _elementBuilder.CreateTextBegin
(pdftron.PDF.Font.CreateTrueTypeFont(_pdfDoc, _leftHeaderFont, true,
true), 12);
                        _elementWriter.WriteElement(element);
                        gs = element.GetGState();
                        element = _elementBuilder.CreateTextRun
(appendText);
                        element.SetTextMatrix(1, 0, 0, 1, left, top);
                        gs.SetFillColorSpace(ColorSpace.CreateDeviceRGB
());
                        gs.SetFillColor(new ColorPt(0, 0, 0));
                        _elementWriter.WriteElement(element);
                        _elementWriter.WriteElement
(_elementBuilder.CreateTextEnd());
                    }
                    form = _elementWriter.End();
                    form.PutName("Subtype", "Form");
                    form.PutRect("BBox", 0, 0, width, height);
                    form.PutBool("LeftHeaderText" + pageNumber, true);
                    //This is used to later find if the header is
left, center or right align
                    form.PutString("LeftHeaderLocation", leftHeader);
                    element = _elementBuilder.CreateForm(form);
                    _elementWriter.Begin(itr.Current());
                    _elementWriter.WriteElement(element);
                    _elementWriter.End();
                    _elementWriter.Begin(itr.Current());
                    if (!txtHeaderCenter.Text.Equals(""))
                    {
                        appendText = txtHeaderCenter.Text;
                        appendText = appendText.Replace("[Page]",
pageNumber);
                        appendText = appendText.Replace("[Pages]",
totalPages);
                        appendText = appendText.Replace("[Date]",
date);
                        appendText = appendText.Replace("[Time]",
time);
                        appendText = appendText.Replace("[File]", new
FileInfo(_fileName).Name);
                        appendText = appendText.Replace("[Path]", new
FileInfo(_fileName).Directory.FullName);
                        appendText = appendText.Replace("[Tab]",
"\t");
                        textSize = g.MeasureString(appendText,
_centerHeaderFont);
                        left = (width - textSize.Width) / 2;
                        top = height - 20;
                        centerHeader = left.ToString("0#.###").Replace
(".", "__") + "___" + top.ToString("0#.###").Replace(".", "__");
                        element = _elementBuilder.CreateTextBegin
(pdftron.PDF.Font.CreateTrueTypeFont(_pdfDoc, _centerHeaderFont, true,
true), 12);
                        _elementWriter.WriteElement(element);
                        gs = element.GetGState();
                        element = _elementBuilder.CreateTextRun
(appendText);
                        element.SetTextMatrix(1, 0, 0, 1, left, top);
                        gs.SetFillColorSpace(ColorSpace.CreateDeviceRGB
());
                        gs.SetFillColor(new ColorPt(0, 0, 0));
                        _elementWriter.WriteElement(element);
                        _elementWriter.WriteElement
(_elementBuilder.CreateTextEnd());
                    }
                    form = _elementWriter.End();
                    form.PutName("Subtype", "Form");
                    form.PutRect("BBox", 0, 0, width, height);
                    form.PutBool("CenterHeaderText" + pageNumber,
true);
                    form.PutString("CenterHeaderLocation",
centerHeader);
                    element = _elementBuilder.CreateForm(form);
                    _elementWriter.Begin(itr.Current());
                    _elementWriter.WriteElement(element);
                    _elementWriter.End();
                    _elementWriter.Begin(itr.Current());
                    if (!txtHeaderRight.Text.Equals(""))
                    {
                        appendText = txtHeaderRight.Text;
                        appendText = appendText.Replace("[Page]",
pageNumber);
                        appendText = appendText.Replace("[Pages]",
totalPages);
                        appendText = appendText.Replace("[Date]",
date);
                        appendText = appendText.Replace("[Time]",
time);
                        appendText = appendText.Replace("[File]", new
FileInfo(_fileName).Name);
                        appendText = appendText.Replace("[Path]", new
FileInfo(_fileName).Directory.FullName);
                        appendText = appendText.Replace("[Tab]",
"\t");
                        textSize = g.MeasureString(appendText,
_rightHeaderFont);
                        left = width - textSize.Width - 20;
                        top = height - 20;
                        rightHeader = left.ToString("0#.###").Replace
(".", "__") + "___" + top.ToString("0#.###").Replace(".", "__");
                        element = _elementBuilder.CreateTextBegin
(pdftron.PDF.Font.CreateTrueTypeFont(_pdfDoc, _rightHeaderFont, true,
true), 12);
                        _elementWriter.WriteElement(element);
                        gs = element.GetGState();
                        element = _elementBuilder.CreateTextRun
(appendText);
                        element.SetTextMatrix(1, 0, 0, 1, left, top);
                        gs.SetFillColorSpace(ColorSpace.CreateDeviceRGB
());
                        gs.SetFillColor(new ColorPt(0, 0, 0));
                        _elementWriter.WriteElement(element);
                        _elementWriter.WriteElement
(_elementBuilder.CreateTextEnd());
                    }
                    form = _elementWriter.End();
                    form.PutName("Subtype", "Form");
                    form.PutRect("BBox", 0, 0, width, height);
                    form.PutBool("RightHeaderText" + pageNumber,
true);
                    form.PutString("RightHeaderLocation",
rightHeader);
                    element = _elementBuilder.CreateForm(form);
                    _elementWriter.Begin(itr.Current());
                    _elementWriter.WriteElement(element);
                    _elementWriter.End();
                    itr.Next();
                }
            }
            catch (Exception)
            {
                functionReturnValue = false;
                return false;
            }
            return functionReturnValue;
        }