public void CanRoundTripWordprocessingDocumentWithAltChunks() { using (MemoryStream stream = CreateWordprocessingDocumentWithAltChunks()) using (WordprocessingDocument original = WordprocessingDocument.Open(stream, false)) { XDocument flatOpcDocument = original.ToFlatOpcDocument(); using (WordprocessingDocument roundTripped = WordprocessingDocument.FromFlatOpcDocument(flatOpcDocument)) { List <AlternativeFormatImportPart> altChunkParts = roundTripped.MainDocumentPart .GetPartsOfType <AlternativeFormatImportPart>() .ToList(); AssertXmlContentEquals( altChunkParts.First(p => p.ContentType == XhtmlContentType), XhtmlString); AssertXmlContentEquals( altChunkParts.First(p => p.ContentType == XmlContentType), XmlString); AssertBinaryContentEquals( altChunkParts.First(p => p.ContentType == WordprocessingMLContentType), WordprocessingMLBytes); } } }
public void Fill(string name) { var value = name is null ? null : "TestBarCodeData012938"; var document = new ImageTestDocument(name, value); var xDocument = XDocument.Parse(Resources.ImageTestDocument); using (var package = WordprocessingDocument.FromFlatOpcDocument(xDocument)) { var body = package.MainDocumentPart.Document.Body; try { document.Fill(package.MainDocumentPart); if (name == "Image") { var blip = body.Descendants <SdtAlias>() .FirstOrDefault(aliase => aliase.Val == name)?.Parent?.Parent .Descendants <Blip>() .SingleOrDefault(); Assert.That(blip, Is.Not.Null.And.InstanceOf <Blip>() | Is.Null, $"У каждого {nameof(SdtElement)} c {nameof(SdtAlias)}.{nameof(SdtAlias.Val)}={name} " + $"должен быть один вложенный элемент {nameof(Blip)}."); Assert.That( () => package.MainDocumentPart.GetPartById(blip.Embed), Is.Not.Null.And.InstanceOf <ImagePart>() | Is.Null, $"В тестовом документе должен быть объявлен элемент ImagePart с Relationship Id={blip.Embed}"); var imagePart = package.MainDocumentPart.GetPartById(blip.Embed); Assert.NotNull(imagePart); Assert.AreEqual( "image/png", imagePart.ContentType, $"В тестовом документе должен быть объявлен элемент ImagePart с ContentType=image/png"); using (var sourceStreamReader = new StreamReader(new MemoryStream(Convert.FromBase64String(Resources.TestImageData)))) { using (var destinationStreamReader = new StreamReader(imagePart.GetStream())) { Assert.That( () => destinationStreamReader.ReadToEnd(), Is.EqualTo(sourceStreamReader.ReadToEnd()), "Исходное изображение не соответствует полученному из документа."); } } } } catch (Exception e) when(e is ArgumentNullException || e is InvalidSdtElementException) { Assert.Pass(); } } }
public void CanCreateFlatOpcWordprocessingDocuments1() { using (var inputStream = GetStream(TestFiles.Document)) using (var source = WordprocessingDocument.Open(inputStream, false)) { var flatOpcDoc = source.ToFlatOpcDocument(); using (var dest = WordprocessingDocument.FromFlatOpcDocument(flatOpcDoc)) { PackageAssert.Equal(source, dest); } } }
public void CanCreateFlatOpcWordprocessingDocuments() { using (var source = WordprocessingDocument.Open(Path.Combine(TestUtil.TestResultsDirectory, DocumentPath), true)) { // Test FlatOpcDocument methods. // Check ToFlatOpcDocument() and FromFlatOpcDocument(XDocument). var flatOpcDoc = source.ToFlatOpcDocument(); using (var dest = WordprocessingDocument.FromFlatOpcDocument(flatOpcDoc)) AssertThatPackagesAreEqual(source, dest); // Check FromFlatOpcDocument(XDocument, Stream, bool). using (Stream stream = new MemoryStream()) using (WordprocessingDocument.FromFlatOpcDocument(flatOpcDoc, stream, false)) using (var dest = WordprocessingDocument.Open(stream, false)) AssertThatPackagesAreEqual(source, dest); // Check FromFlatOpcDocument(XDocument, string, bool). using (WordprocessingDocument.FromFlatOpcDocument(flatOpcDoc, Path.Combine(TestUtil.TestResultsDirectory, DocumentClonePath), false)) using (var dest = WordprocessingDocument.Open(Path.Combine(TestUtil.TestResultsDirectory, DocumentClonePath), false)) AssertThatPackagesAreEqual(source, dest); // Check FromFlatOpcDocument(XDocument, Package). using (var stream = new MemoryStream()) using (var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) using (var dest = WordprocessingDocument.FromFlatOpcDocument(flatOpcDoc, package)) AssertThatPackagesAreEqual(source, dest); // Test FlatOpcString methods. // Check ToFlatOpcString() and FromFlatOpcString(string). var flatOpcString = source.ToFlatOpcString(); using (var dest = WordprocessingDocument.FromFlatOpcString(flatOpcString)) AssertThatPackagesAreEqual(source, dest); // Check FromFlatOpcString(string, Stream, bool). using (Stream stream = new MemoryStream()) using (WordprocessingDocument.FromFlatOpcString(flatOpcString, stream, false)) using (var dest = WordprocessingDocument.Open(stream, false)) AssertThatPackagesAreEqual(source, dest); // Check FromFlatOpcString(string, string, bool). using (WordprocessingDocument.FromFlatOpcString(flatOpcString, Path.Combine(TestUtil.TestResultsDirectory, DocumentClonePath), false)) using (var dest = WordprocessingDocument.Open(Path.Combine(TestUtil.TestResultsDirectory, DocumentClonePath), false)) AssertThatPackagesAreEqual(source, dest); // Check FromFlatOpcString(string, Package). using (var stream = new MemoryStream()) using (var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) using (var dest = WordprocessingDocument.FromFlatOpcString(flatOpcString, package)) AssertThatPackagesAreEqual(source, dest); } }
public void CanCreateFlatOpcWordprocessingDocuments4() { using (var inputStream = GetStream(TestFiles.Document)) using (var source = WordprocessingDocument.Open(inputStream, false)) { var flatOpcDoc = source.ToFlatOpcDocument(); using (var stream = new MemoryStream()) using (var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) using (var dest = WordprocessingDocument.FromFlatOpcDocument(flatOpcDoc, package)) { PackageAssert.Equal(source, dest); } } }
/// <summary> /// Creates a new instance of DocumentType from a Flat OPC <see cref="XDocument" />. /// </summary> /// <param name="document">The Flat OPC <see cref="XDocument" />.</param> /// <typeparam name="TDocument">A subclass of <see cref="OpenXmlPackage" />.</typeparam> /// <returns>A new instance of DocumentType</returns> public static TDocument FromFlatOpcDocument <TDocument>(XDocument document) where TDocument : OpenXmlPackage { var t = typeof(TDocument); if (t == typeof(WordprocessingDocument)) { return(WordprocessingDocument.FromFlatOpcDocument(document) as TDocument); } if (t == typeof(SpreadsheetDocument)) { return(SpreadsheetDocument.FromFlatOpcDocument(document) as TDocument); } if (t == typeof(PresentationDocument)) { return(PresentationDocument.FromFlatOpcDocument(document) as TDocument); } throw new OpenXmlTransformationException("Unsupported document type: " + t); }
public void Fill(string name, int id, string firstName, bool gender) { var row = new TestTableRow(name, id, firstName, gender); var document = new TableTestDocument(name, new List <object>() { row }); var xDocument = XDocument.Parse(Resources.TableTestDocument); using (var wordPackage = WordprocessingDocument.FromFlatOpcDocument(xDocument)) { var body = wordPackage.MainDocumentPart.Document.Body; Assert.That(() => { document.Fill(wordPackage.MainDocumentPart); }, Throws.Nothing | Throws.InstanceOf <ArgumentNullException>()); } }
public string FillBookmark(string name, string value) { var document = new BookmarkTestDocument(name, value); var xDocument = XDocument.Parse(Resources.BookmarkTestDocument); string actual = null; using (var wordPackage = WordprocessingDocument.FromFlatOpcDocument(xDocument)) { var body = wordPackage.MainDocumentPart.Document.Body; Assert.That(() => { document.Fill(wordPackage.MainDocumentPart); actual = body.Descendants <BookmarkStart>().SingleOrDefault(bookmark => bookmark.Name == name) ?.NextSibling() ?.Descendants <Text>() ?.SingleOrDefault() ?.Text; }, Throws.Nothing | Throws.InstanceOf <ArgumentNullException>() | Throws.InstanceOf <InvalidSdtElementException>()); return(actual); } }
public string Fill(string name, string value) { var document = new FormatTextTestDocument(name, value); var xDocument = XDocument.Parse(Resources.RichTextTestDocument); string actual = null; using (var wordPackage = WordprocessingDocument.FromFlatOpcDocument(xDocument)) { var body = wordPackage.MainDocumentPart.Document.Body; Assert.That(() => { document.Fill(wordPackage.MainDocumentPart); actual = body.Descendants <SdtElement>() .Where(element => element.SdtProperties.GetFirstChild <SdtAlias>()?.Val == name) .SingleOrDefault() ?.Descendants <Text>() ?.First() ?.Text; }, Throws.Nothing | Throws.InstanceOf <ArgumentNullException>() | Throws.InstanceOf <InvalidSdtElementException>()); return(actual); } }
public string Fill(string name, DateTime value) { var document = new DateTestDocument(name, value); var xDocument = XDocument.Parse(Resources.DateTestDocument); string actual = null; using (var wordPackage = WordprocessingDocument.FromFlatOpcDocument(xDocument)) { var body = wordPackage.MainDocumentPart.Document.Body; Assert.That(() => { document.Fill(wordPackage.MainDocumentPart); actual = body.Descendants <SdtElement>() .Single(block => block.Descendants <SdtAlias>() .First().Val == name) .Descendants <Text>() .First() .Text; }, Throws.Nothing | Throws.InstanceOf <ArgumentNullException>() | Throws.InstanceOf <InvalidSdtElementException>()); return(actual); } }