Esta pregunta se puede abordar de diversas maneras, por lo tanto te compartimos la que en nuestra opinión es la solución más completa.
Solución:
Uso iTextSharp para generar PDF dinámicos en MVC. Todo lo que necesita hacer es poner su PDF en un objeto Stream y luego su ActionResult devuelve un FileStreamResult. También configuro la disposición del contenido para que el usuario pueda descargarlo.
public FileStreamResult PDFGenerator() Stream fileStream = GeneratePDF(); HttpContext.Response.AddHeader("content-disposition", "attachment; filename=form.pdf"); return new FileStreamResult(fileStream, "application/pdf");
También tengo un código que me permite tomar una plantilla PDF, escribirle texto e imágenes, etc. (si quisieras hacer eso).
- Nota: debe establecer la posición de Stream en 0.
private Stream GeneratePDF() //create your pdf and put it into the stream... pdf variable below //comes from a class I use to write content to PDF files MemoryStream ms = new MemoryStream(); byte[] byteInfo = pdf.Output(); ms.Write(byteInfo, 0, byteInfo.Length); ms.Position = 0; return ms;
nuestra respuesta final a este problema fue usar Rotativa.
Envuelve WKhtmltopdf.exe como algunas de las otras soluciones, pero es, con mucho, la más fácil de usar que he encontrado.
Fui y voté todas las otras respuestas que también resuelven bien el problema, pero esto es lo que usamos para resolver el problema planteado en la pregunta anterior. Es diferente de las otras respuestas.
Aquí hay un tutorial de Rotativa.
después de instalarlo, esto es todo lo que necesita
public ActionResult PrintInvoice(int invoiceId)
return new ActionAsPdf(
"Invoice",
new invoiceId= invoiceId )
FileName = "Invoice.pdf" ;
Muy muy simple.
Crear un diseño en html e imprimirlo luego en pdf es la forma más rápida.
La conversión de HTML a PDF es proporcionada por phantomjs, wkhtmltopdf o jsreport
jsreport proporciona integración directa con las vistas de asp.net mvc, donde puede marcar la acción del controlador con attribute e imprimirá pdf en lugar de html para usted.
Más en esta publicación de blog
Descargo de responsabilidad: soy el autor de jsreport
Si crees que te ha sido de ayuda nuestro artículo, sería de mucha ayuda si lo compartieras con más entusiastas de la programación de esta forma nos ayudas a difundir este contenido.