Hello, I searched the forums but couldn’t find an example of inserting a document using document builder except this one: https://docs.aspose.com/words/net/insert-and-append-documents/
Although the post does suggest some ideas for doing this, it is unclear is this method is considered the recommended method.
I have a document I build at runtime with document builder. I need some example code to insert the contents of another document “in-place” and continue to build the original document AFTER the newly added document.
Please help…
Here is the example that does the job:
Document doc1 = new Document(Application.StartupPath + @"\Doc1.doc");
DocumentBuilder builder = new DocumentBuilder(doc1);
Document doc2 = new Document(Application.StartupPath + @"\Doc2.doc");
Node currentNode = doc1.LastSection.Body.LastChild;
foreach (Section section in doc2.Sections)
{
foreach (Node node in section.Body.ChildNodes)
{
currentNode = (Node)doc1.ImportNode(node, true);
doc1.LastSection.Body.ChildNodes.Add(currentNode);
}
}
// move documentBuilder to the last node of the document
builder.MoveTo(currentNode);
// this line imitates the subsequent document building
builder.Writeln("Continue document creation...");
Don’t hesitate to ask if you have further questions.
Exactly what I was looking for, thanks!
I need something similar. I was previously using code which imports Sections directly:
string[] filesToAdd = ...
Document mainDocument = new Document(mainFile);
foreach (string fileName in filesToAdd)
{
Document doc = new Document(fileName);
foreach (Section s in doc.Sections)
{
Section newSection = (Section)mainDocument.ImportNode(s, true);
mainDocument.Sections.Add(newSection);
}
}
My original code doesn’t give me exactly what I want - there is a page throw between each imported file. The above code (importing ChildNodes) gives me a better result, but is *much* slower. Is there any way of improving its performance?
NB I think this wouold be a good candidate for a “How To” article in your Wiki/FAQ
Try to set SectionStart of inserted section to continuous in your old code:
…
mainDocument.Sections.Add(newSection);
newSection.PageSetup.SectionStart = SectionStart.Continuous
…
That does the trick, thanks.