/// <summary> /// Basic export function to generate PDF from one element /// </summary> /// <param name="toExport">element to export</param> /// <returns>A PDF Document</returns> public PdfDocument Export(Competentie toExport) { Document prePdf = new Document(); //Document markup DefineStyles(prePdf); BuildCover(prePdf, "Competentie: " + toExport.Naam); //Here starts the real exporting Section sect = prePdf.AddSection(); CompetentieExportArguments opt = new CompetentieExportArguments() { ExportAll = true }; CompetentieExporterFactory cef = new CompetentieExporterFactory(); competentieExporterStrategy = cef.GetStrategy(opt); try { sect = competentieExporterStrategy.Export(toExport, sect); } catch (Exception e) { sect.AddParagraph("An error has occured while invoking an export-function on Competentie: " + toExport.Naam + "\n" + e.Message, "error"); } PdfDocumentRenderer rend = new PdfDocumentRenderer(false, PdfFontEmbedding.Always); rend.Document = prePdf; rend.RenderDocument(); return(rend.PdfDocument); }
public void TestMultiCompetentiePdfOutput() { CompetentieExportArguments args = new CompetentieExportArguments() { ExportAll = true }; CompetentieExportablePack pack = new CompetentieExportablePack(args, data); PdfDocument pdf = ces.ExportAll(pack); pdf.Save("D:\\Education\\Proj_blk6\\TestIO\\cp_pdf_FULL.pdf"); }
/// <summary> /// Get a decorator pattern based on given options /// </summary> /// <param name="opt">Pre-defined options</param> /// <returns>Decorator pattern for exporting</returns> public IExporter <DomainDAL.Competentie> GetStrategy(CompetentieExportArguments opt) { //make sure you keep the ExportOptions in Sync with the Stack. That way, you can just use ifs here. IExporter <DomainDAL.Competentie> strategy = new CompetentiePassiveExporter(); opt.ExportNaam = true; //Always Needed, table of contents is filled with this Type[] typeArgs = { typeof(IExporter <DomainDAL.Competentie>) }; if (opt.ExportAll || opt.ExportNaam) { Type t = usableTypes["CompetentieNaamExporter"]; var ctor = t.GetConstructor(typeArgs); if (ctor != null) { object[] parameters = { strategy }; strategy = ctor.Invoke(parameters) as IExporter <DomainDAL.Competentie>; } } if (opt.ExportAll || opt.ExportCode) { Type t = usableTypes["CompetentieCodeExporter"]; var ctor = t.GetConstructor(typeArgs); if (ctor != null) { object[] parameters = { strategy }; strategy = ctor.Invoke(parameters) as IExporter <DomainDAL.Competentie>; } } if (opt.ExportAll || opt.ExportBeschrijving) { Type t = usableTypes["CompetentieBeschrijvingExporter"]; var ctor = t.GetConstructor(typeArgs); if (ctor != null) { object[] parameters = { strategy }; strategy = ctor.Invoke(parameters) as IExporter <DomainDAL.Competentie>; } } //This won't happen. But hey, risky things an' all. if (strategy == null) { strategy = new CompetentiePassiveExporter(); } return(strategy); }
public FileStreamResult GetCompetentiesExport() { CompetentieExportArguments args = new CompetentieExportArguments() { ExportAll = true }; var data = _unitOfWork.GetRepository <Competentie>().GetAll(); var maxSchooljaar = _unitOfWork.GetRepository <Schooljaar>().GetAll().Max(src => src.JaarId); var lastYearData = (from element in data where element.Schooljaar.Equals(maxSchooljaar) select element).ToList(); IExportablePack <Competentie> pack = new CompetentieExportablePack(args, lastYearData); Stream fStream = _competentieExporterService.ExportAllAsStream(pack); HttpContext.Response.AddHeader("content-disposition", "attachment; filename=Competenties.pdf"); return(new FileStreamResult(fStream, "application/pdf")); }