/// <summary> /// Create builder for template /// </summary> /// <param name="docxDocument">Template document</param> /// <param name="tagVisibilityOptions">List of tags for show and hide</param> public DocxDocumentBuilder(DocxDocument docxDocument, TagVisibilityOptions tagVisibilityOptions = null) : base(docxDocument.GetWordDocument()) { this.docxDocument = docxDocument; this.tagVisibilityOptions = tagVisibilityOptions; MergeVanishedRuns(); }
public void PlaceholderGettingWhichNotExistsReturnsEmpty() { using (var document = new DocxDocument(Resources.WithMainContentTag)) { var placeholders = DocumentPlaceholder.Get(document.GetWordDocument(), "NON_EXISTING"); Assert.Empty(placeholders); } }
public void TagGettingWhichNotExistsReturnsEmpty() { using (var document = new DocxDocument(Resources.WithMainContentTag)) { var tags = DocumentTag.Get(document.GetWordDocument(), "NON_EXISTING"); Assert.Empty(tags); } }
public void ManyPlaceholdersGettingFromDocumentCorrect() { using (var document = new DocxDocument(Resources.WithManyPlaceholders)) { var placeholders = DocumentPlaceholder.Get(document.GetWordDocument(), "INNER"); Assert.NotNull(placeholders); Assert.Equal(3, placeholders.Count()); } }
public void ManyTagsGettingFromDocumentCorrect() { using (var document = new DocxDocument(Resources.WithManyTags)) { var tags = DocumentTag.Get(document.GetWordDocument(), "SUB"); Assert.NotNull(tags); Assert.Equal(3, tags.Count()); } }
public void AppendParagraphAddsNewParagraphToTheEndOfDocument() { using (var expected = new DocxDocument(Resources.DocumentWithAddedParagraph)) using (var document = new DocxDocument(Resources.DocumentWithoutParagraph)) { document.AppendParagraph("New paragraph content"); Assert.Equal(GetParagraphs(expected).Count(), GetParagraphs(document).Count()); Assert.Equal(GetParagraphs(expected).Last().InnerText, GetParagraphs(document).Last().InnerText); } }
public void CanSetContentToInlineFieldConsistingOfTwoRuns() { using (var expected = new DocxDocument(Resources.WithTwoRunsInInlineField)) using (var document = new DocxDocument(Resources.WithSdtElements)) { var builder = new DocxDocumentBuilder(document); builder.InlineField("InlineField", x => x.Text("Первый").Text("Второй")); Assert.Equal(expected, document, new DocxDocumentEqualityComparer()); } }
public void PropertiesAppliedToBlockFieldShouldPersistAfterSettingContent() { using (var expected = new DocxDocument(Resources.WithStyledSdtElementsContentInserted)) using (var document = new DocxDocument(Resources.WithStyledSdtElements)) { var builder = new DocxDocumentBuilder(document); builder.BlockField("BlockField", x => x.Paragraph("Первый").Paragraph("Второй")); Assert.Equal(expected, document, new DocxDocumentEqualityComparer()); } }
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.Equal(expected, document, new DocxDocumentEqualityComparer()); } }
public void PropertiesAppliedToInlineFieldShouldPersistAfterSettingContent() { using (var expected = new DocxDocument(Resources.WithStyledInlineSdtElementContentInserted)) using (var document = new DocxDocument(Resources.WithStyledInlineSdtElement)) { var builder = new DocxDocumentBuilder(document); builder.InlineField("InlineField", x => x.Text("Первый").Text("Второй")); Assert.Equal(expected, document, new DocxDocumentEqualityComparer()); } }
public void CanSetContentToBlockFieldConsistingOfTwoParagraphs() { using (var expected = new DocxDocument(Resources.WithTwoParagraphsInBlockField)) using (var document = new DocxDocument(Resources.WithSdtElements)) { var builder = new DocxDocumentBuilder(document); builder.BlockField("BlockField", x => x.Paragraph("Первый").Paragraph("Второй")); Assert.Equal(expected, document, new DocxDocumentEqualityComparer()); } }
public byte[] GenerateCardReports(List<Card> cards, List<List> lists) { using (var docxDocument = new DocxDocument(SimpleTemplate.EmptyWordFile)) { var builder = new DocxDocumentBuilder(docxDocument); builder.Tag(SimpleTemplate.HeaderTagName, x => x.Paragraph(z => z.Bold.Text("X. etap - 2012.03.18 - 29 - várható fejlesztések"))); builder.Tag(SimpleTemplate.ContentTagName, x => FoxbyWordServiceHelper.AddHeadline(x, 12).AddReports(cards, lists)); return docxDocument.ToArray(); } }
public void AppendHiddenParagraph() { using (var expected = new DocxDocument(Resources.DocumentWithAddedParagraph)) using (var document = new DocxDocument(Resources.DocumentWithoutParagraph)) { var paragraphsCount = GetParagraphs(document).Count; document.AppendParagraph("New paragraph content", false); var paragraphs = GetParagraphs(document); Assert.Equal(paragraphsCount + 1, paragraphs.Count); Assert.Equal(GetParagraphs(expected).Last().InnerXml, paragraphs.Last().InnerXml); } }
public void CanInsertActionToCells() { using (var expected = new DocxDocument(Resources.WithCellWithPlaceholder)) using (var document = new DocxDocument(Resources.WithMainContentTag)) { var builder = CreateBuilder(document); builder.Tag("MAIN_CONTENT", x => x.Table(y => y.Column("Наименование") .Column("Адрес"), y => y.Row(z => z.Left.Cell(c => c.Placeholder("somePlaceholder", "hello world!"))) )); Assert.Equal(expected, document, new DocxDocumentEqualityComparer()); } }
public void CanInsertJpegImageIntoParagraph() { using (var expected = new DocxDocument(Resources.WithMainContentTag)) using (var document = new DocxDocument(Resources.WithMainContentTag)) { var builder = DocxDocumentBuilder.Create(document); var content = File.ReadAllBytes("Resources/Images/apple.jpg"); builder .Tag("MAIN_CONTENT", x => x.Paragraph(z => z.Image(content, "image/jpeg"))); SaveDocxFile(document, "WithImageInserted"); } }
public void AppendReplacementOpenCloseTagAddsTagsForReplacementsToTheEndOfTheDocument() { using (var document = new DocxDocument(Resources.DocumentWithoutParagraph)) { var initialCount = GetParagraphs(document).Count; document.AppendTag("Test"); var paragraphs = GetParagraphs(document); Assert.Equal("{/Test}", paragraphs.Last().InnerText); Assert.Equal("{Test}", paragraphs.Skip(paragraphs.Count - 2).First().InnerText); Assert.Equal(initialCount + 2, paragraphs.Count); } }
public void AppendHiddenSingleReplacementTagAddsTagForReplacementToTheEndOfTheDocument() { using (var document = new DocxDocument(Resources.DocumentWithoutParagraph)) { var initialCount = GetParagraphs(document).Count; document.AppendSelfclosingTag("Test", false); var paragraphs = GetParagraphs(document); var insertedParagraph = paragraphs.Last(); Assert.Equal("{{Test}}", insertedParagraph.InnerText); Assert.NotEmpty(insertedParagraph.ParagraphProperties); Assert.Equal(initialCount + 1, paragraphs.Count); } }
public void CallToNonExistingPlaceholderDoesNotChangeDocument() { using (var expected = new DocxDocument(Resources.WithTitlePlaceholder)) using (var document = new DocxDocument(Resources.WithTitlePlaceholder)) { var builder = CreateBuilder(document); builder .Placeholder("NON_EXISTING", x => x.EditableStart() .Text("Тест") .Placeholder("NEW") .Text("Тест") .EditableEnd()); Assert.Equal(expected, document, new DocxDocumentEqualityComparer()); } }
public void CallToNonExistingTagDoesNotChangeDocument() { using (var expected = new DocxDocument(Resources.WithMainContentTag)) using (var document = new DocxDocument(Resources.WithMainContentTag)) { var builder = CreateBuilder(document); builder .Tag("NON_EXISTING", x => x.Paragraph("Тест") .AppendTag("NEW", z => { }) .OrderedList(z => z.Item("Элемент 1").Item("Элемент 2")) .EditableStart() .Table(z => z.Column("Колонки"), z => z.Row("Строка")) .Paragraph(z => z.Placeholder("TEST")) .EditableEnd()); Assert.Equal(expected, document, new DocxDocumentEqualityComparer()); } }
public void CanAccessNewlyCreatedTagViaTagAndChangeItsContent() { using (var expected = new DocxDocument(Resources.WithMainContentAndNewTag)) using (var document = new DocxDocument(Resources.WithMainContentTag)) { var builder = CreateBuilder(document); builder .Tag("MAIN_CONTENT", x => x.AppendTag("NEW_TAG", z => { }) .EditableStart() .Indent.Paragraph("Тестовый 1") .EditableEnd()) .Tag("NEW_TAG", x => x.EditableStart() .Indent.Paragraph("Тестовый в новом теге 1") .Indent.Paragraph("Тестовый в новом теге 2 строка 1", "Тестовый в новом теге 2 строка 2") .EditableEnd()); Assert.Equal(expected, document, new DocxDocumentEqualityComparer()); } }
public OpenCloseTagReplacer(string name, DocxDocument document) : base(name, document) { }
public void SetCustomPropertyToDocumentIfItAlreadyHasProperties() { using (var withTwoAttributes = new DocxDocument(Resources.DocumentWithTwoAttributes)) using (var withAttribute = new DocxDocument(Resources.DocumentWithAttribute)) { withAttribute.SetCustomProperty("customAttributes2", "Working2"); DocumentFormat.OpenXml.CustomProperties.Properties propertiesWithTwoAttributes = withTwoAttributes.GetWordDocument().CustomFilePropertiesPart.Properties; DocumentFormat.OpenXml.CustomProperties.Properties propertiesWithAttribute = withAttribute.GetWordDocument().CustomFilePropertiesPart.Properties; Assert.Equal(propertiesWithTwoAttributes.First(x => x.LocalName == "property").OuterXml, propertiesWithAttribute.First(x => x.LocalName == "property").OuterXml); Assert.Equal(propertiesWithTwoAttributes.Last(x => x.LocalName == "property").OuterXml, propertiesWithAttribute.Last(x => x.LocalName == "property").OuterXml); } }
private static void SaveDocxFile(DocxDocument document, string fileName) { File.WriteAllBytes(string.Format(@"D:\{0}.docx", fileName), document.ToArray()); }
public void TestCleanContent() { using (var withParagraph = new DocxDocument(Resources.DocumentWithParagraph)) using (var withOutParagraph = new DocxDocument(Resources.DocumentWithoutParagraph)) { withParagraph.CleanContent("Edit"); Assert.Equal(withOutParagraph, withParagraph, new DocxDocumentEqualityComparer()); } }
public SingleTagReplacer(string name, DocxDocument document) : base(name, document) { }
protected TagReplacer(string name, DocxDocument document) { Document = document; Name = name; }
public void UnprotectRemovesWrightProtectionFromFile() { using (var @protected = new DocxDocument(Resources.Protected)) using (var @unprotected = new DocxDocument(Resources.Unprotected)) { @protected.Unprotect(); Assert.Equal(@unprotected.GetWordDocument().MainDocumentPart.DocumentSettingsPart.Settings.OuterXml, @protected.GetWordDocument().MainDocumentPart.DocumentSettingsPart.Settings.OuterXml, StringComparer.InvariantCultureIgnoreCase); } }
public void VisibilityContentInTag() { using (var initialDocument = new DocxDocument(Resources.DocumentWithHideContentInTag)) using (var expectedDocument = new DocxDocument(Resources.DocumentWithVisibilityContentInTag)) { initialDocument.SetTagVisibility("Tag", true); Assert.Equal(expectedDocument, initialDocument, new DocxDocumentEqualityComparer()); } }
private static ICollection<Paragraph> GetParagraphs(DocxDocument document) { return document.GetWordDocument().MainDocumentPart.Document.Descendants().OfType<Paragraph>().ToArray(); }
public void AppendSingleReplacementTagAddsTagForReplacementToTheEndOfTheDocument() { using (var document = new DocxDocument(Resources.DocumentWithoutParagraph)) { var initialCount = GetParagraphs(document).Count; document.AppendSelfclosingTag("Test"); var paragraphs = GetParagraphs(document); Assert.Equal("{{Test}}", paragraphs.Last().InnerText); Assert.Equal(initialCount + 1, paragraphs.Count); } }