using System.Collections.Generic; using System.Data; using System.IO; using System.Web.Mvc; using FastReport; using Kreta.BusinessLogic.Classes; using Kreta.Core; using Kreta.Web.Controllers; namespace Kreta.Web.Areas.Tanulo.Helper { public static class BelepesiAdatokPdfLogic { public static string GetFileLetoltesUrl(DataSet belepesDataSet, string frxNev, string fileName) { var stream = PdfNyomtatas(belepesDataSet, frxNev, pdfNeve: fileName); var guid = Cache.Add(stream); var fileFullName = $"{fileName}.pdf"; var url = new UrlHelper(System.Web.HttpContext.Current.Request.RequestContext); return url.Action(nameof(CacheController.DownloadFile), nameof(CacheController).Replace("Controller", ""), new { guid, fileName = fileFullName, contentType = Core.Constants.ContentTypes.Pdf, area = "" }); } /// Nyomtatványokhoz Pdf fájl generálás private static MemoryStream PdfNyomtatas(DataSet ds, string frxNeve, Dictionary parameterek = null, string pdfNeve = "Alap") { FastReport.Utils.Config.WebMode = true; var report = new Report(); report.Load(System.Web.Hosting.HostingEnvironment.MapPath((ApplicationData.NyomtatasiSablonokKonyvtar + "/" + frxNeve + ".frx"))); foreach (DataTable dt in ds.Tables) { report.RegisterData(dt, dt.TableName); } if (parameterek != null) { foreach (var parameter in parameterek) { report.SetParameterValue(parameter.Key, parameter.Value); } } if (report.Report.Prepare()) { FastReport.Export.Pdf.PDFExport pdfExport = new FastReport.Export.Pdf.PDFExport { ShowProgress = false, Subject = "Subject", Title = pdfNeve, Compressed = true, AllowPrint = true, EmbeddingFonts = true }; var stream = new MemoryStream(); report.Report.Export(pdfExport, stream); report.Dispose(); pdfExport.Dispose(); stream.Position = 0; return stream; } return null; } } }