2013-08-07 5 views
2

Как можно экспортировать pdf с использованием FastReport.net и asp.net? Я хотел бы экспортировать файл в контроллер. Я пробовал этот способ опирающуюся на FastReport Веб-сайт:Экспорт pdf с использованием FastReport.net и asp.net

public FileResult GetFile() 
     { 
      WebReport webReport = new WebReport(); 

      // bind data 
      System.Data.DataSet dataSet = new System.Data.DataSet(); 
      dataSet.ReadXml(report_path + "nwind.xml"); 
      webReport.Report.RegisterData(dataSet, "NorthWind"); 

      // load report 
      webReport.ReportFile = this.Server.MapPath("~/App_Data/report.frx"); 

      // prepare report 
      webReport.Report.Prepare(); 

      // save file in stream 
      Stream stream = new MemoryStream(); 
      webReport.Report.Export(new PDFExport(), stream); 
      stream.Position = 0; 

      // return stream in browser 
      return File(stream, "application/zip", "report.pdf"); 
     } 

, но тогда размер pdf всегда 0 байт.

Кто-нибудь знает решение моей проблемы?

ответ

5

Хорошо, теперь я нашел решение. Просто используйте обычный Report (не WebReport) и установите WebMode на true. Другие настройки в pdf-Export предназначены только для развлечения.

Таким образом, это будет делать трюк:

public FileResult GetFile(Dataset dataset1) 
{ 
    FastReport.Utils.Config.WebMode = true; 
    Report rep = new Report(); 
    rep.Load(Request.PhysicalApplicationPath + "App_Data/report.frx");  

    rep.RegisterData(dataset1); 

    if (rep.Report.Prepare()) 
    { 
     // Set PDF export props 
     FastReport.Export.Pdf.PDFExport pdfExport = new FastReport.Export.Pdf.PDFExport(); 
     pdfExport.ShowProgress = false; 
     pdfExport.Subject = "Subject"; 
     pdfExport.Title = "xxxxxxx"; 
     pdfExport.Compressed = true; 
     pdfExport.AllowPrint = true; 
     pdfExport.EmbeddingFonts = true; 

     MemoryStream strm = new MemoryStream(); 
     rep.Report.Export(pdfExport, strm); 
     rep.Dispose(); 
     pdfExport.Dispose(); 
     strm.Position = 0; 

     // return stream in browser 
     return File(strm, "application/pdf", "report.pdf"); 
    } 
    else 
    { 
     return null; 
    } 
} 

Жалко, что такие шаблоны кода неправы на официальном сайте разработчика.

0

Работы для меня в 2017.1

public void GetFile() 
    { 
     SetReport(); 
     webReport.ExportPdf(); 
    } 

    public void GetPrint() 
    { 
     SetReport(); 
     webReport.Prepare(); 
     webReport.PrintPdf(); 
    } 
Смежные вопросы