public async Task <ActionResult> PdfWithXslt(String title = "Star Wars") { //Execute the Move Search to load data . . . //NOTE: This can come from any source, and can be from converted JSON or Xml, etc. //NOTE: As an interesting use case here, we load the results dynamically from a Movie Search // Database REST call for JSON results, and convert to Xml dynamically to use efficiently // with our templates. var movieSearchService = new MovieSearchService(); var searchResponse = await movieSearchService.SearchAsync(title); //Initialize the appropriate Renderer based on the Parameter. // and execute the Pdf Renderer to generate the Pdf Document byte data IPdfTemplatingRenderer <MovieSearchResponse> pdfTemplatingRenderer = new XsltMoviePdfRenderer(); var pdfBytes = pdfTemplatingRenderer.RenderPdf(searchResponse); //Create the File Content Result from the Pdf byte data var fileContent = new FileContentResult(pdfBytes, "application/pdf"); return(fileContent); }
public async Task <ActionResult> PdfWithXslt(String title = "Star Wars") { try { var searchResponse = await ExecuteMovieSearchHelperAsync(title); //******************************************* // XSLT + Fonet (synchronous; embedded code) //******************************************* var pdfRenderer = new XsltMoviePdfRenderer(); var pdfBytes = pdfRenderer.RenderPdf(searchResponse); //Create the File Content Result from the Pdf byte data return(new FileContentResult(pdfBytes, WebContentType.Pdf)); } catch (Exception exc) { //Bubble up the Error as Json for additional Details return(CreateJsonExceptionResult(exc)); } }
public async Task <ActionResult> PdfWithXsltAndApacheFOP(String title = "Star Wars") { try { var searchResponse = await ExecuteMovieSearchHelperAsync(title); //******************************************* // XSLT + Apache FOP (async I/O request) //******************************************* var pdfRenderer = new XsltMoviePdfRenderer(); var pdfBytes = await pdfRenderer.RenderPdfAsync(searchResponse).ConfigureAwait(false); //Create the File Content Result from the Pdf byte data return(new FileContentResult(pdfBytes, WebContentType.Pdf)); } catch (Exception exc) { //Bubble up the Error as Json for additional Details return(CreateJsonExceptionResult(exc)); } }