We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

Insert html at desired point

Im evaluating your product and there is only one thing stopping us going ahead at the moment, i have implemented search and replace but when i wish to insert html into the exact point that i find my tag, it either inserts at the beginning of the paragraph or end, and feeding html into the Replacement only renders the html as text…
i am using

// Replace tags matches
doc.Range.Replace(new System.Text.RegularExpressions.Regex(CurlyBracketsTagExpression),
new Aspose.Words.ReplaceEvaluator(EvaluateReplaceTags), false);


private ReplaceAction EvaluateReplaceTags(object sender, ReplaceEvaluatorArgs e)
    Paragraph para = (Paragraph)e.MatchNode.ParentNode;
    DocumentBuilder b = new DocumentBuilder(para.Document);
    e.Replacement = String.Empty;
    return ReplaceAction.Replace;

When is put in a line like : This is a {tag:test} and another tag {tag:test2} i get this problem.
How do you insert at the required offset within a node, ie (MatchOffset) ?
if i do doc.MoveTo(e.MatchNode) the insertHtml it goes at the front, not at the offset i require…?

Thanks for your inquiry. Please try using the following code snippet.

ReplaceAction EvaluateReplaceTags(object sender, ReplaceEvaluatorArgs e)
    // Get MatchNode
    Run run1 = (Run)e.MatchNode;
    // Create Run
    Run run2 = new Run(e.MatchNode.Document);
    // Get index of match value
    int index = run1.Text.IndexOf(e.Match.Value);
    if (index > 0)
        // Split text in match node
        run2.Text = run1.Text.Substring(0, index);
        run1.Text = run1.Text.Substring(index + e.Match.Value.Length);
    run1.ParentParagraph.InsertBefore(run2, run1);
    DocumentBuilder builder = new DocumentBuilder(e.MatchNode.Document);
    // Move to run1
    // Insert HTML
    return ReplaceAction.Skip;

I hope this could help you.
Best regards.

Works a treat, thanks!
Will be purchashing soon.