public void TestActualGenerationDoubleItemIfWithItemText()
        {
            MemoryStream output;

            using (var input = AssemblyResourceHelper.GetResourceStream(this, "corruptedDoc.docx"))
            {
                output = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "DemoData2.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data,
                    new DocxGeneratorSettings()
                {
                    MissingDataMode = MissingDataMode.ThrowException
                });
            }

            var package = new DocxPackage(output);

            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;

            Console.WriteLine(documentPart.ToString());
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
        }
        public void TestActualGenerationTextInTable()
        {
            MemoryStream output;

            using (var input = AssemblyResourceHelper.GetResourceStream(this, "textintable.docx"))
            {
                output = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "data.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data);
            }

            var package = new DocxPackage(output);

            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;

            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
            // documentPart.Descendants(WordMl.ParagraphName).Remove();
            Console.WriteLine(documentPart.Descendants(WordMl.TableName).First());
            Assert.IsTrue(documentPart.Descendants(WordMl.TableRowName).All(element => element.Elements().All(el => el.Name != WordMl.ParagraphName)));
        }
        public void TestActualGenerationItemIfInRepeater()
        {
            MemoryStream output;

            using (var input = AssemblyResourceHelper.GetResourceStream(this, "FaultItemIf.docx"))
            {
                output = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "FaultItemIfData.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings()
                {
                    MissingDataMode = MissingDataMode.ThrowException
                });
            }

            var package = new DocxPackage(output);

            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;

            Console.WriteLine(documentPart);
            //Console.WriteLine(documentPart);
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
            Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
        }
        public void TestActualGenerationItemRepeaterElementsInParagraphs2()
        {
            MemoryStream output;

            using (var input = AssemblyResourceHelper.GetResourceStream(this, "badplan.docx"))
            {
                output = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "PlanDocx.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings()
                {
                    MissingDataMode = MissingDataMode.ThrowException
                });
            }

            var package = new DocxPackage(output);

            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;

            Console.WriteLine(documentPart.Descendants(WordMl.TableRowName).First(tr => tr.Descendants().Any(el => el.Value == "тестовое ЭА мероприятие")));
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
            Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
        }
        public void TestActualGeneration()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "DocxPackageTest.docx");

            using (input)
            {
                var          output      = new MemoryStream();
                var          generator   = new DocxGenerator();
                const string DynamicText = "My anaconda don't";
                generator.GenerateDocx(
                    input,
                    output,
                    new SomeEntityWrapper
                {
                    Test = new SomeEntity
                    {
                        Text = DynamicText
                    }
                });
                var package = new DocxPackage(output);
                package.Load();

                XDocument documentPartXml = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Assert.IsFalse(documentPartXml.Descendants(WordMl.SdtName).Any());
                Assert.IsNotNull(documentPartXml.Descendants(WordMl.TextRunName).Single(e => e.Value == DynamicText));
            }
        }
        public void TestActualGenerationItemRepeaterNestedDemoIRInParagraph()
        {
            MemoryStream output;

            using (var input = AssemblyResourceHelper.GetResourceStream(this, "ItemRepeaterNestedDemoIRParagraph.docx"))
            {
                output = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "ItemRepeaterNested2IRDemoData.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings()
                {
                    MissingDataMode = MissingDataMode.ThrowException
                });
            }

            var package = new DocxPackage(output);

            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;

            Console.WriteLine(documentPart.Descendants(WordMl.TableRowName).First(tr => tr.Descendants().Any(el => el.Value == "Certificate 1")));
            //Console.WriteLine(documentPart);
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
            Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
            Assert.IsFalse(documentPart.Descendants(WordMl.TableCellName).Elements(WordMl.ParagraphName).Any(el => el.Name.Equals(WordMl.TextRunName)));
        }
        public void TestActualGenerationItemHtmlContentInTable()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "ItemHtmlContentInTable.docx");

            using (input)
            {
                var       output    = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "data.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings()
                {
                    MissingDataMode = MissingDataMode.Ignore
                });
                var package = new DocxPackage(output);
                package.Load();

                var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
                Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
            }
        }
        public void TestActualGeneration()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "DocxPackageTest.docx");
            using (input)
            {
                var output = new MemoryStream();
                var generator = new DocxGenerator();
                const string DynamicText = "My anaconda don't";
                generator.GenerateDocx(
                    input,
                    output,
                    new SomeEntityWrapper
                    {
                        Test = new SomeEntity
                        {
                            Text = DynamicText
                        }
                    });
                var package = new DocxPackage(output);
                package.Load();

                XDocument documentPartXml = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Assert.IsFalse(documentPartXml.Descendants(WordMl.SdtName).Any());
                Assert.IsNotNull(documentPartXml.Descendants(WordMl.TextRunName).Single(e => e.Value == DynamicText));
            }
          
        }       
        public void TestActualGenerationStaticTextAfterTag()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "corruptedDocxx.docx");

            using (input)
            {
                var       output    = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "DemoData2.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data);

                var package = new DocxPackage(output);
                package.Load();
                var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
                Console.WriteLine(documentPart);
                Assert.IsTrue(documentPart.Root.Descendants(WordMl.TableCellName).All(element => element.Elements().All(el => el.Name != WordMl.TextRunName)));
            }
        }
        public void TestActualGenerationIfWithTableWithParagraphs()
        {
            MemoryStream output;

            using (var input = AssemblyResourceHelper.GetResourceStream(this, "ifTtable1.docx"))
            {
                output = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "data.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data);
            }

            var package = new DocxPackage(output);

            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;

            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
        }
        public async Task <IActionResult> GenerateDocument([FromQuery] string fileID, [FromQuery] string userName, [FromBody] SelectionResult selectionResult)
        {
            if (string.IsNullOrEmpty(fileID) || fileID == "null")
            {
                return(BadRequest());
            }
            if (string.IsNullOrEmpty(userName) || userName == "null")
            {
                return(BadRequest());
            }
            string workPath             = Path.Combine(_webRootPath, "Users", userName, fileID, "report");
            ReportTemplateResult result = ToReportTemplate(selectionResult, workPath);
            string shortName            = "选型结果简表";
            string filename             = Path.Combine(workPath, shortName + ".docx");
            var    user = await _userManager.FindByNameAsync(User.Identity.Name);

            string companyName = $"./images/Report/{user.Company}.png";

            using (DocxGenerator gen = new DocxGenerator(MapPath(@"选型简表结果.docx")))
            {
                gen.AddCompanyLogo(MapPath(companyName))
                .AddMachinePicture(MapPath(result.MachinePicture))
                .AddSimulationPictures(result.SimulationPictures.ToArray())
                .AddContent(result)
                .SaveAs(filename);
            }
            return(Created(Path.Combine("Users", userName, fileID, "report"), null));
        }
        private void InitializeStubbedExecution()
        {
            this.docxPackageMock = new Mock <DocxPackage>();
            this.docxPackageMock.Setup(p => p.Load()).Verifiable();
            this.docxPackageMock.Setup(p => p.Save()).Verifiable();

            this.docxPackagePartMock = new Mock <DocxPackagePart>();
            var document = new XDocument();

            this.root = document.Root;

            this.docxPackagePartMock.SetupGet(p => p.PartXml).Returns(document);
            this.docxPackagePartMock.Setup(p => p.Save()).Verifiable();

            var packageParts = new List <DocxPackagePart> {
                this.docxPackagePartMock.Object
            };

            this.docxPackageMock.SetupGet(x => x.Parts).Returns(packageParts);

            var packageFactoryMock = new Mock <IDocxPackageFactory>();

            packageFactoryMock.Setup(f => f.Create(It.IsAny <Stream>())).Returns(this.docxPackageMock.Object);

            this.processorMock = new Mock <AbstractProcessor>();
            this.processorMock.Setup(p => p.Process()).Verifiable();
            this.processorMock.SetupSet(processor => processor.DataReader = It.IsAny <DataReader>()).Verifiable();
            var processorFactoryMock = new Mock <IProcessorFactory>();

            processorFactoryMock.Setup(f => f.Create()).Returns(this.processorMock.Object);

            this.parserMock = new Mock <ITagParser>();
            var parserFactoryMock = new Mock <IParserFactory>();

            parserFactoryMock.Setup(f => f.Create()).Returns(this.parserMock.Object);

            this.stringDataReaderMock   = new Mock <DataReader>();
            this.entityDataReaderMock   = new Mock <DataReader>();
            this.documentDataReaderMock = new Mock <DataReader>();
            var dataReaderFactoryMock = new Mock <IDataReaderFactory>();

            dataReaderFactoryMock.Setup(f => f.CreateReader(It.IsAny <string>())).Returns(this.stringDataReaderMock.Object);
            dataReaderFactoryMock.Setup(f => f.CreateReader(It.IsAny <A>())).Returns(this.entityDataReaderMock.Object);
            dataReaderFactoryMock.Setup(f => f.CreateReader(It.IsAny <XDocument>())).Returns(this.documentDataReaderMock.Object);

            this.docxGenerator = new DocxGenerator
            {
                DataReaderFactory = dataReaderFactoryMock.Object,
                PackageFactory    = packageFactoryMock.Object,
                ParserFactory     = parserFactoryMock.Object,
                ProcessorFactory  = processorFactoryMock.Object
            };

            this.templateStream = AssemblyResourceHelper.GetResourceStream(this, "DocxPackageTest.docx");
            this.outputStream   = new MemoryStream();
        }
