Hi, I can’t seem to mailmerge and render it using a free barcode font. I have tried embedding the font in the word doc.
Hi,
{
DataTable dataTable = new DataTable("Invitations");
dataTable.Columns.Add(new DataColumn("Id"));
DataRow dataRow;
dataRow = dataTable.NewRow();
dataRow[0] = "Some ID";
dataTable.Rows.Add(dataRow);
return dataTable;
}
Document doc = new Document(MyDir + @"BarcodeTemplate1.docx");
doc.MailMerge.ExecuteWithRegions(GetDataTable());
doc.Save(MyDir + @"16.12.0.pdf");
Hi, I have tried using your code (and upgraded to 16.12.1.0) and the same issue occurs.
Hi,
foreach (Field field in doc.Range.Fields)
{
if (field.Type.Equals(FieldType.FieldMergeField))
{
Node currentNode = field.Start;
bool isContinue = true;
while (currentNode != null && isContinue)
{
if (currentNode.NodeType.Equals(NodeType.FieldEnd))
isContinue = false;
if (currentNode.NodeType.Equals(NodeType.Run))
{
((Run)currentNode).Font.Name = "Free 3 of 9";
}
Node nextNode = currentNode.NextPreOrder(currentNode.Document);
currentNode = nextNode;
}
}
}
doc.MailMerge.ExecuteWithRegions(GetDataTable());
doc.Save(MyDir + @"16.12.0.pdf");
Hi, this sets every merge field in the document to the barcode font; I only want a single merge field to be in this font, leaving other fields to be other fonts. Whilst I can hard code it if you can point me to how I can inspect the MergeField name, it’s not exactly ideal.
Hi,
ArrayList mfs = new ArrayList();
// Determine what fields have barcod font applied to at least one Run
foreach (Field field in doc.Range.Fields)
{
if (field.Type.Equals(FieldType.FieldMergeField))
{
Node currentNode = field.Start;
bool isContinue = true;
while (currentNode != null && isContinue)
{
if (currentNode.NodeType.Equals(NodeType.FieldEnd))
isContinue = false;
if (currentNode.NodeType.Equals(NodeType.Run))
{
if (((Run)currentNode).Font.Name == "Free 3 of 9")
{
mfs.Add(field);
break;
}
}
Node nextNode = currentNode.NextPreOrder(currentNode.Document);
currentNode = nextNode;
}
}
}
// Apply barcode font to all Run nodes inside those merge field
foreach (Field field in mfs)
{
if (field.Type.Equals(FieldType.FieldMergeField))
{
Node currentNode = field.Start;
bool isContinue = true;
while (currentNode != null && isContinue)
{
if (currentNode.NodeType.Equals(NodeType.FieldEnd))
isContinue = false;
if (currentNode.NodeType.Equals(NodeType.Run))
{
((Run)currentNode).Font.Name = "Free 3 of 9";
}
Node nextNode = currentNode.NextPreOrder(currentNode.Document);
currentNode = nextNode;
}
}
}
doc.MailMerge.ExecuteWithRegions(GetDataTable());
doc.Save(MyDir + @"16.12.0.pdf");