Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
Generar documentos PDF es un requisito común y crucial en el desarrollo moderno de C# .NET, ya sea para facturación, creación de informes detallados, archivado de contenido web o para asegurar el intercambio seguro de documentos. Los desarrolladores a menudo exploran varios métodos para generar PDFs en aplicaciones .NET, incluyendo el uso de bibliotecas conocidas como iTextSharp (ahora iText 7), PdfSharp, QuestPDF, o incluso aprovechando funcionalidades integradas de .NET para tareas más simples. Algunos también consideran la integración de APIs basadas en la nube de terceros o herramientas de línea de comandos como wkhtmltopdf.
Si bien existen estas diversas opciones, encontrar una biblioteca PDF de C# que equilibre perfectamente la facilidad de uso, características completas, capacidades avanzadas de renderizado y un rendimiento robusto es clave para un desarrollo eficiente. Es precisamente aquí donde IronPDF se distingue, ofreciendo una solución poderosa y notablemente intuitiva diseñada específicamente para desarrolladores de C#. Este tutorial lo guiará a través del proceso sencillo de cómo crear documentos PDF en C# .NET utilizando IronPDF, cubriendo todo desde la conversión básica de cadenas HTML hasta la representación de páginas web complejas. Si estás buscando crear archivos pdf de manera eficiente, estás en el lugar correcto.
IronPDF es una biblioteca PDF con todas las funciones para Java. Es una de varias bibliotecas de terceros disponibles que funcionan eficientemente en la creación, edición y procesamiento de documentos PDF, así como en la generación de archivos PDF editables a partir del contenido de otros tipos de archivos (HTML, PNG, RTF, etc.). Descubra más sobre IronPDF y bibliotecas PDF similares en el creciente catálogo de artículos de comparación de bibliotecas de terceros.
Cuando se embarcan en un proyecto que requiere la generación de PDF en C#, los desarrolladores a menudo sopesan los pros y los contras de las bibliotecas gratuitas frente a las comerciales. Las bibliotecas gratuitas como PDFSharp o QuestPDF pueden ser excelentes puntos de partida para la creación básica de PDFs o cuando se opera con restricciones presupuestarias ajustadas. Sin embargo, pueden presentar limitaciones en cuanto a sus conjuntos de características, la complejidad involucrada en la implementación de funcionalidades avanzadas (como la renderización precisa de HTML a PDF) o la disponibilidad inmediata de soporte profesional dedicado.
Las bibliotecas comerciales como IronPDF, aunque requieren una licencia para entornos de producción, generalmente ofrecen una experiencia de desarrollo más fluida y eficiente. A menudo presumen de características más avanzadas, incluyendo la conversión a PDF de HTML, CSS y JavaScript con alta precisión, opciones de seguridad de documentos integrales y herramientas robustas para la manipulación de PDFs. Además, suelen venir con la garantía de soporte profesional y actualizaciones regulares. IronPDF defiende un enfoque amigable para los desarrolladores. Aunque es una biblioteca comercial diseñada para uso profesional, ofrece una licencia completamente gratuita para desarrollo y pruebas, además de un período de prueba para la evaluación de producción. Esto le permite explorar completamente sus capacidades antes de decidir si es la mejor opción para su proyecto que necesita crear documentos PDF con características avanzadas.
Get started creating PDFs now!
IronPdf.ChromePdfRenderer
.StaticRenderHtmlAsPdf("<p>Hello Word</p>")
.SaveAs("pixelperfect.pdf");
RenderHtmlToPdf()
SaveAs
para guardar el archivo PDF en el ordenadorComo HTML es un lenguaje de marcado, puede resultar difícil convertir el contenido de HTML a un PDF sin las etiquetas HTML. IronPDF ofrece características como crear PDF en C# a partir de HTML, debido a su facilidad de uso y características adicionales como el uso de JavaScript, CSS e imágenes.
Este artículo cubrirá en detalle la conversión de HTML a PDF en C#, proporcionada por IronPDF.
Antes de sumergirnos en el código, consideremos por qué podrías necesitar crear PDF en C#:
Generando entradas, vales o certificados: Cree documentos imprimibles con contenido único y generado dinámicamente. La capacidad de IronPDF para convertir HTML a PDF es perfecta para crear plantillas de dichos documentos.
IronPDF ofrece soluciones efectivas para todos estos casos de uso y más.
Abra el software Visual Studio y vaya al menú Archivo. Seleccione Nuevo Proyecto y luego seleccione Aplicación de Consola. Este artículo utilizará una aplicación de consola para generar documentos PDF.
Crear un nuevo proyecto en Visual Studio
Introduzca el nombre del proyecto y seleccione la ruta en el cuadro de texto correspondiente. A continuación, haga clic en el botón Siguiente.
Configurar este proyecto
Seleccione el .NET Framework requerido, luego haga clic en el botón Crear, como se muestra a continuación:
Selección de .NET Framework
El proyecto de Visual Studio ahora generará la estructura para la aplicación seleccionada y, si has seleccionado la aplicación de consola, de Windows o web, se abrirá el archivo program.cs
donde puedes ingresar el código y construir/ejecutar la aplicación.
El siguiente paso es añadir la biblioteca y probar el programa.
El software Visual Studio proporciona la opción NuGet Package Manager para instalar el paquete directamente en la solución. La siguiente captura de pantalla muestra cómo abrir el Gestor de paquetes NuGet.
Como se mencionó, IronPDF ofrece una licencia gratuita para desarrollo y pruebas.
Navegar al Administrador de Paquetes NuGet
Proporciona el cuadro de búsqueda para mostrar la lista de bibliotecas de paquetes disponibles en el sitio web de NuGet. En el gestor de paquetes, busca la palabra clave "IronPDF", como se muestra en la siguiente captura de pantalla:
Instale el paquete IronPdf desde el Administrador de paquetes NuGet
En la imagen anterior, seleccione la opción IronPDF de la lista de paquetes NuGet relacionados e instale el paquete para la solución.
En el menú de Visual Studio, ve a Herramientas > Administrador de paquetes de NuGet > Consola del administrador de paquetes
Navegar a Consola del Administrador de Paquetes
Introduzca la siguiente línea en la pestaña Consola del gestor de paquetes:
Install-Package IronPdf
Install-Package IronPdf
RenderHtmlAsPdf()
Con IronPDF instalado, una de las tareas más fundamentales es crear un PDF desde una cadena HTML en C#. Esto es extremadamente útil para generar contenido PDF dinámico directamente dentro de su aplicación. Puede utilizar el método RenderHtmlAsPdf()
de IronPDF para esto. Este enfoque es ideal cuando necesitas producir rápidamente PDFs para cosas como notificaciones simples, confirmaciones o fragmentos pequeños generados dinámicamente.
using IronPdf;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
PdfDocument doc = renderer.RenderHtmlAsPdf("<h1>This is a heading</h1>");
doc.SaveAs("FirstPDFDocument.pdf");
using IronPdf;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
PdfDocument doc = renderer.RenderHtmlAsPdf("<h1>This is a heading</h1>");
doc.SaveAs("FirstPDFDocument.pdf");
Imports IronPdf
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New ChromePdfRenderer()
Dim doc As PdfDocument = renderer.RenderHtmlAsPdf("<h1>This is a heading</h1>")
doc.SaveAs("FirstPDFDocument.pdf")
En este fragmento, primero instanciamos ChromePdfRenderer
. A continuación, llamamos a RenderHtmlAsPdf()
con una cadena HTML básica. Finalmente, doc.SaveAs()
guarda el PDF generado como 'FirstPDFDocument.pdf'. Este archivo contendrá la etiqueta H1 renderizada. Después de la ejecución de su proyecto C#, habrá un archivo llamado "FirstPDFDocument.pdf" en la carpeta bin de su proyecto, haga doble clic en dicho archivo, y el archivo PDF se abrirá en la pestaña del navegador. Crear archivos PDF en C# o crear archivos PDF convirtiendo HTML a PDF es sólo cuestión de unas pocas líneas de código utilizando IronPDF.
Si tu objetivo es crear un PDF desde una página web existente usando C#, el método RenderUrlAsPdf()
de IronPDF es lo que necesitas. Esto es útil para archivar contenido web, generar PDFs de artículos o capturar el estado de un sitio en vivo.
using IronPdf;
using System;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.amazon.com/?tag=hp2-brobookmark-us-20");
pdf.SaveAs("url.pdf");
using IronPdf;
using System;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.amazon.com/?tag=hp2-brobookmark-us-20");
pdf.SaveAs("url.pdf");
Imports IronPdf
Imports System
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.amazon.com/?tag=hp2-brobookmark-us-20")
pdf.SaveAs("url.pdf")
Aquí, RenderUrlAsPdf()
toma una cadena de URL, obtiene el contenido, lo representa y produce un PdfDocument
. La declaración using
asegura que el PdfDocument
se disponga correctamente. El archivo 'url.pdf' resultante será una versión PDF de la página web especificada. Este es el resultado del código anterior.
Salida de archivo PDF, renderizado desde una URL
Otros ejemplos de conversión de sitios complejos populares a PDF.
Otro ejemplo de renderización de un sitio web complejo
Para crear documentos PDF en C# dentro de una aplicación ASP.NET MVC (usando .NET Framework), puedes renderizar un archivo o cadena HTML y luego devolverlo como un FileResult
. Esto es útil para generar PDFs basados en la lógica y los datos del servidor, y luego entregarlos directamente al navegador del usuario.
using IronPdf;
using System.Web;
using System.Web.Mvc; // Required for ActionResult and EmptyResult
public class PdfController : Controller
{
public ActionResult DownloadPdfFromHtmlFile()
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
string htmlFilePath = HttpContext.Current.Server.MapPath("~/Project/MyHtmlDocument.html");
using var pdf = renderer.RenderHtmlFileAsPdf(htmlFilePath);
var currentResponse = HttpContext.Current.Response;
currentResponse.Clear();
currentResponse.ContentType = "application/pdf";
currentResponse.AddHeader("Content-Disposition", "attachment;filename=\"FileName.pdf\"");
currentResponse.BinaryWrite(pdf.BinaryData);
currentResponse.Flush();
currentResponse.End();
return new EmptyResult();
}
}
using IronPdf;
using System.Web;
using System.Web.Mvc; // Required for ActionResult and EmptyResult
public class PdfController : Controller
{
public ActionResult DownloadPdfFromHtmlFile()
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
string htmlFilePath = HttpContext.Current.Server.MapPath("~/Project/MyHtmlDocument.html");
using var pdf = renderer.RenderHtmlFileAsPdf(htmlFilePath);
var currentResponse = HttpContext.Current.Response;
currentResponse.Clear();
currentResponse.ContentType = "application/pdf";
currentResponse.AddHeader("Content-Disposition", "attachment;filename=\"FileName.pdf\"");
currentResponse.BinaryWrite(pdf.BinaryData);
currentResponse.Flush();
currentResponse.End();
return new EmptyResult();
}
}
Imports IronPdf
Imports System.Web
Imports System.Web.Mvc ' Required for ActionResult and EmptyResult
Public Class PdfController
Inherits Controller
Public Function DownloadPdfFromHtmlFile() As ActionResult
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim htmlFilePath As String = HttpContext.Current.Server.MapPath("~/Project/MyHtmlDocument.html")
Dim pdf = renderer.RenderHtmlFileAsPdf(htmlFilePath)
Dim currentResponse = HttpContext.Current.Response
currentResponse.Clear()
currentResponse.ContentType = "application/pdf"
currentResponse.AddHeader("Content-Disposition", "attachment;filename=""FileName.pdf""")
currentResponse.BinaryWrite(pdf.BinaryData)
currentResponse.Flush()
currentResponse.End()
Return New EmptyResult()
End Function
End Class
En esta acción del controlador MVC, RenderHtmlFileAsPdf
convierte un archivo HTML especificado. Luego, se utiliza el objeto Response
para enviar el PDF al cliente como una descarga. El EmptyResult
se devuelve porque la respuesta se gestiona directamente.
Para aplicaciones ASP.NET MVC, una tarea común es crear un PDF desde una vista Razor con C#. Esto le permite usar su lógica de vista y modelos existentes para generar HTML dinámico, que luego IronPDF convierte a PDF. El método auxiliar a continuación convierte una vista Razor en una cadena HTML.
using IronPdf;
using System.IO;
using System.Web.Mvc; // Required for ControllerContext, ViewEngines, etc.
public string RenderRazorViewToString(ControllerContext controllerContext, string viewName, object model)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
controllerContext.Controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
var viewContext = new ViewContext(controllerContext, viewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
using IronPdf;
using System.IO;
using System.Web.Mvc; // Required for ControllerContext, ViewEngines, etc.
public string RenderRazorViewToString(ControllerContext controllerContext, string viewName, object model)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
controllerContext.Controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
var viewContext = new ViewContext(controllerContext, viewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
Imports IronPdf
Imports System.IO
Imports System.Web.Mvc ' Required for ControllerContext, ViewEngines, etc.
Public Function RenderRazorViewToString(ByVal controllerContext As ControllerContext, ByVal viewName As String, ByVal model As Object) As String
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
controllerContext.Controller.ViewData.Model = model
Using sw = New StringWriter()
Dim viewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName)
Dim viewContext As New ViewContext(controllerContext, viewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw)
viewResult.View.Render(viewContext, sw)
viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View)
Return sw.GetStringBuilder().ToString()
End Using
End Function
Este método toma el ControllerContext
, el nombre de la vista y el modelo para renderizar la vista Razor en una cadena HTML. Esta cadena puede luego ser pasada al método RenderHtmlAsPdf()
de IronPDF, recordando establecer un BaseUri
si su vista Razor utiliza rutas relativas para los activos. Por favor, lea la documentación de la Guía de PDF de .NET MVC para aprender cómo renderizar una vista de MVC como un archivo PDF binario.
Cuando necesitas en C# crear un PDF a partir de datos XML, un enfoque robusto es primero transformar el XML en HTML utilizando XSLT (Transformaciones de Hoja de Estilo Extensible). IronPDF puede convertir el HTML resultante a un PDF. Esto es útil para presentar datos XML estructurados en un formato legible por humanos.
using IronPdf;
using System.Xml;
using System.Xml.Xsl;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
string xsltContent = @"<xsl:stylesheet version='1.0' xmlns:xsl='[http://www.w3.org/1999/XSL/Transform](http://www.w3.org/1999/XSL/Transform)'>
<xsl:template match='/root'>
<html><body><h1>Items:</h1><ul><xsl:for-each select='item'><li><xsl:value-of select='.'/></li></xsl:for-each></ul></body></html>
</xsl:template>
</xsl:stylesheet>";
string xmlContent = "<root><item>Hello</item><item>World</item></root>";
XslCompiledTransform transform = new XslCompiledTransform();
using(XmlReader reader = XmlReader.Create(new StringReader(xsltContent))) {
transform.Load(reader);
}
StringWriter results = new StringWriter();
using(XmlReader reader = XmlReader.Create(new StringReader(xmlContent))) {
transform.Transform(reader, null, results);
}
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("Final.pdf");
using IronPdf;
using System.Xml;
using System.Xml.Xsl;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
string xsltContent = @"<xsl:stylesheet version='1.0' xmlns:xsl='[http://www.w3.org/1999/XSL/Transform](http://www.w3.org/1999/XSL/Transform)'>
<xsl:template match='/root'>
<html><body><h1>Items:</h1><ul><xsl:for-each select='item'><li><xsl:value-of select='.'/></li></xsl:for-each></ul></body></html>
</xsl:template>
</xsl:stylesheet>";
string xmlContent = "<root><item>Hello</item><item>World</item></root>";
XslCompiledTransform transform = new XslCompiledTransform();
using(XmlReader reader = XmlReader.Create(new StringReader(xsltContent))) {
transform.Load(reader);
}
StringWriter results = new StringWriter();
using(XmlReader reader = XmlReader.Create(new StringReader(xmlContent))) {
transform.Transform(reader, null, results);
}
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("Final.pdf");
Imports IronPdf
Imports System.Xml
Imports System.Xml.Xsl
Imports System.IO
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim xsltContent As String = "<xsl:stylesheet version='1.0' xmlns:xsl='[http://www.w3.org/1999/XSL/Transform](http://www.w3.org/1999/XSL/Transform)'>
<xsl:template match='/root'>
<html><body><h1>Items:</h1><ul><xsl:for-each select='item'><li><xsl:value-of select='.'/></li></xsl:for-each></ul></body></html>
</xsl:template>
</xsl:stylesheet>"
Dim xmlContent As String = "<root><item>Hello</item><item>World</item></root>"
Dim transform As New XslCompiledTransform()
Using reader As XmlReader = XmlReader.Create(New StringReader(xsltContent))
transform.Load(reader)
End Using
Dim results As New StringWriter()
Using reader As XmlReader = XmlReader.Create(New StringReader(xmlContent))
transform.Transform(reader, Nothing, results)
End Using
Dim Renderer As New IronPdf.ChromePdfRenderer()
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("Final.pdf")
Este fragmento de código define un XSLT para transformar XML en una lista HTML simple. XslCompiledTransform
realiza la transformación, y la cadena HTML resultante se renderiza luego en 'Final.pdf' por IronPDF.
Para C# crear informes PDF, especialmente aquellos con encabezados personalizados, pies de página y numeración de páginas, IronPDF es altamente efectivo. El flujo de trabajo típico es generar tus datos de informe como un documento HTML y luego usar IronPDF para convertir este HTML en un PDF bien formateado.
using IronPdf;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.FirstPageNumber = 1;
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
Renderer.RenderingOptions.TextHeader.FontFamily = "Arial";
Renderer.RenderingOptions.TextHeader.FontSize = 12;
Renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
Renderer.RenderingOptions.TextFooter.FontFamily = "Helvetica";
Renderer.RenderingOptions.TextFooter.FontSize = 10;
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
File.WriteAllText("Report.html", "<html><body><h1>Sample Report Content</h1><p>This is a test report.</p></body></html>");
Renderer.RenderHtmlFileAsPdf("Report.html").SaveAs("Report.pdf");
using IronPdf;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.FirstPageNumber = 1;
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
Renderer.RenderingOptions.TextHeader.FontFamily = "Arial";
Renderer.RenderingOptions.TextHeader.FontSize = 12;
Renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
Renderer.RenderingOptions.TextFooter.FontFamily = "Helvetica";
Renderer.RenderingOptions.TextFooter.FontSize = 10;
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
File.WriteAllText("Report.html", "<html><body><h1>Sample Report Content</h1><p>This is a test report.</p></body></html>");
Renderer.RenderHtmlFileAsPdf("Report.html").SaveAs("Report.pdf");
Imports IronPdf
Imports System.IO
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim Renderer As New IronPdf.ChromePdfRenderer()
Renderer.RenderingOptions.FirstPageNumber = 1
Renderer.RenderingOptions.TextHeader.DrawDividerLine = True
Renderer.RenderingOptions.TextHeader.CenterText = "{url}"
Renderer.RenderingOptions.TextHeader.FontFamily = "Arial"
Renderer.RenderingOptions.TextHeader.FontSize = 12
Renderer.RenderingOptions.TextFooter.DrawDividerLine = True
Renderer.RenderingOptions.TextFooter.FontFamily = "Helvetica"
Renderer.RenderingOptions.TextFooter.FontSize = 10
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}"
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"
File.WriteAllText("Report.html", "<html><body><h1>Sample Report Content</h1><p>This is a test report.</p></body></html>")
Renderer.RenderHtmlFileAsPdf("Report.html").SaveAs("Report.pdf")
Este ejemplo configura varias RenderingOptions
para encabezados (mostrando la URL de origen) y pies de página (con fecha, hora y números de página). A continuación, convierte un archivo HTML llamado 'Report.html' en 'Report.pdf', completo con estas configuraciones.
Ejemplo de salida de creación de PDF en CSharp
Cuando creas documentos PDF en C# a partir de HTML que incluye imágenes y archivos CSS externos, es crucial que IronPDF pueda localizar estos recursos. Esto se logra proporcionando un BaseUri
a los métodos de renderización, lo que indica a IronPDF la ruta raíz para las URL relativas en tu HTML.
using IronPdf;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'><h1>Image Test</h1>",@"C:\site\assets\");
pdf.SaveAs("html-with-assets.pdf");
using var advancedPDF = renderer.RenderHtmlFileAsPdf("C:\\Assets\\TestInvoice1.html");
advancedPDF.SaveAs("Invoice.pdf");
using IronPdf;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'><h1>Image Test</h1>",@"C:\site\assets\");
pdf.SaveAs("html-with-assets.pdf");
using var advancedPDF = renderer.RenderHtmlFileAsPdf("C:\\Assets\\TestInvoice1.html");
advancedPDF.SaveAs("Invoice.pdf");
Imports IronPdf
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'><h1>Image Test</h1>","C:\site\assets\")
pdf.SaveAs("html-with-assets.pdf")
Dim advancedPDF = renderer.RenderHtmlFileAsPdf("C:\Assets\TestInvoice1.html")
advancedPDF.SaveAs("Invoice.pdf")
La primera parte muestra la representación de una cadena HTML con una imagen; el BaseUri
(C:\site\assets
) indica a IronPDF dónde encontrar icons/iron.png
. La segunda parte renderiza un archivo HTML; si TestInvoice1.html
utiliza rutas relativas para sus activos, se resolverán en relación con C:\Assets
.
Para las aplicaciones heredadas de ASP.NET Web Forms, IronPDF ofrece una manera de crear PDF desde páginas .aspx
directamente con C#. Esto requiere el paquete NuGet IronPdf.Extensions.ASPX
y es específico para proyectos .NET Framework.
using System;
using System.Web.UI;
using IronPdf;
namespace aspxtopdf
{
public partial class SiteMaster : MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
}
}
using System;
using System.Web.UI;
using IronPdf;
namespace aspxtopdf
{
public partial class SiteMaster : MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
}
}
Imports System
Imports System.Web.UI
Imports IronPdf
Namespace aspxtopdf
Partial Public Class SiteMaster
Inherits MasterPage
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
End Class
End Namespace
En este evento Page_Load
de una MasterPage de ASP.NET (o cualquier página .aspx
), AspxToPdf.RenderThisPageAsPdf()
convierte la salida renderizada de la página actual a un PDF. Esto a menudo es mejor colocarlo en un evento de clic de botón para evitar problemas con los postbacks.
Ejemplo de salida de creación de PDF en CSharp
Este ejemplo revisita la conversión de una URL en vivo a PDF, un requisito común cuando necesitas usar C# para crear archivos PDF de contenido web o compartir instantáneas de información en línea.
using IronPdf;
using System;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var uri = new Uri("https://www.c-sharpcorner.com/article/how-to-create-pdf-file-in-c-sharp-using-ironpdf/");
var pdf = ChromePdfRenderer.StaticRenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
using IronPdf;
using System;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var uri = new Uri("https://www.c-sharpcorner.com/article/how-to-create-pdf-file-in-c-sharp-using-ironpdf/");
var pdf = ChromePdfRenderer.StaticRenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
Imports IronPdf
Imports System
Imports System.IO
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim uri As New Uri("https://www.c-sharpcorner.com/article/how-to-create-pdf-file-in-c-sharp-using-ironpdf/")
Dim pdf = ChromePdfRenderer.StaticRenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
Aquí, ChromePdfRenderer.StaticRenderUrlAsPdf()
proporciona un método rápido y estático para convertir el contenido del Uri
dado directamente en un PdfDocument
, que luego se guarda. El archivo PDF se crea dentro de la carpeta Debug. Este es el resultado:
Ejemplo de salida de creación de PDF en CSharp
La Guía de Inicio explica cómo instalar IronPDF a través de NuGet (para aquellos que no están familiarizados con el Administrador de Paquetes NuGet).
Este ejemplo ilustra aún más el uso de IronPDF en un contexto de formularios web de ASP.NET para crear archivos PDF, específicamente al renderizar la página actual como un PDF en respuesta a un clic de botón. Este es un escenario típico para generar versiones en PDF descargables de formularios web o informes.
using System;
using System.Web.UI;
using IronPdf;
namespace aspxtopdf
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
}
}
using System;
using System.Web.UI;
using IronPdf;
namespace aspxtopdf
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
}
}
Imports System
Imports System.Web.UI
Imports IronPdf
Namespace aspxtopdf
Partial Public Class _Default
Inherits Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
End Class
End Namespace
Cuando se hace clic en Button1
, AspxToPdf.RenderThisPageAsPdf()
captura la salida renderizada de la página actual de ASP.NET y la transmite al navegador como un PDF. Recuerda que esto requiere el paquete NuGet IronPdf.Extensions.ASPX
.
Ejemplo de salida de creación de PDF en CSharp
Esto requiere que se instale IronPdf.Extensions.ASPX
desde la página oficial de NuGet. No está disponible en .NET Core porque ASPX ha sido sustituido por el modelo MVC.
Aquí tienes otro ejemplo rápido para crear un PDF a partir de una cadena HTML. Esto es útil para necesidades muy simples de generación de PDF donde el contenido HTML es mínimo o se construye sobre la marcha.
using IronPdf;
private void HTMLString()
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>");
var outputPath = "ChromePdfRenderer.pdf";
pdf.SaveAs(outputPath);
}
using IronPdf;
private void HTMLString()
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>");
var outputPath = "ChromePdfRenderer.pdf";
pdf.SaveAs(outputPath);
}
Imports IronPdf
Private Sub HTMLString()
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>")
Dim outputPath = "ChromePdfRenderer.pdf"
pdf.SaveAs(outputPath)
End Sub
Este método privado demuestra cómo crear un PDF a partir de una simple etiqueta H1 y guardarlo.
El siguiente código muestra cómo crear un PDF desde una página ASPX directamente dentro del evento Page_Load
. Si bien es posible, este enfoque debe usarse con precaución debido a posibles problemas con los eventos del ciclo de vida de la página y las devoluciones de datos. A menudo, activar la generación de PDF desde una acción específica del usuario (como un clic de botón) es más confiable.
using System;
using System.Web.UI;
using IronPdf;
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
using System;
using System.Web.UI;
using IronPdf;
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
Imports System
Imports System.Web.UI
Imports IronPdf
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
IronPDF soporta JavaScript bastante bien a través del motor de renderizado Chromium. Sin embargo, es posible que tenga que añadir un retardo al renderizado de una página para dar tiempo a que JavaScript se ejecute mientras se generan los PDF.
IronPDF se puede integrar fácilmente para crear un PDF en una aplicación de escritorio Windows Forms (WinForms). Este ejemplo muestra cómo tomar la entrada del usuario desde un TextBox
y generar un PDF cuando se hace clic en un Button
.
using IronPdf;
using System.Windows.Forms;
using System;
using System.ComponentModel;
using System.Drawing;
namespace ReadPdf
{
public partial class Form1 : Form
{
private TextBox textBox1;
private Button button1;
private IContainer components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
this.textBox1.Location = new System.Drawing.Point(12, 12);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(260, 20);
this.textBox1.TabIndex = 0;
this.button1.Location = new System.Drawing.Point(12, 38);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(100, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Create PDF";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 73);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "PDF Creator";
this.ResumeLayout(false);
this.PerformLayout();
}
private void button1_Click(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
string text = textBox1.Text;
renderer.RenderHtmlAsPdf("<h1>"+ System.Net.WebUtility.HtmlEncode(text) +"</h1>").SaveAs("custom.pdf");
MessageBox.Show("Done !");
}
}
}
using IronPdf;
using System.Windows.Forms;
using System;
using System.ComponentModel;
using System.Drawing;
namespace ReadPdf
{
public partial class Form1 : Form
{
private TextBox textBox1;
private Button button1;
private IContainer components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
this.textBox1.Location = new System.Drawing.Point(12, 12);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(260, 20);
this.textBox1.TabIndex = 0;
this.button1.Location = new System.Drawing.Point(12, 38);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(100, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Create PDF";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 73);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "PDF Creator";
this.ResumeLayout(false);
this.PerformLayout();
}
private void button1_Click(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
string text = textBox1.Text;
renderer.RenderHtmlAsPdf("<h1>"+ System.Net.WebUtility.HtmlEncode(text) +"</h1>").SaveAs("custom.pdf");
MessageBox.Show("Done !");
}
}
}
Imports IronPdf
Imports System.Windows.Forms
Imports System
Imports System.ComponentModel
Imports System.Drawing
Namespace ReadPdf
Partial Public Class Form1
Inherits Form
Private textBox1 As TextBox
Private WithEvents button1 As Button
Private components As IContainer = Nothing
Public Sub New()
InitializeComponent()
End Sub
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso (components IsNot Nothing) Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
Private Sub InitializeComponent()
Me.textBox1 = New System.Windows.Forms.TextBox()
Me.button1 = New System.Windows.Forms.Button()
Me.SuspendLayout()
Me.textBox1.Location = New System.Drawing.Point(12, 12)
Me.textBox1.Name = "textBox1"
Me.textBox1.Size = New System.Drawing.Size(260, 20)
Me.textBox1.TabIndex = 0
Me.button1.Location = New System.Drawing.Point(12, 38)
Me.button1.Name = "button1"
Me.button1.Size = New System.Drawing.Size(100, 23)
Me.button1.TabIndex = 1
Me.button1.Text = "Create PDF"
Me.button1.UseVisualStyleBackColor = True
'INSTANT VB NOTE: The following InitializeComponent event wireup was converted to a 'Handles' clause:
'ORIGINAL LINE: this.button1.Click += new System.EventHandler(this.button1_Click);
Me.AutoScaleDimensions = New System.Drawing.SizeF(6F, 13F)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(284, 73)
Me.Controls.Add(Me.button1)
Me.Controls.Add(Me.textBox1)
Me.Name = "Form1"
Me.Text = "PDF Creator"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New ChromePdfRenderer()
'INSTANT VB NOTE: The variable text was renamed since Visual Basic does not handle local variables named the same as class members well:
Dim text_Conflict As String = textBox1.Text
renderer.RenderHtmlAsPdf("<h1>" & System.Net.WebUtility.HtmlEncode(text_Conflict) &"</h1>").SaveAs("custom.pdf")
MessageBox.Show("Done !")
End Sub
End Class
End Namespace
Este código de WinForms inicializa una interfaz de usuario simple con un TextBox
y un Button
. Al hacer clic en el botón, toma el texto de textBox1
, lo envuelve en una etiqueta HTML H1 (asegurándose de codificar en HTML la entrada del usuario por seguridad), y lo renderiza en 'custom.pdf'.
El motor de renderizado PDF de Chrome de IronPDF garantiza un renderizado PDF "idéntico a Chrome" de sus documentos PDF a partir de la fuente HTML original.
Algunas de las características de Chrome PDF Rendering Feature son:
Mantenimiento continuo y soporte completo mejorado para .NET 6, 5, Core y Framework 4.0+.
Explore las funciones de soporte para multithreading y async del motor de renderizado de Chrome.
He aquí un ejemplo:
using IronPdf;
using IronPdf.Rendering;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
using var doc = renderer.RenderHtmlAsPdf("<h1>Hello world! This is sample for IronPdf</h1>");
doc.SaveAs("google_chrome.pdf");
using IronPdf;
using IronPdf.Rendering;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
using var doc = renderer.RenderHtmlAsPdf("<h1>Hello world! This is sample for IronPdf</h1>");
doc.SaveAs("google_chrome.pdf");
Imports IronPdf
Imports IronPdf.Rendering
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
Dim doc = renderer.RenderHtmlAsPdf("<h1>Hello world! This is sample for IronPdf</h1>")
doc.SaveAs("google_chrome.pdf")
Si bien hay otras bibliotecas PDF disponibles, IronPDF ofrece varias ventajas convincentes para los desarrolladores centrados en la generación de PDF eficiente y de alta calidad:
Muchos desarrolladores consideran IronPDF una de las maneras más fáciles debido a su sencillo método RenderHtmlAsPdf
y su sólido soporte para los estándares HTML. Puedes crear archivos PDF a partir de cadenas HTML o URL con solo unas pocas líneas de código.
A: IronPDF ofrece una licencia gratuita para desarrollo y pruebas. Se requiere una licencia comercial para la implementación en producción. Ofrecen un período de prueba para evaluar todas las características.
A: Sí, IronPDF utiliza un motor moderno de Chromium, lo que proporciona un excelente soporte para HTML5, CSS3, JavaScript, diseños responsivos y otras tecnologías web para realizar un renderizado preciso al crear archivos PDF.
Sí, IronPDF está diseñado para el rendimiento y puede crear documentos PDF de tamaño considerable de manera eficiente. Su motor de renderizado y las opciones para operaciones asincrónicas lo hacen adecuado para aplicaciones exigentes.
¡Gracias por leer! Este completo tutorial le ha mostrado varias formas poderosas de crear documentos PDF utilizando IronPDF en .NET. Ya sea que necesite convertir HTML a PDF, renderizar URLs o generar informes complejos, IronPDF ofrece una solución intuitiva y robusta. Su facilidad de uso, junto con funciones avanzadas como soporte para JavaScript, CSS e imágenes, lo convierte en una opción ideal para los desarrolladores que buscan producir documentos PDF de alta calidad de manera eficiente.
¿Listo para simplificar su generación de PDF y tomar el control de sus flujos de trabajo de documentos?
¿Tienes preguntas? Contacte a nuestro equipo de soporte experto o consulte nuestros recursos comunitarios.
Si compras la Iron Suite completa, obtendrás los 10 productos .NET de Iron Software con un descuento notable (el costo de dos licencias Lite).