Example #13
0
        public TextTagInHeaderFooterAndDocumentTest()
        {
            var input     = AssemblyResourceHelper.GetResourceStream(this, "DocxPackageHeaderFooterTest.docx");
            var output    = new MemoryStream();
            var generator = new DocxGenerator();
            var stream    = AssemblyResourceHelper.GetResourceStream(this, "DocxPackageHeaderFooterTest_data.xml");
            var data      = XDocument.Load(stream);

            generator.GenerateDocx(input, output, data);

            _package = new DocxPackage(output).Load();
        }
        public TextTagInHeaderFooterAndDocumentTest()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "DocxPackageHeaderFooterTest.docx");
            var output = new MemoryStream();
            var generator = new DocxGenerator();
            var stream = AssemblyResourceHelper.GetResourceStream(this, "DocxPackageHeaderFooterTest_data.xml");
            var data = XDocument.Load(stream);

            generator.GenerateDocx(input, output, data);

            _package = new DocxPackage(output).Load();
        }
        private static void Generate(Options options)
        {
            using (var templateStream = new FileStream(options.TemplateFileName, FileMode.Open))
                using (var destinationStream = new FileStream(options.TargetFileName, FileMode.Create))
                {
                    var dataDocument = XDocument.Load(options.DataFileName);
                    var generator    = new DocxGenerator();
                    try
                    {
                        DocxGeneratorSettings settings = null;
                        if (options.ThrowException)
                        {
                            settings = new DocxGeneratorSettings {
                                MissingDataMode = MissingDataMode.ThrowException
                            };
                        }
                        else if (options.PrintError)
                        {
                            settings = new DocxGeneratorSettings {
                                MissingDataMode = MissingDataMode.PrintError
                            };
                        }
                        else if (options.Ignore)
                        {
                            settings = new DocxGeneratorSettings {
                                MissingDataMode = MissingDataMode.Ignore
                            };
                        }

                        if (settings == null)
                        {
                            settings = new DocxGeneratorSettings
                            {
                                CreateDynamicContentTags = options.LockDynamicContent
                            };
                        }
                        else
                        {
                            settings.CreateDynamicContentTags = options.LockDynamicContent;
                        }

                        generator.GenerateDocx(templateStream, destinationStream, dataDocument, settings);
                    }
                    catch (Exception exception)
                    {
                        ErrorLog(exception, options);
                    }
                }
        }
