Quiero generar un PDF pasando contenido HTML a una función. He hecho uso de iTextSharp para esto, pero no funciona bien cuando encuentra tablas y el diseño simplemente se vuelve desordenado.
¿Hay una mejor manera?
c#
html
pdf
itextsharp
Amedee Van Gasse
fuente
fuente
Respuestas:
EDITAR: Nueva sugerencia Renderer HTML para PDF usando PdfSharp
(Después de probar wkhtmltopdf y sugerir evitarlo)
HtmlRenderer.PdfSharp es un código 100% totalmente administrado en C # , fácil de usar, seguro para subprocesos y, lo que es más importante, GRATIS ( Nueva licencia BSD ) .
Uso
Utilice el método de ejemplo.
Una alternativa muy buena es una versión gratuita de iTextSharp
Hasta la versión 4.1.6, iTextSharp tenía licencia bajo la licencia LGPL y las versiones hasta 4.16 (o también puede haber tenedores) están disponibles como paquetes y se pueden usar libremente. Por supuesto, alguien puede usar la versión paga de 5+ .
Traté de integrar soluciones wkhtmltopdf en mi proyecto y tuve un montón de obstáculos.
Yo personalmente evitaría usar soluciones basadas en wkhtmltopdf en aplicaciones Hosted Enterprise por las siguientes razones.
--- PRE Editar sección ---
Para cualquiera que quiera generar pdf desde html en aplicaciones / entornos más simples, dejo mi antigua publicación como sugerencia.
Martes
https://www.nuget.org/packages/TuesPechkin/
o especialmente para aplicaciones web MVC (pero creo que puede usarlo en cualquier aplicación .net)
Rotativa
https://www.nuget.org/packages/Rotativa/
Ambos utilizan el binario wkhtmtopdf para convertir html a pdf. Que utiliza el motor de webkit para representar las páginas para que también pueda analizar hojas de estilo CSS .
Proporcionan una integración perfecta y fácil de usar con C #.
Rotativa también puede generar archivos PDF directamente desde cualquier Vista Razor .
Además, para aplicaciones web del mundo real, también gestionan la seguridad de subprocesos, etc.
fuente
Actualización: ahora recomendaría PupeteerSharp sobre wkhtmltopdf.
Prueba wkhtmtopdf . Es la mejor herramienta que he encontrado hasta ahora.
Para .NET, puede usar esta pequeña biblioteca para invocar fácilmente la utilidad de línea de comandos wkhtmtopdf.
fuente
Recientemente realicé un PoC con respecto a la conversión de HTML a PDF y quería compartir mis resultados.
Mi favorito con diferencia es OpenHtmlToPdf
Ventajas de esta herramienta:
Otras herramientas probadas:
fuente
using IronPdf; IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf(); // Render an HTML document or snippet as a string Renderer.RenderHtmlAsPdf("<h1>Hello World</h1>").SaveAs("html-string.pdf");
background-color
. OpenHtmlToPdf funciona perfectamente de forma gratuita.Última actualización: marzo de 2020
Esta es la lista de opciones para la conversión de HTML a PDF en .NET que he reunido (algunas gratuitas y otras pagas)
GemBox.Document
PDF Metamorfosis .Net
HtmlRenderer.PdfSharp
TitiriteroSharp
EO.pdf
WnvHtmlToPdf_x64
IronPdf
Spire.PDF
Spire.PDF gratuito para .NET (versión comunitaria)
Aspose.Html
EvoPDF
ExpertPdfHtmlToPdf
Zetpdf
PDFtron
WkHtmlToXSharp
Seleccione PDF
Si ninguna de las opciones anteriores le ayuda, siempre puede buscar los paquetes NuGet https://www.nuget.org/packages?q=html+pdf
fuente
La mayoría del convertidor de HTML a PDF se basa en IE para realizar el análisis y la representación de HTML. Esto puede romperse cuando el usuario actualiza su IE. aquí hay uno que no depende de IE.
El código es algo como esto:
Al igual que muchos otros convertidores, puede pasar texto, nombre de archivo o URL. El resultado se puede guardar en un archivo o una secuencia.
fuente
Recomiendo mucho a NReco , en serio. Tiene la versión gratuita y de pago, y realmente vale la pena. Utiliza wkhtmtopdf en segundo plano, pero solo necesita un ensamblaje. Fantástico.
Ejemplo de uso:
Instalar a través de NuGet .
Descargo de responsabilidad: no soy el desarrollador, solo un fanático del proyecto :)
fuente
Winnovative ofrece una biblioteca .Net PDF que admite entrada HTML. Ofrecen una prueba gratuita ilimitada . Dependiendo de cómo desee implementar su proyecto, esto podría ser suficiente.
fuente
Essential PDF se puede utilizar para convertir HTML a PDF : muestra de C # . El ejemplo vinculado aquí está basado en ASP.NET, pero la biblioteca se puede usar desde Windows Forms, WPF, ASP.NET Webforms y ASP.NET MVC. La biblioteca ofrece la opción de usar diferentes motores de renderizado HTML: Internet Explorer (predeterminado) y WebKit (mejor salida).
Todo el conjunto de controles está disponible de forma gratuita (aplicaciones comerciales también) a través del programa de licencia comunitaria si califica. La licencia comunitaria es el producto completo sin limitaciones ni marcas de agua.
Nota: Trabajo para Syncfusion.
fuente
Si realmente no necesita una verdadera biblioteca .Net PDF, existen numerosas herramientas gratuitas de HTML a PDF , muchas de las cuales pueden ejecutarse desde una línea de comandos.
Una solución sería elegir uno de esos y luego escribir un envoltorio delgado alrededor de eso en C #. Por ejemplo, como se hizo en este tutorial .
fuente
Utilicé ExpertPDF Html To Pdf Converter . Hace un trabajo decente. Desafortunadamente, no es gratis.
fuente
También hay una nueva aplicación de generación de documentos basada en la web: DocRaptor.com . Parece fácil de usar, y hay una opción gratuita.
fuente
¡Actualización de 2018, y usemos la ecuación estándar HTML + CSS = PDF!
Hay buenas noticias para las demandas de HTML a PDF. Como mostró esta respuesta , el estándar css-break-3 del W3C resolverá el problema ... Es una recomendación de candidato con un plan para convertirse en una recomendación definitiva en 2017 o 2018, después de las pruebas.
Como no es tan estándar, hay soluciones, con complementos para C #, como se muestra en print-css.rocks .
fuente
Puede usar la función de impresión a PDF de Google Chrome desde su modo sin cabeza. Encontré que este es el método más simple pero más robusto.
fuente
ABCpdf.NET (http://www.websupergoo.com/abcpdf-5.htm)
Usamos y recomendamos.
Muy buen componente, no solo convierte una página web a PDF como una imagen, sino que realmente convierte texto, imagen, formato, etc.
No es gratis pero es barato.
fuente
Soy el autor del paquete Rotativa. Permite crear archivos PDF directamente desde las vistas de afeitar:
https://www.nuget.org/packages/Rotativa/
Trivial de usar y tiene control total sobre el diseño, ya que puede usar vistas de afeitar con datos de su modelo y contenedor de ViewBag.
Desarrollé una versión de SaaS en Azure. Hace que sea aún más fácil usarlo desde WebApi o cualquier aplicación .Net, servicio, sitio web de Azure, Azure webjob, lo que sea que ejecute .Net.
http://www.rotativahq.com/
Cuentas gratuitas disponibles.
fuente
A continuación se muestra un ejemplo de conversión de html + css a PDF con iTextSharp (iTextSharp + itextsharp.xmlworker)
fuente
Depende de cualquier otro requisito que tenga.
Una solución realmente simple pero no fácil de implementar es usar un control WebBrowser para cargar el HTML y luego usar el método de impresión de impresión en una impresora PDF instalada localmente. Hay varias impresoras PDF gratuitas disponibles y el control WebBrowser es parte del marco .Net.
EDITAR: si su Html es XHtml, puede usar PDFizer para hacer el trabajo.
fuente
PDF Vision es bueno. Sin embargo, debe tener plena confianza para usarlo. Ya envié un correo electrónico y pregunté por qué mi HTML no se convertía en el servidor, pero funcionó bien en localhost.
fuente
Encontré la siguiente biblioteca más efectiva para convertir html a pdf.
nuget : https://www.nuget.org/packages/Select.HtmlToPdf/
fuente
También estaba buscando esto hace un tiempo. Me encontré con HTMLDOC http://www.easysw.com/htmldoc/ que es una aplicación de línea de comandos de código abierto que toma un archivo HTML como argumento y escupe un PDF. Me funcionó bastante bien para mi proyecto paralelo, pero todo depende de lo que realmente necesites.
La compañía que lo hace vende los archivos binarios compilados, pero puede descargarlos y compilarlos desde la fuente y usarlos de forma gratuita. Logré compilar una revisión bastante reciente (para la versión 1.9) y tengo la intención de lanzar un instalador binario en unos días, por lo que si está interesado, puedo proporcionarle un enlace tan pronto como lo publique.
Editar (25/02/2014): Parece que los documentos y el sitio se trasladaron a http://www.msweet.org/projects.php?Z1
fuente
Debe usar una biblioteca comercial si necesita una representación html perfecta en pdf.
ExpertPdf Html To Pdf Converter es muy fácil de usar y es compatible con el último html5 / css3. Puede convertir una url completa a pdf:
o una cadena html:
También tiene la alternativa de guardar directamente el documento pdf generado en una secuencia de archivo en el disco.
fuente
Esta es una biblioteca gratuita y funciona muy fácilmente: OpenHtmlToPdf
fuente
Parece que hasta ahora la mejor solución gratuita de .NET es la biblioteca TuesPechkin , que es un envoltorio alrededor del wkhtmltopdf biblioteca nativa .
Ahora he usado la versión de un solo subproceso para convertir unos pocos miles de cadenas HTML a archivos PDF y parece funcionar muy bien. Se supone que también funciona en entornos de subprocesos múltiples (IIS, por ejemplo), pero no lo he probado.
Además, dado que quería usar la última versión de wkhtmltopdf (0.12.5 en el momento de la escritura), descargué el archivo DLL del sitio web oficial, lo copié en la raíz de mi proyecto, configuré la copia para que salga a verdadero e inicialicé la biblioteca como entonces:
El código anterior buscará exactamente "wkhtmltox.dll", así que no cambie el nombre del archivo. Usé la versión de 64 bits de la DLL.
Asegúrese de leer las instrucciones para entornos de subprocesos múltiples, ya que tendrá que inicializarlo solo una vez por ciclo de vida de la aplicación, por lo que deberá colocarlo en un singleton o algo.
fuente
Aquí hay una envoltura para wkhtmltopdf.dll por pruiz
Y un contenedor para wkhtmltopdf.exe por Codaxy
, también en nuget .
fuente
No tests are run because no tests are loaded or the selected tests are disabled
googlear no ayuda tampocoPhantomJS es la mejor herramienta que he encontrado y utilizado para generar PDF de javascript y estilos vistas vistas o páginas html .
Descargue el archivo .exe con la función rasterize.js que se encuentra en la raíz del exe de la carpeta de ejemplo y coloque la solución interna.
Incluso le permite descargar el archivo en cualquier código sin abrir ese archivo y también le permite descargar el archivo cuando se aplican los estilos y especialmente jquery.
El siguiente código genera un archivo PDF:
fuente
También puede verificar Spire , que le permite crear
HTML to PDF
con este simple códigoArtículo detallado: Cómo convertir HTML a PDF en asp.net C #
fuente
Como representante del software HiQPdf, creo que la mejor solución es el convertidor HiQPdf HTML a PDF para .NET . Contiene el motor de renderizado HTML5, CSS3, SVG y JavaScript más avanzado del mercado. También hay una versión gratuita de la biblioteca HTML a PDF que puede utilizar para producir de forma gratuita hasta 3 páginas PDF. El código mínimo de C # para producir un PDF como byte [] desde una página HTML es:
Puede encontrar ejemplos más detallados para ASP.NET y MVC en el repositorio de ejemplos de convertidor HTML a PDF de HiQPdf .
fuente
Es muy probable que la mayoría de los proyectos incluyan un motor C / C ++ en lugar de implementar una solución C # desde cero. Prueba el Proyecto Gotenberg .
Para probarlo
Ejemplo de rizo
C # sample.cs
Compilar
fuente
Pruebe este componente de conversión de PDF Duo .Net para convertir HTML a PDF desde ASP.NET aplicación sin usar dlls adicionales.
Puede pasar la cadena o archivo HTML, o transmitir para generar el PDF. Use el código a continuación (Ejemplo C #):
Puede encontrar ejemplos de Info + C # / VB en: http://www.duodimension.com/html_pdf_asp.net/component_html_pdf.aspx
fuente
Para convertir HTML a PDF en C #, use ABCpdf .
ABCpdf puede hacer uso de los motores de renderizado Gecko o Trident, por lo que su tabla HTML tendrá el mismo aspecto que aparece en Firefox e Internet Explorer.
Hay una demostración en línea de ABCpdf en www.abcpdfeditor.com. Puede usar esto para ver cómo se procesarán sus tablas primero, sin necesidad de descargar e instalar software.
Para representar páginas web completas, necesitará las funciones AddImageUrl o AddImageHtml. Pero si todo lo que quiere hacer es simplemente agregar texto con estilo HTML, entonces puede probar la función AddHtml, como se muestra a continuación:
ABCpdf es un título de software comercial, sin embargo, la edición estándar a menudo se puede obtener de forma gratuita bajo una oferta especial.
fuente
However, you must disclose your affiliation with the product in your answers. Also, if a huge percentage of your posts include a mention of your product, you're clearly here for the wrong reasons.
Todas sus respuestas han sido sobre ABCpdf