Aspose.Word MailMerge установить шрифт в пункте - PullRequest
0 голосов
/ 26 июня 2018

В FieldMergingCallback.FieldMerging и я устанавливаю шрифт для всех запусков в узле =>

 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 будет: enter image description here

Почему шрифт меньше третьего слова?

1 Ответ

0 голосов
/ 27 июня 2018

Перед выполнением слияния по почте вы можете использовать следующий код, чтобы применить одинаковое форматирование ко всем узлам Run внутри поля слияния.

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 в качестве разработчика Evangelist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...