Aspose.Word MailMerge 在段落中设置字体
Aspose.Word MailMerge set font in paragraph
在 FieldMergingCallback.FieldMerging 中,我将字体设置为 Node 中的所有运行 =>
public void FieldMerging(FieldMergingArgs args)
{
if (args.FieldValue.ToString().Length > 100)
{
var node = args.Field.Start.ParentNode.ParentNode;
if (node is Shape)
{
var runlist = node.GetChildNodes(NodeType.Run, true);
foreach (Run run in runlist)
{
run.Font.Size = 6;
}
}
}
}
但结果 pdf 是:
为什么字体比第三个字小?
在执行邮件合并之前,您可以使用以下代码对合并字段内的所有 运行 个节点应用相同的格式。
Document doc = new Document("D:\temp\input.docx");
foreach (Field field in doc.Range.Fields)
{
if (field.Type.Equals(Aspose.Words.Fields.FieldType.FieldMergeField))
{
Node currentNode = field.Start;
bool isContinue = true;
while (currentNode != null && isContinue)
{
if (currentNode.NodeType.Equals(NodeType.FieldEnd))
{
FieldEnd end = (FieldEnd)currentNode;
if (end == field.End)
isContinue = false;
}
if (currentNode.NodeType.Equals(NodeType.Run))
{
Run run = ((Run)currentNode);
run.Font.Size = 6;
}
Node nextNode = currentNode.NextPreOrder(currentNode.Document);
currentNode = nextNode;
}
}
}
doc.Save("D:\Temp\18.6.docx");
希望这对您有所帮助。我在 Aspose 工作,担任开发人员传道者。
在 FieldMergingCallback.FieldMerging 中,我将字体设置为 Node 中的所有运行 =>
public void FieldMerging(FieldMergingArgs args)
{
if (args.FieldValue.ToString().Length > 100)
{
var node = args.Field.Start.ParentNode.ParentNode;
if (node is Shape)
{
var runlist = node.GetChildNodes(NodeType.Run, true);
foreach (Run run in runlist)
{
run.Font.Size = 6;
}
}
}
}
但结果 pdf 是:
为什么字体比第三个字小?
在执行邮件合并之前,您可以使用以下代码对合并字段内的所有 运行 个节点应用相同的格式。
Document doc = new Document("D:\temp\input.docx");
foreach (Field field in doc.Range.Fields)
{
if (field.Type.Equals(Aspose.Words.Fields.FieldType.FieldMergeField))
{
Node currentNode = field.Start;
bool isContinue = true;
while (currentNode != null && isContinue)
{
if (currentNode.NodeType.Equals(NodeType.FieldEnd))
{
FieldEnd end = (FieldEnd)currentNode;
if (end == field.End)
isContinue = false;
}
if (currentNode.NodeType.Equals(NodeType.Run))
{
Run run = ((Run)currentNode);
run.Font.Size = 6;
}
Node nextNode = currentNode.NextPreOrder(currentNode.Document);
currentNode = nextNode;
}
}
}
doc.Save("D:\Temp\18.6.docx");
希望这对您有所帮助。我在 Aspose 工作,担任开发人员传道者。