The API mentioned in my first tutorial got taken down and so I had to do some updates. First, choose another 3rd party API. I currently am trying out HTML 2 PDF Rocket and modified my code a bit:
[HttpGet] public async Task<FileStreamResult> PrintAsync(int id) { InvoiceVM invoiceVM = new InvoiceVM(); invoiceVM = invoiceRepository.Get(id); var engine = new RazorLightEngineBuilder() .UseFilesystemProject(_hostingEnvironment.WebRootPath + "\\pdf\\") .UseMemoryCachingProvider() .Build(); var view = await engine.CompileRenderAsync("PDF.cshtml", invoiceVM); string apiKey = "xxxxxxxxxxxxxxxxxxxx"; using (var client = new WebClient()) { // Build the conversion options NameValueCollection options = new NameValueCollection(); options.Add("apikey", apiKey); options.Add("value", view); options.Add("MarginLeft", "10"); options.Add("MarginRight", "10"); options.Add("MarginTop", "10"); options.Add("MarginBottom", "10"); options.Add("PageSize", "Letter"); MemoryStream ms = new MemoryStream(client.UploadValues("http://api.html2pdfrocket.com/pdf", options)); return new FileStreamResult(ms, "application/pdf"); } }
This is based directly off the HTML 2 Rocket documentation. For the rest of the code see the first tutorial.