I am trying to merge multiple Word documents together and a table of contents at the beginning. It all works, except that one customer makes extensive use of headers, and the headers are being lost after the documents are merged together.
I am using Aspose.Words.NET v23.1.0
Here is an example document:
811_970.docx (36.3 KB)
Here is my code:
var mergedDoc = new Document();
var mergedDocBuilder = new DocumentBuilder(mergedDoc);
mergedDocBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
mergedDocBuilder.Writeln(title);
mergedDocBuilder.InsertBreak(BreakType.PageBreak);
// https://support.microsoft.com/en-us/office/field-codes-toc-table-of-contents-field-1f538bc4-60e6-4854-9f64-67754d78d05c
mergedDocBuilder.InsertTableOfContents(@"\h \z \f p");
mergedDocBuilder.InsertBreak(BreakType.PageBreak);
var policiesWithDocuments = policies
.Where(p => p.Document != null)
.ToList();
var importFormatOptions = new ImportFormatOptions()
{
IgnoreHeaderFooter = false
};
foreach (var policy in policiesWithDocuments)
{
using var vs = await _documentService.DownloadPolicyDocumentAsStreamAsync(policy.Document!.Id, false);
var policyDoc = new Document(vs.Stream);
var builder = new DocumentBuilder(policyDoc);
builder.InsertField($@"TC ""{policy.Name}"" \f p");
mergedDocBuilder.InsertDocument(policyDoc, ImportFormatMode.KeepDifferentStyles, importFormatOptions);
if (policy != policiesWithDocuments.Last())
{
mergedDocBuilder.InsertBreak(BreakType.PageBreak);
}
}
mergedDoc.UpdateFields();
mergedDoc.UpdatePageLayout();
var ms = new MemoryStream();
mergedDoc.Save(ms, SaveFormat.Pdf);