public IActionResult OnGet([Required, FromQuery] long buildingId)
        {
            var building = _context.Buildings.Find(buildingId);

            if (building == null)
            {
                return(BadRequest());
            }

            var templateDoc = new Document("Model-Cerere.doc");
            var finalDoc    = new DocumentDataSource
            {
                AuthorName = building.Owner,
                Area       = building.ComputeArea(),
                Perimeter  = building.ComputePerimeter(),
            };
            var engine = new ReportingEngine();

            engine.BuildReport(templateDoc, finalDoc, "finalDoc");

            var stream = new MemoryStream();

            templateDoc.Save(stream, SaveFormat.Docx);
            var bytes    = stream.ToArray();
            var mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
            var fileName = "Cerere.docx";

            return(File(bytes, mimeType, fileName));
        }
示例#2
0
        private void AddDocumentDataSourceButton_Click(object sender, EventArgs e)
        {
            var dataSourceObject = new DataSourceObject();

            DataSources.Add(dataSourceObject);

            var documentDataSource = new DocumentDataSource();

            dataSourceObject.DataSource        = documentDataSource;
            documentDataSource.ObjectInspector = ObjectInspector;
            GridViewDataSources.RefreshData();
        }
示例#3
0
        internal byte[] Merge(List <Byte[]> documentsToAppend = null)
        {
            DocumentDataSource dds = new DocumentDataSource();

            dds.StartingToken = "«";
            dds.EndingToken   = "»";

            foreach (var placeHolder in this.MergeTemplate.MergePair)
            {
                dds[placeHolder.PlaceHolder] = placeHolder.Value;
            }

            dds["ff0000"] = new ColoredDataItem {
                Action = ColorAction.Remove
            };

            foreach (var color in this.MergeTemplate.RemoveColor)
            {
                dds[color] = new ColoredDataItem {
                    Action = ColorAction.Remove
                };
            }
            foreach (var color in this.MergeTemplate.LeaveAndRemoveColor)
            {
                dds[color] = new ColoredDataItem {
                    Action = ColorAction.LeaveAndRemoveColor
                };
            }
            using (MemoryStream tempStream = new MemoryStream())
            {
                using (var ms = new MemoryStream())
                {
                    MergeTemplate.InputFile.CopyTo(ms);
                    var processedStream = DocumentRenderer.ProcessDocument(ms, dds);
                    if (documentsToAppend != null)
                    {
                        Aspose.Words.Document document = new Document(processedStream);
                        foreach (var docToAppend in documentsToAppend)
                        {
                            Aspose.Words.Document newDoc = new Document(new MemoryStream(docToAppend));
                            document.AppendDocument(newDoc, ImportFormatMode.KeepSourceFormatting);
                        }
                        document.Save(tempStream, SaveFormat.Docx);
                    }
                    else
                    {
                        processedStream.CopyTo(tempStream);
                    }
                }

                return(tempStream.ToArray());
            }
        }
        public void InsertDocumentDinamically()
        {
            // By stream
            Document template = DocumentHelper.CreateSimpleDocument("<<doc [src.DocumentByStream]>>");

            DocumentDataSource docStream = new DocumentDataSource(new FileStream(this._doc, FileMode.Open, FileAccess.Read));

            BuildReport(template, docStream, "src", ReportBuildOptions.None);
            template.Save(MyDir + @"\Artifacts\ReportingEngine.InsertDocumentDinamically.docx");

            Assert.IsTrue(DocumentHelper.CompareDocs(MyDir + @"\Artifacts\ReportingEngine.InsertDocumentDinamically.docx", MyDir + @"\Golds\ReportingEngine.InsertDocumentDinamically(stream,doc,bytes) Gold.docx"), "Fail inserting document by stream");

            // By doc
            template = DocumentHelper.CreateSimpleDocument("<<doc [src.Document]>>");

            DocumentDataSource docByDoc = new DocumentDataSource(new Document(MyDir + "ReportingEngine.TestDataTable.docx"));

            BuildReport(template, docByDoc, "src", ReportBuildOptions.None);
            template.Save(MyDir + @"\Artifacts\ReportingEngine.InsertDocumentDinamically.docx");

            Assert.IsTrue(DocumentHelper.CompareDocs(MyDir + @"\Artifacts\ReportingEngine.InsertDocumentDinamically.docx", MyDir + @"\Golds\ReportingEngine.InsertDocumentDinamically(stream,doc,bytes) Gold.docx"), "Fail inserting document by document");

            // By uri
            template = DocumentHelper.CreateSimpleDocument("<<doc [src.DocumentByUri]>>");

            DocumentDataSource docByUri = new DocumentDataSource("http://www.sample-videos.com/doc/Sample-doc-file-100kb.doc");

            BuildReport(template, docByUri, "src", ReportBuildOptions.None);
            template.Save(MyDir + @"\Artifacts\ReportingEngine.InsertDocumentDinamically.docx");

            Assert.IsTrue(DocumentHelper.CompareDocs(MyDir + @"\Artifacts\ReportingEngine.InsertDocumentDinamically.docx", MyDir + @"\Golds\ReportingEngine.InsertDocumentDinamically(uri) Gold.docx"), "Fail inserting document by uri");

            // By byte
            template = DocumentHelper.CreateSimpleDocument("<<doc [src.DocumentByByte]>>");

            DocumentDataSource docByByte = new DocumentDataSource(File.ReadAllBytes(MyDir + "ReportingEngine.TestDataTable.docx"));

            BuildReport(template, docByByte, "src", ReportBuildOptions.None);
            template.Save(MyDir + @"\Artifacts\ReportingEngine.InsertDocumentDinamically.docx");

            Assert.IsTrue(DocumentHelper.CompareDocs(MyDir + @"\Artifacts\ReportingEngine.InsertDocumentDinamically.docx", MyDir + @"\Golds\ReportingEngine.InsertDocumentDinamically(stream,doc,bytes) Gold.docx"), "Fail inserting document by bytes");
        }
示例#5
0
 public void ProcessJson(dynamic dataSources)
 {
     DataSources.Clear();
     foreach (var source in dataSources)
     {
         var dataSourceObject = new DataSourceObject();
         if (source.DocumentDataSource != null)
         {
             var documentDataSource = new DocumentDataSource();
             documentDataSource.ObjectInspector = ObjectInspector;
             documentDataSource.LoadProperties(source.DocumentDataSource);
             dataSourceObject.DataSource = documentDataSource;
         }
         else if (source.ObjectDataSource != null)
         {
             var objectDataSource = new ObjectDataSource();
             objectDataSource.ObjectInspector = ObjectInspector;
             objectDataSource.LoadProperties(source.ObjectDataSource);
             dataSourceObject.DataSource = objectDataSource;
         }
         DataSources.Add(dataSourceObject);
     }
     GridViewDataSources.RefreshData();
 }