Example #16
0
        public ActionResult Index(SelectionResult selectionResult)
        {
            ReportTemplateResult result = ToReportTemplate(selectionResult);
            string shortName            = DateTime.Now.ToString("yyyyMMdd-hhmmss");
            string filename             = HttpContext.Server.MapPath(@"~/App/temp/") + shortName + ".docx";

            result.Filename = shortName;
            using (DocxGenerator gen = new DocxGenerator(HttpContext.Server.MapPath(@"~/App/docTemplate/选型简表结果.docx")))
            {
                gen.AddMachinePicture(MapPath(result.MachinePicture))
                .AddSimulationPictures(MapPath(result.SimulationPictures.ToArray()))
                .AddContent(result)
                .SaveAs(filename);
            }
            return(View(result));
        }
        public void TestActualXDocumentGenerationHTMLLat1Content()
        {
            const string htmlContentText = @"
                &lt;html&gt;
		        &lt;head /&gt;
		        &lt;body&gt;
		        &lt;p&gt; Text is  &laquo;gfdgfdg &lt;/p&gt;
		        &lt;/body&gt;
		        &lt;/html&gt;
            ";
            var          input           = AssemblyResourceHelper.GetResourceStream(this, "HTMLLat1Content.docx");

            using (input)
            {
                var output    = new MemoryStream();
                var generator = new DocxGenerator();

                var data = new XDocument();
                data.Add(
                    new XElement("test", new XElement(
                                     "hypertext", htmlContentText
                                     )
                                 )
                    );

                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings()
                {
                    MissingDataMode = MissingDataMode.ThrowException
                });
                var package = new DocxPackage(output);
                package.Load();

                using (var fileStream = File.Create("C:\\xdochtmlcontent.docx"))
                {
                    output.Seek(0, SeekOrigin.Begin);
                    output.CopyTo(fileStream);
                }

                var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Console.WriteLine(documentPart);
                Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
                Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
            }
        }
        private static void Generate(Options options)
        {
            using (var templateStream = new FileStream(options.TemplateFileName, FileMode.Open))
            using (var destinationStream = new FileStream(options.TargetFileName, FileMode.Create))
            {
                var dataDocument = XDocument.Load(options.DataFileName);
                var generator = new DocxGenerator();
                try
                {
                    DocxGeneratorSettings settings = null;
                    if (options.ThrowException)
                    {
                        settings = new DocxGeneratorSettings { MissingDataMode = MissingDataMode.ThrowException };
                    }
                    else if (options.PrintError)
                    {
                        settings = new DocxGeneratorSettings { MissingDataMode = MissingDataMode.PrintError };
                    }
                    else if (options.Ignore)
                    {
                        settings = new DocxGeneratorSettings { MissingDataMode = MissingDataMode.Ignore };
                    }
                    
                    if (settings == null)
                    {
                        settings = new DocxGeneratorSettings
                                       {
                                           CreateDynamicContentTags = options.LockDynamicContent
                                       };
                    }
                    else
                    {
                        settings.CreateDynamicContentTags = options.LockDynamicContent;
                    }

                    generator.GenerateDocx(templateStream, destinationStream, dataDocument, settings);
                }
                catch (Exception exception)
                {
                    ErrorLog(exception, options);
                }
            }
        }
