kreta/KretaWeb/Areas/Tanulo/Helper/BelepesiAdatokPdfLogic.cs
2024-03-13 00:33:46 +01:00

70 lines
2.4 KiB
C#

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<string, object> 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;
}
}
}