Generating PDf /Excel files using .Net without any third party pdf generators.

public async Task<JsonResult> CardStatusReportExport(ReportFilterInputModel cardStatusReportInputModel, string type, string sortOrder)
{
cardStatusReportInputModel.ReportType = Reprot_Type_Const.CardStatus;
cardStatusReportInputModel.ReportFormat = type;

var CardStatusReport = await _reportDocGeneration.DocGeneartion(cardStatusReportInputModel);
string result = Path.GetTempPath();
string fileName = "CardStatusReport" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
if (type.Equals(Constants.FILE_TYPE_PDF))
{
fileName = fileName + Constants.FILE_EXTENSION_PDF;
System.IO.File.WriteAllBytes(result + fileName, CardStatusReport);
}
else
{
fileName = fileName + Constants.FILE_EXTENSION_EXCEL;
System.IO.File.WriteAllBytes(result + fileName, CardStatusReport);
}
return Json(new { fileName = fileName});
}
[HttpGet]    
public async Task<ActionResult> Download(string file)
{
var path = Path.Combine(Path.GetTempPath(),file);
var memory = new MemoryStream();
try
{
using (var stream = new FileStream(path, FileMode.Open))
{
await stream.CopyToAsync(memory);
}
}
catch (Exception e)
{
ModelState.AddModelError("FileNotFoundError", e.Message);
return Content(e.Message);
}
memory.Position = 0;
return File(memory, GetContentType(path), Path.GetFileName(path));
}

private string GetContentType(string path)
{
var types = MediaType.GetMimeTypes();
var ext = Path.GetExtension(path).ToLowerInvariant();
return types[ext];
}
$('#print').click(function ()
{
$.ajax({
method: 'POST',
data: { type: val, cardStatusReportInputModel: payload, sortOrder : sortOrder},
url: '@Url.Action("CardStatusReportExport", "Reports")'
}).done(function (data, statusText, xhdr) {
try {
if (data.fileName != "") {
window.location.href = "@Url.RouteUrl(new { Controller = "Reports", Action = "Download"})/?file=" + data.fileName;
ShowMessageAlert('@Html.Raw(Localizer["Report has been exported successfully"].Value.ToString())');
}
$("#divLoader").hide();
}
catch (e) {
$("#divLoader").hide();
}
}).fail(function (xhdr, statusText, errorText) {
alert('error');
$("#divLoader").hide();
});
});

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Praveen Sambu

Praveen Sambu

Software Engineer |AWS Community Builder |Technical Blogger | Trainer . Founder of Cloud In Detail (https://cloudindetail.com/) still working on building blog…