Example #19
0
        private void OnSaveNewFormTemplate(FormsType formType)
        {
            try
            {
                ContactFormPerson contactFormDetails = CreateContactDetails();
                DocxGenerator     docxGenerator      = new DocxGenerator(contactFormDetails, new ConfigMgr());

                docxGenerator.GenerateNewForm(formType);

                if (IsSavingClientData.IsChecked.Value)
                {
                    AddNewClient(contactFormDetails, Defaults.CheckListDefaultCollection);
                }

                snack_bar_with_action.IsActive = true;
                snack_bar_with_action.MessageQueue.Enqueue("יצירת טופס בוצעה בהצלחה ונתונים נשמרו",
                                                           "פתח",
                                                           generate_forms_snack_barAction,
                                                           new Tuple <DocxGenerator, FormsType>(docxGenerator, formType));
            }
            catch (ArgumentNullException)
            {
                DisplaySnackbar("שגיאה. בדוק את שדות חובה. מטפל בתיק, סוג התיק");
            }
            catch (FileNotFoundException)
            {
                DisplaySnackbar("התקיית קבצים לא קיימת, בדוק בהגדרות מערכת את ההגדרות שלך");
            }
            catch (IOException)
            {
                DisplaySnackbar("שגיאה ביצירת הטופס, בדוק שהוא לא פתוח כבר ונסה שוב");
            }
            catch (Exception ex)
            {
                DisplaySnackbar("שגיאה כללית במערכת, אנא נסה שוב");
                Logger log = new Logger(new ConfigMgr());
                log.Error("general error on load tab", ex);
            }
        }
        public void TestActualGenerationRepeaterInIf()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "RepeaterInIf.docx");

            using (input)
            {
                var       output    = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "dataRepeaterInIf.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data);
                var package = new DocxPackage(output);
                package.Load();

                Assert.IsFalse(package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml.Descendants(WordMl.SdtName).Any());
            }
        }
        public IActionResult GenerateDocument([FromQuery] string fileID, [FromQuery] string userName, [FromBody] SelectionResult selectionResult)
        {
            if (string.IsNullOrEmpty(fileID) || fileID == "null")
            {
                return(BadRequest());
            }
            if (string.IsNullOrEmpty(userName) || userName == "null")
            {
                return(BadRequest());
            }
            string workPath             = Path.Combine(_webRootPath, "Users", userName, fileID, "report");
            ReportTemplateResult result = ToReportTemplate(selectionResult, workPath);
            string shortName            = "选型结果简表";
            string filename             = Path.Combine(workPath, shortName + ".docx");

            using (DocxGenerator gen = new DocxGenerator(MapPath(@"选型简表结果.docx")))
            {
                gen.AddMachinePicture(MapPath(result.MachinePicture))
                .AddSimulationPictures(result.SimulationPictures.ToArray())
                .AddContent(result)
                .SaveAs(filename);
            }
            return(Created(Path.Combine("Users", userName, fileID, "report"), null));
        }
        public void TestActualGenerationStaticTextAfterTag()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "corruptedDocxx.docx");
            using (input)
            {
                var output = new MemoryStream();
                var generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "DemoData2.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data);

                var package = new DocxPackage(output);
                package.Load();
                var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
                Console.WriteLine(documentPart);
                Assert.IsTrue(documentPart.Root.Descendants(WordMl.TableCellName).All(element => element.Elements().All(el => el.Name != WordMl.TextRunName)));
            
            }
        }
        public void TestActualGenerationDoubleItemIfWithItemText()
        {
            MemoryStream output;
            using (var input = AssemblyResourceHelper.GetResourceStream(this, "corruptedDoc.docx"))
            {
                output = new MemoryStream();
                var generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "DemoData2.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, 
                    new DocxGeneratorSettings() { MissingDataMode = MissingDataMode.ThrowException });
            }

            var package = new DocxPackage(output);
            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
            Console.WriteLine(documentPart.ToString());
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());                        
        }
        public void TestActualGenerationItemRepeaterElementsInParagraphs2()
        {
            MemoryStream output;
            using (var input = AssemblyResourceHelper.GetResourceStream(this, "badplan.docx"))
            {
                output = new MemoryStream();
                var generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "PlanDocx.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings() { MissingDataMode = MissingDataMode.ThrowException });
            }

            var package = new DocxPackage(output);
            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
            Console.WriteLine(documentPart.Descendants(WordMl.TableRowName).First(tr => tr.Descendants().Any(el => el.Value == "тестовое ЭА мероприятие")));
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
            Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
        }
        public void TestActualGenerationItemIfInRepeater()
        {
            MemoryStream output;
            using (var input = AssemblyResourceHelper.GetResourceStream(this, "FaultItemIf.docx"))
            {
                output = new MemoryStream();
                var generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "FaultItemIfData.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings() { MissingDataMode = MissingDataMode.ThrowException });
            }

            var package = new DocxPackage(output);
            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
            Console.WriteLine(documentPart);
            //Console.WriteLine(documentPart);
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
            Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
        }
        public void TestActualGenerationItemHtmlContentInTable()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "ItemHtmlContentInTable.docx");
            using (input)
            {
                var output = new MemoryStream();
                var generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "data.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings() { MissingDataMode = MissingDataMode.Ignore });
                var package = new DocxPackage(output);
                package.Load();

                var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
                Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
            }
        }
        public void TestActualXDocumentGenerationHTMLLat1Content()
        {
            const string htmlContentText = @"
                &lt;html&gt;
		        &lt;head /&gt;
		        &lt;body&gt;
		        &lt;p&gt; Text is  &laquo;gfdgfdg &lt;/p&gt;
		        &lt;/body&gt;
		        &lt;/html&gt;
            ";
            var input = AssemblyResourceHelper.GetResourceStream(this, "HTMLLat1Content.docx");
            using (input)
            {
                var output = new MemoryStream();
                var generator = new DocxGenerator();

                var data = new XDocument();
                data.Add(
                        new XElement("test", new XElement(
                            "hypertext", htmlContentText
                            )
                        )
                );

                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings() { MissingDataMode = MissingDataMode.ThrowException });
                var package = new DocxPackage(output);
                package.Load();

                using (var fileStream = File.Create("C:\\xdochtmlcontent.docx"))
                {
                    output.Seek(0, SeekOrigin.Begin);
                    output.CopyTo(fileStream);
                }

                var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Console.WriteLine(documentPart);
                Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
                Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
            }

        }
        public void TestActualGenerationTextInTable()
        {
            MemoryStream output;
            using (var input = AssemblyResourceHelper.GetResourceStream(this, "textintable.docx"))
            {
                output = new MemoryStream();
                var generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "data.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data);
            }

            var package = new DocxPackage(output);
            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
           // documentPart.Descendants(WordMl.ParagraphName).Remove();
            Console.WriteLine(documentPart.Descendants(WordMl.TableName).First());
            Assert.IsTrue(documentPart.Descendants(WordMl.TableRowName).All(element => element.Elements().All(el => el.Name != WordMl.ParagraphName)));

        }
