Hi,
I have been researching performance of some larger documents when there are a large number of merge fields on the document. Today the code in FieldMerging
looks like this:
Private Sub IFieldMergingCallback_FieldMerging(ByVal e As Aspose.Words.MailMerging.FieldMergingArgs) Implements Aspose.Words.MailMerging.IFieldMergingCallback.FieldMerging
If e.FieldValue IsNot Nothing AndAlso e.FieldValue.ToString.Trim() <> String.Empty Then
Dim builder As DocumentBuilder = New DocumentBuilder(e.Document)
Do While builder.MoveToMergeField(e.DocumentFieldName)
If e.FieldName.StartsWith("HTML_") Then
builder.InsertHtml(e.FieldValue.ToString())
Else
builder.Write(e.FieldValue.ToString())
e.Text = ""
End If
Loop
End If
End Sub
If I change that to:
Private Sub IFieldMergingCallback_FieldMerging(ByVal e As Aspose.Words.MailMerging.FieldMergingArgs) Implements Aspose.Words.MailMerging.IFieldMergingCallback.FieldMerging
If e.FieldValue IsNot Nothing AndAlso e.FieldValue.ToString.Trim() <> String.Empty Then
Dim builder As DocumentBuilder = New DocumentBuilder(e.Document)
Dim isHTMLField As Boolean = False
If e.FieldName.StartsWith("HTML_") Then
isHTMLField = True
End If
builder.MoveToField(e.Field, True)
e.Field.Remove()
If isHTMLField Then
builder.InsertHtml(e.FieldValue.ToString())
Else
builder.Write(e.FieldValue.ToString())
e.Text = ""
End If
End If
End Sub
The change to MoveToField
and even the addition of field.remove
is substantially faster and seems to provide the same document outputs. Can you explain the performance difference or if there are any drawbacks to this change?
Thanks,
Ronnie