Hi,
I noticed issue with mergefield in if statement.
Firstly, finding all fields in document in reverse order, to go to merge field before processing if.
Located 1st mergefield, then I’m creating fieldMergeField with text updated, cause I would like to have additional info there. Later, I’m removing old mergefield and processing through fields further.
I located fieldIf and I would like to get values for LeftExpression, RightExpression, etc, but the values are mixed there.
This issue appears only when the mergefield wasn’t provided in quotation marks in template.
When mergefield is put in quotation marks, the values are returned as expected.
Can you advice?
var document = new Document($"D:\\\ifWithMergefield.dotx"); //ifWithMergefieldInQuotes
var builder = new DocumentBuilder(document);
foreach (var field in document.Range.Fields.Reverse())
{
if (field.Type == FieldType.FieldMergeField)
{
var fieldCode = "<Mergefield name=" + "{0}" + " />";
var mergefield = field as FieldMergeField;
var name = mergefield.FieldName;
builder.MoveToField(field, false);
var stringToInput = string.Format(fieldCode, name);
builder.Write(stringToInput);
field.Remove();
continue;
}
if (field.Type == FieldType.FieldIf)
{
var fieldIf = field as FieldIf;
Console.WriteLine("LeftExpression: " + fieldIf.LeftExpression);
Console.WriteLine("RightExpression: " + fieldIf.RightExpression);
Console.WriteLine("ComparisonOperator: " + fieldIf.ComparisonOperator);
Console.WriteLine("TrueText: " + fieldIf.TrueText);
Console.WriteLine("FalseText: " + fieldIf.FalseText);
Console.Read();
}
mergefieldInIf.zip (31.4 KB)