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); }
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; }
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); }
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; }
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; }