Example #29
0
        public void GenerateSingleReaction(ReactionInfo reaction)
        {
            DocxGenerator docgen = new DocxGenerator();

            docgen.FilePath = reaction.SaveLocation;

            docgen.ReactionCode = reaction.Code;
            docgen.Chemist      = reaction.Chemist;
            docgen.Chiefchemist = reaction.Chiefchemist;
            docgen.ProjectName  = reaction.Project;
            docgen.Laboratory   = reaction.Laboratory;
            docgen.StartDate    = reaction.StartDate;
            docgen.ClosureDate  = reaction.ClosureDate;
            docgen.PreviousStep = reaction.PreviousStep;
            docgen.Literature   = reaction.Literature;

            docgen.ReactionImgPath = reaction.ReactionImgPath;

            docgen.StartingMaterial = new MoleculeRow
            {
                Name     = reaction.StartingMaterial.Name,
                CAS      = reaction.StartingMaterial.CAS,
                MWvalue  = reaction.StartingMaterial.MW,
                Ratio    = null,
                nvalue   = reaction.StartingMaterial.nValue,
                mvalue   = reaction.StartingMaterial.mValue,
                Vvalue   = reaction.StartingMaterial.VValue,
                Denvalue = reaction.StartingMaterial.Den,
                Bpvalue  = reaction.StartingMaterial.bpValue,
                Mpvalue  = reaction.StartingMaterial.mpValue
            };


            foreach (var item in reaction.Reagents)
            {
                docgen.AddReagent(new MoleculeRow
                {
                    Name     = item.Name,
                    CAS      = item.CAS,
                    MWvalue  = item.MW,
                    Ratio    = item.Ratio,
                    nvalue   = item.nValue,
                    mvalue   = item.mValue,
                    Vvalue   = item.VValue,
                    Denvalue = item.Den,
                    Bpvalue  = item.bpValue,
                    Mpvalue  = item.mpValue
                });
            }


            foreach (var item in reaction.Solvents)
            {
                docgen.AddSolvent(new MoleculeRow {
                    Name    = item.Name,
                    CAS     = item.CAS,
                    MWvalue = item.MW,

                    Vvalue   = item.VValue,
                    Denvalue = item.Den,
                    Bpvalue  = item.bpValue,
                    Mpvalue  = item.mpValue
                });
            }


            foreach (var item in reaction.Products)
            {
                docgen.AddProduct(new MoleculeRow {
                    MWvalue = item.MW,
                    Ratio   = item.Ratio,
                    nvalue  = item.nValue,
                    mvalue  = item.mValue
                });
            }



            if (reaction.IsSketch)
            {
                docgen.GenerateReport(true);
            }
            else
            {
                docgen.ProcedureText   = reaction.Procedure;
                docgen.Yield           = reaction.Yield;
                docgen.ObservationText = reaction.Observation;
                foreach (var item in reaction.ObservationImgPaths)
                {
                    docgen.ObservationImg.Add(item);
                }
                {
                }
                docgen.GenerateReport(false);
            }
        }
        public void TestActualGenerationDoubleRepeater()
        {
            MemoryStream output;
            using (var input = AssemblyResourceHelper.GetResourceStream(this, "DoubleRepeater.docx"))
            {
                output = new MemoryStream();
                var generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "data.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data);
            }

            var package = new DocxPackage(output);
            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
        }
        public void TestActualGenerationItemRepeaterNestedInOneParagraph()
        {
            MemoryStream output;
            using (var input = AssemblyResourceHelper.GetResourceStream(this, "ItemRepeaterNestedInOneParagraph.docx"))
            {
                output = new MemoryStream();
                var generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "ItemRepeaterNested2IRDemoData.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings() { MissingDataMode = MissingDataMode.ThrowException });
            }

            var package = new DocxPackage(output);
            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
            var firstRow =
                documentPart.Descendants(WordMl.TableRowName)
                       .First(tr => tr.Descendants().Any(el => el.Value == "Certificate 1"));
            Console.WriteLine(firstRow);            
            Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());            
            Assert.IsFalse(firstRow.Elements().Last(el => el.Name.Equals(WordMl.TableCellName)).Elements().Any(el => el.Name.Equals(WordMl.TextRunName)));
        }     
        private void InitializeStubbedExecution()
        {
            this.docxPackageMock = new Mock<DocxPackage>();
            this.docxPackageMock.Setup(p => p.Load()).Verifiable();
            this.docxPackageMock.Setup(p => p.Save()).Verifiable();

            this.docxPackagePartMock = new Mock<DocxPackagePart>();
            var document = new XDocument();
            this.root = document.Root;

            this.docxPackagePartMock.SetupGet(p => p.PartXml).Returns(document);
            this.docxPackagePartMock.Setup(p => p.Save()).Verifiable();

            var packageParts = new List<DocxPackagePart> { this.docxPackagePartMock.Object };
            this.docxPackageMock.SetupGet(x => x.Parts).Returns(packageParts);

            var packageFactoryMock = new Mock<IDocxPackageFactory>();
            packageFactoryMock.Setup(f => f.Create(It.IsAny<Stream>())).Returns(this.docxPackageMock.Object);

            this.processorMock = new Mock<AbstractProcessor>();
            this.processorMock.Setup(p => p.Process()).Verifiable();
            this.processorMock.SetupSet(processor => processor.DataReader = It.IsAny<DataReader>()).Verifiable();
            var processorFactoryMock = new Mock<IProcessorFactory>();
            processorFactoryMock.Setup(f => f.Create()).Returns(this.processorMock.Object);

            this.parserMock = new Mock<ITagParser>();
            var parserFactoryMock = new Mock<IParserFactory>();
            parserFactoryMock.Setup(f => f.Create()).Returns(this.parserMock.Object);

            this.stringDataReaderMock = new Mock<DataReader>();
            this.entityDataReaderMock = new Mock<DataReader>();
            this.documentDataReaderMock = new Mock<DataReader>();
            var dataReaderFactoryMock = new Mock<IDataReaderFactory>();
            dataReaderFactoryMock.Setup(f => f.CreateReader(It.IsAny<string>())).Returns(this.stringDataReaderMock.Object);
            dataReaderFactoryMock.Setup(f => f.CreateReader(It.IsAny<A>())).Returns(this.entityDataReaderMock.Object);
            dataReaderFactoryMock.Setup(f => f.CreateReader(It.IsAny<XDocument>())).Returns(this.documentDataReaderMock.Object);

            this.docxGenerator = new DocxGenerator
            {
                DataReaderFactory = dataReaderFactoryMock.Object,
                PackageFactory = packageFactoryMock.Object,
                ParserFactory = parserFactoryMock.Object,
                ProcessorFactory = processorFactoryMock.Object
            };

            this.templateStream = AssemblyResourceHelper.GetResourceStream(this, "DocxPackageTest.docx");
            this.outputStream = new MemoryStream();
        }