Hi Mike,
I figured out the reason of this problem. The First Run after FieldSeparator has Times New Roman font that’s why inserted value has Times New Roman font too. There is strange issue in MSWord – you can’t set Magik font for whole mergefield. I found two workarounds of this problem.
First solution. Set Magik font for all Runs in document. See the code.
Document doc = new Document(@"479_107641_DenverMike\in.doc");
NodeCollection nodes = doc.GetChildNodes(NodeType.Run, true);
foreach (Run run in nodes)
{
run.Font.Name = "Magik";
}
string[] names = { "Contact_LastName" };
string[] values = { "McGovern" };
doc.MailMerge.Execute(names, values);
doc.Save(@"479_107641_DenverMike\out.doc");
Second solution. Use MergeField event.
public void TestMailMerge()
{
Document doc = new Document(@"479_107641_DenverMike\in.doc");
string[] names = { "Contact_LastName" };
string[] values = { "McGovern" };
doc.MailMerge.MergeField += new MergeFieldEventHandler(MailMerge_MergeField_107641);
doc.MailMerge.Execute(names, values);
doc.Save(@"479_107641_DenverMike\out.doc");
}
void MailMerge_MergeField(object sender, MergeFieldEventArgs e)
{
if (e.FieldName == "Contact_LastName")
{
DocumentBuilder builder = new DocumentBuilder(e.Document);
builder.MoveToMergeField(e.FieldName);
builder.Font.Name = "Magik";
builder.Write((string)e.FieldValue);
}
}
I hope this could help you.
Best regards.