@ManMasterDevelopment,
You can simply remove the only empty Paragraph from “hf.docx”:
public static void MergeHeaderFooterWithBody(Document hfDocument, Document body)
{
Paragraph removeMe = hfDocument.LastSection.Body.LastParagraph;
Node insertAfterNode = hfDocument.FirstSection.Body.FirstChild;
CompositeNode dstStory = insertAfterNode.ParentNode;
// This object will be translating styles and lists during the import.
NodeImporter importer = new NodeImporter(body, hfDocument, ImportFormatMode.KeepDifferentStyles);
// Loop through all sections in the source document.
foreach (Section srcSection in body.Sections)
{
// Loop through all block level nodes (paragraphs and tables) in the body of the section.
foreach (Node srcNode in srcSection.Body)
{
// Let's skip the node if it is a last empty paragraph in a section.
if (srcNode.NodeType.Equals(NodeType.Paragraph))
{
Paragraph para = (Paragraph)srcNode;
if (para.IsEndOfSection && !para.HasChildNodes)
continue;
}
// This creates a clone of the node, suitable for insertion into the destination document.
Node newNode = importer.ImportNode(srcNode, true);
// Insert new node after the reference node.
dstStory.InsertAfter(newNode, insertAfterNode);
insertAfterNode = newNode;
}
}
removeMe.Remove();
}
The code seems to start inserting nodes from “body.docx” after the only empty Paragraph of “hf.docx”. However, MS Word pushes that empty Paragraph to the end of merged file (you can observe two empty Paragraphs at the end of MS Word’s generated DOCX).