I have been trying unsuccessfully to find a way to replace a string within a paragraph with the content of another document, while mimicking the behavior of <<doc [document_expression] -inline>>
.
I would prefer not to have to replace the desired string in advance with the document tag in order to use the reporting engine.
@kvaak Unfortunately, there is no built-in way to mimic the behavior using InsertDocumentMethod
. I have logged a feature request for this as WORDSNET-25505.
However, you can use the following code to avoid insertion of a paragraph break after the inserted document content:
Document doc = new Document(@"C:\Temp\in.docx");
DocumentBuilder builder = new DocumentBuilder(doc);
// Move to bookmark on the inline level
builder.MoveToBookmark("test");
// Insert document.
builder.InsertDocument(new Document(@"C:\Temp\src.docx"), ImportFormatMode.UseDestinationStyles);
// Get the last paragraph from the inserted document.
Paragraph current = builder.CurrentParagraph;
Paragraph prev = (Paragraph)current.PreviousSibling;
// copy content from the current paragraph into the previouse paragraph and remove it.
while (current.HasChildNodes)
prev.AppendChild(current.FirstChild);
current.Remove();
doc.Save(@"C:\Temp\out.docx");
2 Likes
@alexey.noskov I have to thank you once again for a very prompt response. Really good work. The example provided in the response is definitely a great solution. Thank you very much. Nevertheless, I am looking forward to a possible implementation of the feature request. Wishing you a great start to the week.
1 Like
The issues you have found earlier (filed as WORDSNET-25505) have been fixed in this Aspose.Words for .NET 23.10 update also available on NuGet.
1 Like