Hi,
Inserting a sub document inside my main document works well in situations where I point to a bookmark for example. However if I insert a subdoc inside a table it always inserts a CR/LF first and inserts the text of the subdoc on the second line in my table Row. This is not what I would like to see.
I’ve used the insert funtion from the Aspose Site and only modyfied the formatting line keepsource/use destination.
Below the code that I use.
Any help is appriciated,
Ron
This is how I call the function
InsertDocument(mainTable.LastRow.FirstCell.FirstParagraph, subDoc, ImportFormatMode.UseDestinationStyles);
///
/// Inserts content of the external document after the specified node.
// Section breaks and section formatting of the inserted document are ignored.
///
/// Node in the destination document after which the content
/// should be inserted. This node should be a block level node (paragraph or table).
/// The document to insert.
public void InsertDocument(Node insertAfterNode, Document srcDoc, ImportFormatMode DocFormat)
{
// StreamWriter WORDLOG = new StreamWriter(new FileStream(@"C:\DocRunner\drLog\insertdoclog.log", System.IO.FileMode.Append));
// Make sure that the node is either a pargraph or table.
if ((!insertAfterNode.NodeType.Equals(NodeType.Paragraph)) & (!insertAfterNode.NodeType.Equals(NodeType.Table)))
{
throw new ArgumentException("The destination node should be either a paragraph or table.");
}
// We will be inserting into the parent of the destination paragraph.
CompositeNode dstStory = insertAfterNode.ParentNode;
// This object will be translating styles and lists during the import.
// Set section start of the first section of the source document.
// RL This line was modified by me to provide more flexibility.
// NodeImporter importer = new NodeImporter(srcDoc, insertAfterNode.Document, ImportFormatMode.KeepSourceFormatting);
NodeImporter importer = new NodeImporter(srcDoc, insertAfterNode.Document, DocFormat);
// Loop through all sections in the source document.
foreach(Section srcSection in srcDoc.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 paragarph 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;
}
}
}