Wie zum download memoryStream-Datei

ich bin Anfänger in der asp.net erstelle ich die pdf-Datei mit PdfRpt. Schreibe ich diesen code in der Klasse

namespace PdfReportSamples.CustomPriceNumber
{
    public class CustomPriceNumberPdfReport
    {
        public IPdfReportData CreatePdfReport()
        {
            using (var memoryStream = new MemoryStream())
            {
                var ii= new PdfReport().DocumentPreferences(doc =>
                {
                    doc.RunDirection(PdfRunDirection.LeftToRight);
                    doc.Orientation(PageOrientation.Portrait);
                    doc.PageSize(PdfPageSize.A4);
                    doc.DocumentMetadata(new DocumentMetadata { Author = "Vahid", Application = "PdfRpt", Keywords = "Test", Subject = "Test Rpt", Title = "Test" });
                })
           .DefaultFonts(fonts =>
           {
               fonts.Path(Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\arial.ttf",
                                 Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\verdana.ttf");
           })
           .PagesFooter(footer =>
           {
               footer.DefaultFooter(DateTime.Now.ToString("MM/dd/yyyy"));
           })
           .PagesHeader(header =>
           {
               header.DefaultHeader(defaultHeader =>
               {
                   defaultHeader.RunDirection(PdfRunDirection.LeftToRight);

               });
           })
           .MainTableTemplate(template =>
           {
               template.BasicTemplate(BasicTemplate.SilverTemplate);
           })
           .MainTablePreferences(table =>
           {
               table.ColumnsWidthsType(TableColumnWidthType.Relative);
           })
           .MainTableDataSource(dataSource =>
           {
               var listOfRows = new List<Transaction>();
               for (int i = 0; i < 200; i++)
               {
                   listOfRows.Add(new Transaction
                   {
                       Product = "Item " + i,
                       Description = "Desc. " + i,
                       SalePrice = 1000 * i
                   });
               }
               dataSource.StronglyTypedList(listOfRows);
           })

           .MainTableColumns(columns =>
           {
               columns.AddColumn(column =>
               {
                   column.PropertyName("rowNo");
                   column.IsRowNumber(true);
                   column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                   column.IsVisible(true);
                   column.Order(0);
                   column.Width(1);
                   column.HeaderCell("#");
               });

               columns.AddColumn(column =>
               {
                   column.PropertyName<Transaction>(x => x.Product);
                   column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                   column.IsVisible(true);
                   column.Order(1);
                   column.Width(2);
                   column.HeaderCell("Product");
               });

               columns.AddColumn(column =>
               {
                   column.PropertyName<Transaction>(x => x.Description);
                   column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                   column.IsVisible(true);
                   column.Order(2);
                   column.Width(3);
                   column.HeaderCell("Description");
               });

               columns.AddColumn(column =>
               {
                   column.PropertyName<Transaction>(x => x.SalePrice);
                   column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                   column.IsVisible(true);
                   column.Order(3);
                   column.Width(3);
                   column.HeaderCell("Sale Price");
                   column.ColumnItemsTemplate(template =>
                   {
                       template.CustomTemplate(new CustomPriceCell());
                   });
                   column.AggregateFunction(aggregateFunction =>
                   {
                       aggregateFunction.NumericAggregateFunction(AggregateFunction.Sum);
                       aggregateFunction.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n0}", obj));
                   });
               });

           })
           .MainTableEvents(events =>
           {
               events.DataSourceIsEmpty(message: "There is no data available to display.");
           })
           .Export(export =>
           {
               export.ToExcel();
           })
           .Generate(data => data.AsPdfStream(memoryStream));


       }


        }
    }
}

ich Will, wenn Benutzer klicken Sie auf Schaltfläche senden Sie diese Datei (in memoryStream ) zum download. aber ich weiß nicht, wie dieser code zu schreiben. bitte helfen Sie mir. Dank expert

Es ist wirklich unklar, was meinen Sie mit "diese Datei schicken (in memoryStream ) zum download". Sie erstellen eine MemoryStream, aber dann völlig ignoriert, weil Sie der Rückkehr sofort von der Methode. Es sieht aus wie der code die Erstellung des Berichts sollte nicht werden serialisiert - es sollte einfach nur wieder den Bericht an den aufrufenden code, die können Sie dann speichern Sie Sie in einen stream. Leider haben wir nicht genug Kontext, um zu helfen, viel mehr als das.
Jon Skeet: zuerst erstelle ich eine pdf-Datei MemoryStream, Beispiel ich lege button in die form , ich will, wenn Benutzer klicken Sie auf die Schaltfläche diese Datei herunterladen.
Rechts, so wie ich vorgeschlagen haben, die Sie benötigen, zu trennen, "die Erstellung und Rücksendung der Bericht" von "schreiben, um ein Speicher-stream". Die Art und Weise, die Sie haben, setzen Sie zusammen, im moment bedeutet, dass die Speicher-stream erstellt im code, die nicht wollen, es zu benutzen.

InformationsquelleAutor Pouya | 2012-11-20

Schreibe einen Kommentar