Inheritance: DocxDocumentContextBuilderBase
コード例 #1
0
        public IDocumentBuilder Placeholder(string placeholderName, Action <IDocumentContextBuilder> options, bool preservePlaceholder = true)
        {
            var documentPlaceholders = DocumentPlaceholder.Get(Document, placeholderName);

            foreach (var documentPlaceholder in documentPlaceholders)
            {
                ClearBetweenElements(documentPlaceholder.Opening, documentPlaceholder.Closing);
            }

            SaveDocument();

            foreach (var documentPlaceholder in documentPlaceholders)
            {
                var builder = new DocxDocumentPlaceholderContextBuilder(Document, documentPlaceholders.Any() == false
                                                                                                        ? new RunProperties()
                                                                                                        : documentPlaceholder.Opening.RunProperties);
                options(builder);
                foreach (var contentElement in builder.AggregatedContent)
                {
                    documentPlaceholder.Closing.InsertBeforeSelf(contentElement.CloneElement());
                }
                if (preservePlaceholder == false)
                {
                    documentPlaceholder.Remove();
                }
            }

            SaveDocument();

            return(this);
        }
コード例 #2
0
        public virtual IDocumentContextBuilder Placeholder(string placeholderName, Action<IDocumentContextBuilder> options)
        {
            var newPlaceholder = new DocumentPlaceholder(placeholderName);

            Aggregation.Add(newPlaceholder.Opening);

            if (options != null)
            {
                var placeholderContextBuilder = new DocxDocumentPlaceholderContextBuilder(Document, RunProperties);
                options(placeholderContextBuilder);
                Aggregation.AddRange(placeholderContextBuilder.AggregatedContent);
            }

            Aggregation.Add(newPlaceholder.Closing);

            return this;
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        public IDocumentBuilder Placeholder(string placeholderName, Action<IDocumentContextBuilder> options, bool preservePlaceholder = true)
        {
            var documentPlaceholders = DocumentPlaceholder.Get(Document, placeholderName);

            foreach (var documentPlaceholder in documentPlaceholders)
                ClearBetweenElements(documentPlaceholder.Opening, documentPlaceholder.Closing);

            SaveDocument();

            foreach (var documentPlaceholder in documentPlaceholders)
            {
                var builder = new DocxDocumentPlaceholderContextBuilder(Document, documentPlaceholders.Any() == false
                                                                                  	? new RunProperties()
                                                                                  	: documentPlaceholder.Opening.RunProperties);
                options(builder);
                foreach (var contentElement in builder.AggregatedContent)
                    documentPlaceholder.Closing.InsertBeforeSelf(contentElement.CloneElement());
                if (preservePlaceholder == false)
                    documentPlaceholder.Remove();
            }

            SaveDocument();

            return this;
        }