TabulaRasa.DocumentBuilder.DocxDocumentBuilder.InlineField C# (CSharp) Method

InlineField() public method

public InlineField ( string fieldName, Action options ) : IDocumentBuilder
fieldName string
options Action
return IDocumentBuilder
        public IDocumentBuilder InlineField(string fieldName, Action<IDocumentContextBuilder> options)
        {
            var inlineFields = Anchors.InlineField.Get(Document, fieldName);

            foreach (var inlineField in inlineFields)
                inlineField.ContentWrapper.RemoveAllChildren();

            SaveDocument();

            foreach (var inlineField in inlineFields)
            {
                var builder = new DocxDocumentPlaceholderContextBuilder(Document, new RunProperties());

                options(builder);

                var cloned = builder.AggregatedContent
                    .Select(x => x.CloneElement())
                    .ToList();

                var runs = cloned
                    .OfType<Run>();

                foreach (var run in runs)
                    run.RunProperties = inlineField.RunProperties;

                inlineField.ContentWrapper.Append(cloned);
            }

            SaveDocument();

            return this;
        }

Usage Example

        public void PropertiesAppliedToInlineFieldInHeadersAndFooters()
        {
            using (var expected = new DocxDocument(Resources.FieldsInHeadersAndFootersReplaced))
            using (var document = new DocxDocument(Resources.FieldsInHeadersAndFooters))
            {
                var builder = new DocxDocumentBuilder(document);

                builder.InlineField("Signer.ShortNameThisOrSubstitute", x => x.Text("Первый").Text("Второй"));

                Assert.IsTrue(new DocxDocumentEqualityComparer().Equals(expected, document));
            }
        }
All Usage Examples Of TabulaRasa.DocumentBuilder.DocxDocumentBuilder::InlineField