Saltar al pie de página
COMPARACIONES DE PRODUCTOS

ActivePDF vs IronPDF: Tutorial de HTML a PDF y Comparación Exhaustiva

¿Cómo se comparan IronPDF y ActivePDF para la generación de PDF en .NET?

Cuando los desarrolladores necesitan capacidades robustas de generación de PDF en sus aplicaciones .NET, dos soluciones prominentes suelen surgir: IronPDF y ActivePDF. Ambas bibliotecas ofrecen potentes funciones para crear, convertir y manipular documentos PDF, pero difieren significativamente en su enfoque, precios y complejidad de implementación.

IronPDF se destaca por su diseño de API intuitiva y conversión HTML a PDF integral utilizando un motor de renderizado Chrome, mientras que ActivePDF proporciona soluciones enfocadas en la empresa a través de múltiples componentes especializados como WebGrabber para la conversión de HTML y DocConverter para la transformación de documentos. Este artículo ofrece una comparación detallada para ayudarle a tomar una decisión informada para sus necesidades de procesamiento de PDF.

Acerca de la Biblioteca IronPDF C

                <td><strong>Core Architecture</strong></td>

                <td>Intuitive methods like <code>RenderHtmlAsPdf()</code></td>

                <td><strong>Platform Support</strong></td>

                <td><strong>HTML to PDF</strong></td>

                <td><strong>Document Conversion</strong></td>

                <td>Built-in <code>DocxToPdfRenderer</code></td>

                <td><strong>Performance</strong></td>

                <td><strong>PDF Features</strong></td>

                <td><strong>Developer Experience</strong></td>

                <td><strong>Licensing & Pricing</strong></td>

                <td><strong>Support</strong></td>

                <td><strong>Best For</strong></td>

        <em>Note.</em> Comparison based on current versions as of 2025. ActivePDF offers modular components for specific enterprise needs, while IronPDF provides an integrated solution. Pricing varies significantly based on component selection for ActivePDF.

IronPDF para una manipulación integral de PDF.

      <img alt="Download C# PDF Cheat Sheet" style="box-shadow: none;" src="/img/tutorials/html-to-pdf/cheat-sheet-card.svg" data-hover-src="/img/tutorials/html-to-pdf/cheat-sheet-card-hover.svg" class="img-responsive learn-how-to-img replaceable-img" width="308" height="320">

1. Comparación de Características de ActivePDF vs IronPDF

Visión general

IronPDF proporciona una solución integral para generar archivos PDF desde varios formatos mientras ofrece un control programático completo sobre las propiedades del documento.

Iron Software is a market-leading component provider offering Los desarrolladores prefieren IronPDF por su salida consistente y confiable y su API intuitiva que requiere un código mínimo. IronPDF admite C#, VB.NET, ASP.NET, MVC, .NET Core, .NET 9 y .NET 10. Funciona sin problemas en Windows, Linux, macOS, Docker, Azure, AWS y otras plataformas en la nube. ## Acerca de los Componentes ActivePDF

ActivePDF (ahora parte de Apryse) ofrece soluciones PDF enfocadas en la empresa a través de múltiples componentes especializados.

A diferencia del enfoque unificado de IronPDF, ActivePDF ofrece productos separados para diferentes tareas PDF:

ActivePDF WebGrabber para la Conversión de HTML a PDF ActivePDF WebGrabber está diseñado específicamente para convertir fuentes HTML (URLs, archivos HTML o cadenas HTML) a formato PDF.

Proporciona opciones de configuración para propiedades de página, incluyendo encabezados, pies de página, márgenes, marcas de agua y marcadores.

WebGrabber admite motores de renderizado nativos y de Internet Explorer. ### ActivePDF DocConverter para la Transformación de Documentos ActivePDF DocConverter maneja la conversión de más de 300 formatos de archivo a PDF, incluyendo documentos de Microsoft Office, imágenes, archivos CAD y más.

Cuenta con automatización de carpeta vigilada, capacidades de procesamiento por lotes y características de gestión de documentos de nivel empresarial.

Marco de Renderizado Moderno de CSS: Bootstrap y Más Allá Las aplicaciones web contemporáneas dependen cada vez más de marcos CSS como Bootstrap, Foundation y Tailwind CSS para un desarrollo de interfaz de usuario consistente y responsive.

Las bibliotecas de generación de PDF deben renderizar con precisión estos marcos para mantener la calidad profesional del documento y la fidelidad del diseño.

IronPDF: Soporte Completo de Bootstrap y Marcos Modernos El motor de renderizado Chromium de IronPDF garantiza un soporte integral para todos los marcos y especificaciones CSS modernos:

  • Bootstrap 5: Renderizado completo de flexbox y grid CSS con utilidades responsive

  • Bootstrap 4: Sistemas de tarjetas completas, componentes de navegación y diseños de formularios

  • Tailwind CSS: Todas las clases de utilidad y variantes responsive se renderizan correctamente
  • Foundation: Soporte completo del sistema de grid y componentes
  • CSS3 Moderno: Flexbox, grid CSS, propiedades personalizadas, animaciones, transiciones y transformaciones
  • Ejecución de JavaScript: Soporte completo para contenido dinámico e interactividad de marcos Validado con ejemplos de producción: plantillas oficiales se convierten con fidelidad precisa del navegador. Ejemplo de Código: Tabla de Precios con Bootstrap

Validated with production examples: Bootstrap homepage and official templates convert with browser-accurate fidelity.

ActivePDF WebGrabber: Soporte Moderno de Marcos Limitado

using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapPricing = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Service Plans</h1>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-light text-center py-3'>
                        <h3>Starter</h3>

                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$29</span>
                            <span class='text-muted'>/month</span>

                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 100 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Basic templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Email support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 5 GB storage</li>
                            <li class='mb-2 text-muted'><i class='bi bi-x-circle'></i> Priority processing</li>

                        <button class='btn btn-outline-primary w-100 mt-auto'>Get Started</button>

            <div class='col-md-4'>
                <div class='card h-100 shadow border-primary'>
                    <div class='position-absolute top-0 start-50 translate-middle'>
                        <span class='badge bg-primary'>Most Popular</span>

                    <div class='card-header bg-primary text-white text-center py-3'>
                        <h3>Professional</h3>

                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$99</span>
                            <span class='text-muted'>/month</span>

                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 1,000 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Premium templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 50 GB storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority processing</li>

                        <button class='btn btn-primary w-100 mt-auto'>Get Started</button>

            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-dark text-white text-center py-3'>
                        <h3>Enterprise</h3>

                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$299</span>
                            <span class='text-muted'>/month</span>

                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited conversions</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Custom templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Dedicated support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> SLA guarantee</li>

                        <button class='btn btn-dark w-100 mt-auto'>Contact Sales</button>

</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapPricing);
pdf.SaveAs("pricing-table.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapPricing = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Service Plans</h1>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-light text-center py-3'>
                        <h3>Starter</h3>

                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$29</span>
                            <span class='text-muted'>/month</span>

                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 100 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Basic templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Email support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 5 GB storage</li>
                            <li class='mb-2 text-muted'><i class='bi bi-x-circle'></i> Priority processing</li>

                        <button class='btn btn-outline-primary w-100 mt-auto'>Get Started</button>

            <div class='col-md-4'>
                <div class='card h-100 shadow border-primary'>
                    <div class='position-absolute top-0 start-50 translate-middle'>
                        <span class='badge bg-primary'>Most Popular</span>

                    <div class='card-header bg-primary text-white text-center py-3'>
                        <h3>Professional</h3>

                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$99</span>
                            <span class='text-muted'>/month</span>

                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 1,000 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Premium templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 50 GB storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority processing</li>

                        <button class='btn btn-primary w-100 mt-auto'>Get Started</button>

            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-dark text-white text-center py-3'>
                        <h3>Enterprise</h3>

                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$299</span>
                            <span class='text-muted'>/month</span>

                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited conversions</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Custom templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Dedicated support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> SLA guarantee</li>

                        <button class='btn btn-dark w-100 mt-auto'>Contact Sales</button>

</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapPricing);
pdf.SaveAs("pricing-table.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ActivePDF WebGrabber proporciona conversión de HTML a PDF pero utiliza motores de renderizado más antiguos con limitaciones significativas para marcos CSS modernos:

  • Motor Nativo: Renderizado personalizado con soporte limitado de CSS3

  • Motor de Internet Explorer: Renderizado legado de IE, sin características CSS modernas

  • Sin Soporte para Bootstrap 4/5: Características Flexbox y Grid CSS no son compatibles
  • Limitaciones de Bootstrap 3: Solo los diseños basados en tablas funcionan de manera confiable
  • Limitaciones de JavaScript: Ejecución limitada de JavaScript en comparación con los navegadores modernos
  • Se Requieren Soluciones Alternativas: Los componentes Bootstrap complejos necesitan modificaciones significativas de CSS Problemas comunes reportados por los desarrolladores:
  • Barras de navegación de Bootstrap que se renderizan con problemas de diseño

  • Componentes de tarjetas con flexbox no se muestran correctamente
  • Sistemas de grid responsive se rompen en la salida PDF
  • Necesidad de simplificar o reescribir componentes de Bootstrap para compatibilidad Impacto en el Desarrollo: Las aplicaciones construidas con versiones modernas de Bootstrap (4+) requieren trabajo adicional sustancial con ActivePDF WebGrabber. Los equipos deben:
  1. Mantener CSS simplificado paralelo para la generación de PDF (doble carga de mantenimiento) 2. Limitar la interfaz de usuario web a Bootstrap 3 o anterior (sacrifica características responsive modernas)
  2. Probar y corregir manualmente cada componente de Bootstrap (proceso que consume tiempo y es propenso a errores) Para proyectos muy dependientes de Bootstrap o marcos CSS modernos, las limitaciones de renderizado de ActivePDF WebGrabber pueden aumentar significativamente los costos de desarrollo y reducir la flexibilidad del diseño. Para una guía completa de compatibilidad del marco Bootstrap, consulte la Guía de CSS de Bootstrap & Flexbox.

¿Por qué los desarrolladores eligen IronPDF sobre ActivePDF?

La velocidad de renderizado de IronPDF completa la conversión de HTML a PDF en 835 milisegundos para sitios estáticos, ofreciendo un rendimiento consistente en diferentes tipos de contenido. El uso de memoria de la biblioteca ha sido optimizado para utilizar menos de 10MB típicamente, con una reducción del 75% en el uso de memoria al renderizar encabezados y pies de página.

Los desarrolladores aprecian el diseño de API directo de IronPDF que permite la generación de PDF con solo tres líneas de código, en comparación con el proceso más complejo de múltiples pasos de ActivePDF.

La documentación integral incluye más de 100 ejemplos de código y tutoriales detallados, lo que facilita que los equipos comiencen rápidamente.

¿Cuándo podría ser ActivePDF la mejor opción? ActivePDF sobresale en entornos empresariales que requieren:

  • Procesamiento por lotes automatizado con carpetas vigiladas

  • Soporte para más de 300 conversiones de formato de archivo (a través de DocConverter)

  • Integración de sistemas heredados en Windows Server
  • Manipulación avanzada de campos de formulario y soporte de formularios XFA
  • Múltiples niveles de cumplimiento PDF/A para requisitos de archivo Las organizaciones con infraestructura ActivePDF existente o requisitos de flujo de trabajo empresarial específico pueden encontrar el enfoque modular de ActivePDF beneficioso, a pesar del mayor costo y complejidad.

1. Comparación de Características de ActivePDF vs IronPDF

Comparación

1. Comparación de Características de ActivePDF vs IronPDF

¿Qué biblioteca ofrece mejores capacidades de conversión de HTML a PDF?

IronPDF utiliza un motor de renderizado completo Chrome V8, proporcionando más del 98% de fidelidad del navegador con soporte completo para HTML5, CSS3, JavaScript y fuentes web.

ActivePDF WebGrabber ofrece tanto motores Nativo como de Internet Explorer, pero con ejecución limitada de JavaScript y soporte CSS3. El Motor Nativo no respeta las hojas de estilo CSS, y el Motor IE se basa en el Internet Explorer 11 obsoleto, que carece de estándares web modernos.

¿Cómo se comparan las bibliotecas para el soporte de formato de documento?

Mientras que IronPDF se enfoca en formatos comunes (HTML, DOCX, Imágenes, RTF, Markdown), ActivePDF DocConverter admite más de 300 formatos de archivo incluyendo archivos CAD, formatos de documento heredados y formatos empresariales especializados.

Esto hace que ActivePDF sea más adecuado para organizaciones que manejan tipos de documentos diversos. ### ¿Qué pasa con las funciones de manipulación de PDF?

Ambas bibliotecas ofrecen capacidades completas de manipulación de PDF:

IronPDF proporciona:

  • Marca de agua integrada con estilo HTML/CSS

  • API simple para encabezados/pies de página con campos de fusión predefinidos
  • Métodos de una línea para tareas comunes
  • Creación y llenado de formularios integrados
  • Firmas digitales con representación visual ActivePDF ofrece:

  • Manipulación avanzada de campos de formulario (a través de Toolkit)

  • Control más granular sobre los internos de PDF
  • Capacidades de redacción de nivel empresarial
  • Múltiples niveles de cumplimiento PDF/A
  • Componentes especializados para tareas específicas

2. ¿Cómo instalar IronPDF?

1. Comparación de Características de ActivePDF vs IronPDF

Paso 1: Instalación

¿Qué método de instalación debo usar para IronPDF?

Puede instalar IronPDF a través de múltiples métodos, siendo el Administrador de Paquetes NuGet el más conveniente:

Administrador de Paquetes NuGet

Abra el Administrador de Paquetes NuGet en Visual Studio y busque IronPDF:

Descargar IronPDF.dll manualmente

:InstallCmd
:InstallCmd
SHELL

Alternativamente, descargue IronPDF.dll y agregue su referencia a su proyecto.

Una vez instalado, verifique el acceso agregando:

IronPDF admite .NET 9 y 10, junto con todas las versiones modernas de .NET incluyendo Core, Standard y Framework 4.6.2+.

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

¿Cómo instalar componentes ActivePDF?

1. Comparación de Características de ActivePDF vs IronPDF

¿Cómo instalo ActivePDF WebGrabber?

ActivePDF WebGrabber requiere un proceso de instalación más complejo:

  1. Descargue el instalador desde el sitio web de ActivePDF

  2. Solicite una clave de licencia a ventas de ActivePDF (claves de evaluación disponibles)
  3. Ejecute el instalador con privilegios de administrador
  4. Configure el servicio WebGrabber durante la instalación
  5. Para Windows Server 2012+, cree una cuenta de usuario dedicada para el servicio Después de la instalación, agregue la referencia de WebGrabber desde:

¿Cómo instalo ActivePDF DocConverter?

¿Cómo instalo ActivePDF DocConverter?

DocConverter sigue un patrón de instalación similar:

  1. Descargue el instalador de DocConverter

  2. Instale con derechos de administrador
  3. Configure carpetas vigiladas si utiliza conversión de arrastrar y soltar
  4. Configure el Administrador de Configuraciones para el procesamiento por lotes Nota: Los componentes ActivePDF requieren Windows Server y no admiten el despliegue multiplataforma como IronPDF.

Cómo Hacer Tutoriales

1. Comparación de Características de ActivePDF vs IronPDF

3. Convertir Cadena HTML a Archivo PDF

Comparemos cómo manejan ambas bibliotecas una tarea común: convertir una cadena HTML a un archivo PDF.

3.1. Cadena HTML con IronPDF

Ventajas clave del enfoque de IronPDF:

/**
 * HTML String to PDF
 * anchor-html-string-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> ";

    // Convert HTML string to PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Save the file
    pdf.SaveAs("E:/sample.pdf");
}
/**
 * HTML String to PDF
 * anchor-html-string-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> ";

    // Convert HTML string to PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Save the file
    pdf.SaveAs("E:/sample.pdf");
}
'''
''' * HTML String to PDF
''' * anchor-html-string-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim renderer = New ChromePdfRenderer()

	' HTML Source
	Dim html As String = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> "

	' Convert HTML string to PDF file
	Dim pdf = renderer.RenderHtmlAsPdf(html)

	' Save the file
	pdf.SaveAs("E:/sample.pdf")
End Sub
$vbLabelText   $csharpLabel
  • Solo 3 líneas de código para la conversión
  • Manejo automático de codificación y renderizado
  • El motor Chrome incorporado asegura un renderizado preciso
  • No es necesario configurar ruta y nombre de archivo por separado

3.2. Cadena HTML con ActivePDF WebGrabber

3.3. Ejemplo Avanzado de Cadena HTML con Ambas Bibliotecas

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>";

    // Assign source HTML to WebGrabber
    wg.CreateFromHTMLText = html;

    // Specify file directory
    wg.OutputDirectory = "E:/";

    // File name
    wg.NewDocumentName = "sample.pdf";

    // Convert source HTML to PDF file
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>";

    // Assign source HTML to WebGrabber
    wg.CreateFromHTMLText = html;

    // Specify file directory
    wg.OutputDirectory = "E:/";

    // File name
    wg.NewDocumentName = "sample.pdf";

    // Convert source HTML to PDF file
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	' Instantiate Object
	Dim wg As New WebGrabber()

	' HTML Source
	Dim html As String = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>"

	' Assign source HTML to WebGrabber
	wg.CreateFromHTMLText = html

	' Specify file directory
	wg.OutputDirectory = "E:/"

	' File name
	wg.NewDocumentName = "sample.pdf"

	' Convert source HTML to PDF file
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

Veamos cómo manejan ambas bibliotecas HTML más complejo con estilo CSS:

Ejemplo Avanzado de IronPDF:

La clase ChromePdfRenderer proporciona un control extensivo sobre el proceso de renderizado, incluidas la selección de tipo de medio CSS, el renderizado de fondo, y la creación automática de campos de formulario a partir de elementos de entrada HTML.

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string advancedHtml = @"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>

            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>

    </body>
    </html>";

var pdf = renderer.RenderHtmlAsPdf(advancedHtml);
pdf.SaveAs("advanced-invoice.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string advancedHtml = @"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>

            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>

    </body>
    </html>";

var pdf = renderer.RenderHtmlAsPdf(advancedHtml);
pdf.SaveAs("advanced-invoice.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

4. Convertir Archivo HTML a Archivo PDF

1. Comparación de Características de ActivePDF vs IronPDF

4.1. Archivo HTML con IronPDF

IronPDF maneja automáticamente:

/**
 * HTML File to PDF
 * anchor-html-file-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Render HTML file to PDF
    var pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html");

    // Save to target location
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * HTML File to PDF
 * anchor-html-file-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Render HTML file to PDF
    var pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html");

    // Save to target location
    pdf.SaveAs("E:/Sample.pdf");
}
'''
''' * HTML File to PDF
''' * anchor-html-file-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim renderer = New ChromePdfRenderer()

	' Render HTML file to PDF
	Dim pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html")

	' Save to target location
	pdf.SaveAs("E:/Sample.pdf")
End Sub
$vbLabelText   $csharpLabel
  • Archivos de CSS y JavaScript externos

  • Referencias de imágenes
  • Carga de fuentes
  • Resolución de rutas relativas

4.2. Archivo HTML con ActivePDF WebGrabber

Tenga en cuenta que ActivePDF WebGrabber utiliza la propiedad URL para archivos locales, lo que puede ser confuso para los desarrolladores que esperan un método específico para archivos.

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify file path to be converted
    wg.URL = "E:/myHtmlFile.html";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Newly generated file name
    wg.NewDocumentName = "Sample.pdf";

    // Convert HTML file to PDF
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify file path to be converted
    wg.URL = "E:/myHtmlFile.html";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Newly generated file name
    wg.NewDocumentName = "Sample.pdf";

    // Convert HTML file to PDF
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	' Instantiate Object
	Dim wg As New WebGrabber()

	' Specify file path to be converted
	wg.URL = "E:/myHtmlFile.html"

	' Specify the directory for newly generated file
	wg.OutputDirectory = "E:/"

	' Newly generated file name
	wg.NewDocumentName = "Sample.pdf"

	' Convert HTML file to PDF
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

5. Convertir URL a Archivo PDF

1. Comparación de Características de ActivePDF vs IronPDF

5.1. URL con IronPDF

5.2. Conversión Asíncrona de URL con IronPDF

/**
 * URL to PDF
 * anchor-url-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Specify URL
    var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com");

    // Save the file
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * URL to PDF
 * anchor-url-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Specify URL
    var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com");

    // Save the file
    pdf.SaveAs("E:/Sample.pdf");
}
'''
''' * URL to PDF
''' * anchor-url-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim renderer = New ChromePdfRenderer()

	' Specify URL
	Dim pdf = renderer.RenderUrlAsPdf("https://ironpdf.com")

	' Save the file
	pdf.SaveAs("E:/Sample.pdf")
End Sub
$vbLabelText   $csharpLabel

IronPDF proporciona un excelente soporte asíncrono para un mejor rendimiento:

La clase WaitFor proporciona un control preciso sobre el tiempo de renderizado, esencial para aplicaciones con mucho JavaScript.

using IronPdf;
using System.Threading.Tasks;

static async Task Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure for complex pages
    renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
    renderer.RenderingOptions.WaitFor.JavaScript(1500); // Wait for JS

    // Async conversion
    var pdf = await renderer.RenderUrlAsPdfAsync("https://complex-spa.com");
    await pdf.SaveAsAsync("E:/async-sample.pdf");
}
using IronPdf;
using System.Threading.Tasks;

static async Task Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure for complex pages
    renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
    renderer.RenderingOptions.WaitFor.JavaScript(1500); // Wait for JS

    // Async conversion
    var pdf = await renderer.RenderUrlAsPdfAsync("https://complex-spa.com");
    await pdf.SaveAsAsync("E:/async-sample.pdf");
}
Imports IronPdf
Imports System.Threading.Tasks

Shared Async Function Main(ByVal args() As String) As Task
	Dim renderer = New ChromePdfRenderer()

	' Configure for complex pages
	renderer.RenderingOptions.WaitFor.RenderDelay(2000) ' Wait 2 seconds
	renderer.RenderingOptions.WaitFor.JavaScript(1500) ' Wait for JS

	' Async conversion
	Dim pdf = Await renderer.RenderUrlAsPdfAsync("https://complex-spa.com")
	Await pdf.SaveAsAsync("E:/async-sample.pdf")
End Function
$vbLabelText   $csharpLabel

Puede esperar elementos específicos, estados de inactividad de red o eventos JavaScript personalizados. ### 5.3. URL con ActivePDF WebGrabber

6. Crear una Marca de Agua en PDF

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify URL 
    wg.URL = "https://www.example.com/";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Specify file name
    wg.NewDocumentName = "Sample.pdf";

    // Set timeout for conversion
    wg.TimeoutSpan = new TimeSpan(0, 0, 30);

    // Convert specified URL webpage to PDF
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify URL 
    wg.URL = "https://www.example.com/";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Specify file name
    wg.NewDocumentName = "Sample.pdf";

    // Set timeout for conversion
    wg.TimeoutSpan = new TimeSpan(0, 0, 30);

    // Convert specified URL webpage to PDF
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	' Instantiate Object
	Dim wg As New WebGrabber()

	' Specify URL 
	wg.URL = "https://www.example.com/"

	' Specify the directory for newly generated file
	wg.OutputDirectory = "E:/"

	' Specify file name
	wg.NewDocumentName = "Sample.pdf"

	' Set timeout for conversion
	wg.TimeoutSpan = New TimeSpan(0, 0, 30)

	' Convert specified URL webpage to PDF
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

1. Comparación de Características de ActivePDF vs IronPDF

6.1. Marca de Agua con IronPDF

IronPDF ofrece marcas de agua flexibles a través de HTML/CSS:

Marca de agua avanzada con IronPDF:

/**
 * Watermark PDF
 * anchor-watermark-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Source HTML string
    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";

    // Create PDF
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Apply watermark with HTML/CSS
    pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
        rotation: 30, 
        opacity: 50);

    // Save the document
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * Watermark PDF
 * anchor-watermark-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Source HTML string
    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";

    // Create PDF
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Apply watermark with HTML/CSS
    pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
        rotation: 30, 
        opacity: 50);

    // Save the document
    pdf.SaveAs("E:/Sample.pdf");
}
'''
''' * Watermark PDF
''' * anchor-watermark-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	Dim renderer = New ChromePdfRenderer()

	' Source HTML string
	Dim html As String = "<h1 style='text-align:center'>WaterMark Example</h1>"

	' Create PDF
	Dim pdf = renderer.RenderHtmlAsPdf(html)

	' Apply watermark with HTML/CSS
	pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", rotation:= 30, opacity:= 50)

	' Save the document
	pdf.SaveAs("E:/Sample.pdf")
End Sub
$vbLabelText   $csharpLabel

6.2. Marca de Agua con ActivePDF WebGrabber

// Image watermark
pdf.ApplyWatermark($@"<img src='logo.png' style='width:200px'>", 
    rotation: 0, 
    opacity: 30, 
    verticalAlignment: VerticalAlignment.Middle);

// Complex HTML watermark with positioning
string complexWatermark = @"
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " + DateTime.Now.ToString() + @"</p>
    ";

pdf.ApplyWatermark(complexWatermark, rotation: 45, opacity: 25);
// Image watermark
pdf.ApplyWatermark($@"<img src='logo.png' style='width:200px'>", 
    rotation: 0, 
    opacity: 30, 
    verticalAlignment: VerticalAlignment.Middle);

// Complex HTML watermark with positioning
string complexWatermark = @"
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " + DateTime.Now.ToString() + @"</p>
    ";

pdf.ApplyWatermark(complexWatermark, rotation: 45, opacity: 25);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ActivePDF requiere usar sellos de texto como una solución alternativa:

El enfoque de ActivePDF se limita a marcas de agua solo de texto y requiere cálculos de posicionamiento manuales.

using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";
    wg.CreateFromHTMLText = html;

    // Add text stamp as watermark
    wg.AddStampText(270.0f, 350.0f, "WaterMark");

    // Configure stamp appearance
    wg.StampFontSize = 20;
    wg.StampFont = "Times New Roman";
    wg.StampFontTransparency = 1f;
    wg.StampRotation = 45.0f;
    wg.StampColorNET = new ADK.PDF.Color() 
    { 
        Red = 255, 
        Green = 0, 
        Blue = 0, 
        Gray = 0 
    };

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";
    wg.CreateFromHTMLText = html;

    // Add text stamp as watermark
    wg.AddStampText(270.0f, 350.0f, "WaterMark");

    // Configure stamp appearance
    wg.StampFontSize = 20;
    wg.StampFont = "Times New Roman";
    wg.StampFontTransparency = 1f;
    wg.StampRotation = 45.0f;
    wg.StampColorNET = new ADK.PDF.Color() 
    { 
        Red = 255, 
        Green = 0, 
        Blue = 0, 
        Gray = 0 
    };

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	Dim wg As New WebGrabber()

	Dim html As String = "<h1 style='text-align:center'>WaterMark Example</h1>"
	wg.CreateFromHTMLText = html

	' Add text stamp as watermark
	wg.AddStampText(270.0F, 350.0F, "WaterMark")

	' Configure stamp appearance
	wg.StampFontSize = 20
	wg.StampFont = "Times New Roman"
	wg.StampFontTransparency = 1F
	wg.StampRotation = 45.0F
	wg.StampColorNET = New ADK.PDF.Color() With {
		.Red = 255,
		.Green = 0,
		.Blue = 0,
		.Gray = 0
	}

	wg.OutputDirectory = "E:/"
	wg.NewDocumentName = "Sample.pdf"
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

7. Establecer Encabezados y Pies de Página para PDFs

1. Comparación de Características de ActivePDF vs IronPDF

7.1. Encabezados y Pies de Página con IronPDF

IronPDF ofrece tanto encabezados/pies de página de texto simples como complejos en HTML:

Para encabezados/pies de página más complejos usando HTML:

/**
 * Set Header Footers
 * anchor-headers-and-footers-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure text header/footer
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        LeftText = "Company Name",
        CenterText = "{page} of {total-pages}",
        RightText = "{date} {time}",
        DrawDividerLine = true,
        FontSize = 12,
        FontFamily = "Arial"
    };

    renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        CenterText = "Copyright © 2025",
        RightText = "Page {page}",
        FontSize = 10
    };

    // HTML content
    string html = "<h1>Document Content</h1><p>Lorem ipsum...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("E:/document.pdf");
}
/**
 * Set Header Footers
 * anchor-headers-and-footers-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure text header/footer
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        LeftText = "Company Name",
        CenterText = "{page} of {total-pages}",
        RightText = "{date} {time}",
        DrawDividerLine = true,
        FontSize = 12,
        FontFamily = "Arial"
    };

    renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        CenterText = "Copyright © 2025",
        RightText = "Page {page}",
        FontSize = 10
    };

    // HTML content
    string html = "<h1>Document Content</h1><p>Lorem ipsum...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("E:/document.pdf");
}
'''
''' * Set Header Footers
''' * anchor-headers-and-footers-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	Dim renderer = New ChromePdfRenderer()

	' Configure text header/footer
	renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
		.LeftText = "Company Name",
		.CenterText = "{page} of {total-pages}",
		.RightText = "{date} {time}",
		.DrawDividerLine = True,
		.FontSize = 12,
		.FontFamily = "Arial"
	}

	renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
		.CenterText = "Copyright © 2025",
		.RightText = "Page {page}",
		.FontSize = 10
	}

	' HTML content
	Dim html As String = "<h1>Document Content</h1><p>Lorem ipsum...</p>"
	Dim pdf = renderer.RenderHtmlAsPdf(html)
	pdf.SaveAs("E:/document.pdf")
End Sub
$vbLabelText   $csharpLabel

Los campos de fusión predefinidos disponibles en IronPDF incluyen:

// HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}
        ",
    Height = 50
};
// HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}
        ",
    Height = 50
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel
  • {page} - Número de página actual

  • {total-pages} - Número total de páginas
  • {url} - URL de origen (si aplica)
  • {date} - Fecha actual
  • {time} - Hora actual
  • {html-title} - Título del documento HTML
  • {pdf-title} - Título de los metadatos del PDF

7.2. Encabezados y Pies de Página con ActivePDF WebGrabber

Nota: ActivePDF utiliza marcadores de posición propietarios (%cp% para página actual, %tp% para páginas totales) y requiere construcción manual HTML.

using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = @"<h1 style='text-align:center;'>Page Content</h1>";
    wg.CreateFromHTMLText = html;

    // Configure header
    wg.HeaderHeight = 0.5f;
    wg.HeaderHTML = "<div style='float: left;'>Header Text";
    wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}";

    // Configure footer
    wg.FooterHeight = 0.5f;
    wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%";

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = @"<h1 style='text-align:center;'>Page Content</h1>";
    wg.CreateFromHTMLText = html;

    // Configure header
    wg.HeaderHeight = 0.5f;
    wg.HeaderHTML = "<div style='float: left;'>Header Text";
    wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}";

    // Configure footer
    wg.FooterHeight = 0.5f;
    wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%";

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

8. Comparación de Características Avanzadas de PDF

1. Comparación de Características de ActivePDF vs IronPDF

8.1. Creación y Manipulación de Formularios PDF

Ejemplo de Formulario IronPDF

Ejemplo de Formulario Toolkit de ActivePDF

using IronPdf;

// Create a PDF with form fields
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string formHtml = @"
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>";

var pdf = renderer.RenderHtmlAsPdf(formHtml);

// Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john@example.com";
pdf.Form.FindFormField("subscribe").Value = "Yes";

pdf.SaveAs("filled-form.pdf");
using IronPdf;

// Create a PDF with form fields
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string formHtml = @"
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>";

var pdf = renderer.RenderHtmlAsPdf(formHtml);

// Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john@example.com";
pdf.Form.FindFormField("subscribe").Value = "Yes";

pdf.SaveAs("filled-form.pdf");
Imports IronPdf

' Create a PDF with form fields
Private renderer = New ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

Dim formHtml As String = "
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>"

Dim pdf = renderer.RenderHtmlAsPdf(formHtml)

' Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe"
pdf.Form.FindFormField("email").Value = "john@example.com"
pdf.Form.FindFormField("subscribe").Value = "Yes"

pdf.SaveAs("filled-form.pdf")
$vbLabelText   $csharpLabel

8.2. Cumplimiento PDF/A

// ActivePDF requires separate Toolkit component for forms
APToolkitNET.Toolkit toolkit = new APToolkitNET.Toolkit();

// Open existing PDF
toolkit.OpenInputFile("form-template.pdf");

// Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997);
toolkit.SetFormFieldData("email", "john@example.com", -997);

// Save filled form
toolkit.CopyForm(0, 0);
toolkit.SaveAs("filled-form.pdf");
// ActivePDF requires separate Toolkit component for forms
APToolkitNET.Toolkit toolkit = new APToolkitNET.Toolkit();

// Open existing PDF
toolkit.OpenInputFile("form-template.pdf");

// Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997);
toolkit.SetFormFieldData("email", "john@example.com", -997);

// Save filled form
toolkit.CopyForm(0, 0);
toolkit.SaveAs("filled-form.pdf");
' ActivePDF requires separate Toolkit component for forms
Dim toolkit As New APToolkitNET.Toolkit()

' Open existing PDF
toolkit.OpenInputFile("form-template.pdf")

' Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997)
toolkit.SetFormFieldData("email", "john@example.com", -997)

' Save filled form
toolkit.CopyForm(0, 0)
toolkit.SaveAs("filled-form.pdf")
$vbLabelText   $csharpLabel

Ambas bibliotecas admiten PDF/A, pero con diferentes enfoques:

PDF/A de IronPDF

PDF/A de ActivePDF DocConverter

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>");

// Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B);
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>");

// Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B);
Imports IronPdf

Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>")

' Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B)
$vbLabelText   $csharpLabel

8.3. Firmas Digitales

// Requires DocConverter component
DocConverter dc = new DocConverter();
dc.SetPDFACompliance(PDFACompliance.PDFA2B);
dc.ConvertToPDF("input.html", "output.pdf");
// Requires DocConverter component
DocConverter dc = new DocConverter();
dc.SetPDFACompliance(PDFACompliance.PDFA2B);
dc.ConvertToPDF("input.html", "output.pdf");
' Requires DocConverter component
Dim dc As New DocConverter()
dc.SetPDFACompliance(PDFACompliance.PDFA2B)
dc.ConvertToPDF("input.html", "output.pdf")
$vbLabelText   $csharpLabel

Firma Digital de IronPDF

8.4. Comparación de Procesamiento por Lotes

using IronPdf;
using IronPdf.Signing;

// Load or create PDF
var pdf = PdfDocument.FromFile("document.pdf");

// Create signature with certificate
var signature = new PdfSignature("certificate.pfx", "password");

// Configure signature appearance
signature.SignatureImage = new PdfSignatureImage("signature.png");
signature.SigningContact = "john@company.com";
signature.SigningReason = "Document Approval";

// Apply signature
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;

// Load or create PDF
var pdf = PdfDocument.FromFile("document.pdf");

// Create signature with certificate
var signature = new PdfSignature("certificate.pfx", "password");

// Configure signature appearance
signature.SignatureImage = new PdfSignatureImage("signature.png");
signature.SigningContact = "john@company.com";
signature.SigningReason = "Document Approval";

// Apply signature
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing

' Load or create PDF
Private pdf = PdfDocument.FromFile("document.pdf")

' Create signature with certificate
Private signature = New PdfSignature("certificate.pfx", "password")

' Configure signature appearance
signature.SignatureImage = New PdfSignatureImage("signature.png")
signature.SigningContact = "john@company.com"
signature.SigningReason = "Document Approval"

' Apply signature
pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

Procesamiento por Lotes de ActivePDF DocConverter

Procesamiento por Lote de IronPDF

using IronPdf;
using System.Threading.Tasks;
using System.IO;

static async Task BatchConvertAsync()
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();

    foreach (var file in Directory.GetFiles("input", "*.html"))
    {
        tasks.Add(Task.Run(async () =>
        {
            var pdf = await renderer.RenderHtmlFileAsPdfAsync(file);
            var outputPath = Path.Combine("output", 
                Path.GetFileNameWithoutExtension(file) + ".pdf");
            await pdf.SaveAsAsync(outputPath);
        }));
    }

    await Task.WhenAll(tasks);
}
using IronPdf;
using System.Threading.Tasks;
using System.IO;

static async Task BatchConvertAsync()
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();

    foreach (var file in Directory.GetFiles("input", "*.html"))
    {
        tasks.Add(Task.Run(async () =>
        {
            var pdf = await renderer.RenderHtmlFileAsPdfAsync(file);
            var outputPath = Path.Combine("output", 
                Path.GetFileNameWithoutExtension(file) + ".pdf");
            await pdf.SaveAsAsync(outputPath);
        }));
    }

    await Task.WhenAll(tasks);
}
Imports IronPdf
Imports System.Threading.Tasks
Imports System.IO

Shared Async Function BatchConvertAsync() As Task
	Dim renderer = New ChromePdfRenderer()
	Dim tasks = New List(Of Task)()

	For Each file In Directory.GetFiles("input", "*.html")
		tasks.Add(Task.Run(Async Function()
			Dim pdf = Await renderer.RenderHtmlFileAsPdfAsync(file)
			Dim outputPath = Path.Combine("output", Path.GetFileNameWithoutExtension(file) & ".pdf")
			Await pdf.SaveAsAsync(outputPath)
		End Function))
	Next file

	Await Task.WhenAll(tasks)
End Function
$vbLabelText   $csharpLabel

9. Comparación de Rendimiento y Recursos

// DocConverter supports watched folders for automatic conversion
DocConverter dc = new DocConverter();

// Configure watched folder
dc.AddWatchedFolder(@"C:\Input", @"C:\Output", "*.html");
dc.StartWatching();

// Files dropped in the input folder are automatically converted
// DocConverter supports watched folders for automatic conversion
DocConverter dc = new DocConverter();

// Configure watched folder
dc.AddWatchedFolder(@"C:\Input", @"C:\Output", "*.html");
dc.StartWatching();

// Files dropped in the input folder are automatically converted
' DocConverter supports watched folders for automatic conversion
Dim dc As New DocConverter()

' Configure watched folder
dc.AddWatchedFolder("C:\Input", "C:\Output", "*.html")
dc.StartWatching()

' Files dropped in the input folder are automatically converted
$vbLabelText   $csharpLabel

1. Comparación de Características de ActivePDF vs IronPDF

¿Cómo se comparan las bibliotecas en términos de rendimiento?

Basado en pruebas de rendimiento y uso en el mundo real:

Métricas de Rendimiento de IronPDF

  • Renderizado HTML: ~125ms para contenido simple

  • Sitios complejos: 835ms (probado en sitios web estáticos)
  • Uso de memoria: Menos de 10MB típico
  • Inicio inicial: 2-3 segundos (inicialización del motor Chrome)
  • Reducción del 75% en uso de memoria para encabezados/pies de... HTML/CSS: Marca de agua avanzada con IronPDF:

Su posición.

10. Descripción General de Componentes ActivePDF

¿Qué otros componentes ActivePDF están disponibles?

    <th style="width: 35px;">Componente</th>
// Dispose of resources properly
using (var renderer = new ChromePdfRenderer())
{
    using (var pdf = renderer.RenderHtmlAsPdf(html))
    {
        pdf.SaveAs("output.pdf");
    }
}

// For large documents, use streaming
await pdf.Stream.CopyToAsync(fileStream);
// Dispose of resources properly
using (var renderer = new ChromePdfRenderer())
{
    using (var pdf = renderer.RenderHtmlAsPdf(html))
    {
        pdf.SaveAs("output.pdf");
    }
}

// For large documents, use streaming
await pdf.Stream.CopyToAsync(fileStream);
' Dispose of resources properly
Using renderer = New ChromePdfRenderer()
	Using pdf = renderer.RenderHtmlAsPdf(html)
		pdf.SaveAs("output.pdf")
	End Using
End Using

' For large documents, use streaming
Await pdf.Stream.CopyToAsync(fileStream)
$vbLabelText   $csharpLabel
    <th style="width: 65px;">Propósito y Características</th>

1. Comparación de Características de ActivePDF vs IronPDF

    <td>Convierte más de 300 tipos de archivo a PDF. Presenta carpetas vigiladas, procesamiento por lotes y automatización empresarial.</td>

    <td>ActivePDF WebGrabber</td>

1. Comparación de Características de ActivePDF vs IronPDF

    <td>Conversión de HTML a PDF con soporte para URLs, archivos y cadenas HTML. Incluye motores de renderizado Nativo y de IE.</td>

  </tr>

  <tr>

    <td>ActivePDF Toolkit</td>
    <td>Manipulación avanzada de PDF, incluidos formularios, anotaciones, seguridad y operaciones de bajo nivel en PDF.</td>
  </tr>
  <tr>
    <td>ActivePDF Server</td>

    <td>Solución de impresión de PDF basada en servidor para entornos de red.</td>

  </tr>
  • DocConverter: A partir de $2,999 (pago único)
  • Toolkit: A partir de $1,500+ (varía según las características)
  • Soporte: Coste adicional por soporte premium
  • Múltiples Componentes: Los costos se acumulan rápidamente

Ejemplo de Costo Total de Propiedad

Escenario: Equipo de Desarrollo Pequeño (3 desarrolladores)

  • IronPDF Plus License: $1,499 (todas las funciones incluidas)
  • ActivePDF WebGrabber + DocConverter: $5,498 mínimo
  • Ahorros con IronPDF: 73%

Escenario: Equipo Empresarial (10 desarrolladores)

  • IronPDF Professional: $2,999 (todas las características)
  • ActivePDF Suite (múltiples componentes): $10,000+
  • Ahorros con IronPDF: 70%+

1. Comparación de Características de ActivePDF vs IronPDF

12. Soporte y Documentación

¿Qué biblioteca ofrece mejor soporte para desarrolladores?

Soporte de IronPDF

  • Soporte de ingeniería 24/5 incluido con todas las licencias
  • Acceso directo al equipo de desarrollo
  • Documentación completa con más de 100 ejemplos
  • Comunidad activa y foros
  • Actualizaciones y mejoras regulares
  • Tiempo de respuesta: 24-48 horas típico

Soporte de ActivePDF

  • Acceso al portal de soporte
  • Artículos de base de conocimientos
  • Foros de comunidad
  • Soporte premium disponible a costo adicional
  • Documentación antigua para versiones anteriores

1. Comparación de Características de ActivePDF vs IronPDF

Conclusión: ¿Qué biblioteca PDF deberías elegir?

Cuándo Elegir IronPDF:

  • Desarrollo Moderno .NET: Soporte completo para .NET 9/10 y despliegue multiplataforma
  • Desarrollo Rápido: API intuitiva requiere código mínimo
  • Aplicaciones Web: Renderizado superior de HTML/CSS/JavaScript con el motor de Chrome
  • Despliegue en la Nube: Optimizado para Azure, AWS y entornos containerizados
  • Consciente del Presupuesto: Bajo costo de entrada con todas las características incluidas
  • Curva de Aprendizaje: Documentación extensa y ejemplos para una adopción rápida

Cuándo Elegir ActivePDF:

  • Sistemas Legados: Infraestructura ActivePDF existente o entornos de Windows Server
  • Formatos de Archivo Diversos: Necesidad de convertir más de 300 tipos de archivos a PDF
  • Flujos de Trabajo Empresariales: Carpetas vigiladas y procesamiento por lotes automatizado
  • Formularios Avanzados: Formularios XFA complejos o requerimientos de formularios especializados
  • Requisitos de Cumplimiento: Múltiples niveles de PDF/A para industrias específicas

Recomendación Final

Para la mayoría de los escenarios de desarrollo moderno .NET, IronPDF ofrece la mejor combinación de características, rendimiento y valor. Su API intuitiva, documentación completa y precios transparentes lo hacen ideal para equipos que buscan implementar funcionalidad PDF de manera rápida y eficiente.

ActivePDF sigue siendo una opción viable para empresas con requisitos específicos en torno al soporte de formatos de archivo, integración de sistemas legados, o infraestructura ActivePDF existente. Sin embargo, el modelo de precios modular y el proceso de instalación complejo pueden presentar desafíos para equipos más pequeños o nuevos proyectos.

¿Listo para Comenzar?

Comience a usar IronPDF en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer

Por favor notaActivePDF es una marca registrada de su respectivo propietario. Este sitio no está afiliado, respaldado, ni patrocinado por ActivePDF. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son solo para fines informativos y reflejan información públicamente disponible en el momento de la redacción.

Preguntas Frecuentes

¿Cómo se comparan IronPDF y ActivePDF para la generación de PDF en .NET?

IronPDF ofrece un enfoque simplificado para la generación de PDF con un motor de renderizado basado en Chrome y APIs intuitivas, que soportan versiones modernas de .NET, incluyendo .NET 9 y 10. ActivePDF proporciona componentes modulares como WebGrabber y DocConverter para escenarios empresariales, pero requiere más configuración.

¿Cómo puedo convertir HTML a PDF usando C#?

Puedes usar el método RenderHtmlAsPdf de IronPDF para convertir rápidamente cadenas de HTML en PDFs. Para la conversión basada en archivos, está disponible el método RenderHtmlFileAsPdf, ambos ofrecen alta fidelidad con soporte para CSS3 y JavaScript.

¿Cuáles son los puntos de referencia de rendimiento para IronPDF?

IronPDF demuestra un rápido renderizado de HTML a PDF, completando tareas en aproximadamente 125-835ms con un uso de memoria inferior a 10MB. También ofrece mejoras significativas de memoria y procesamiento para encabezados y pies de página.

¿Puedo automatizar el procesamiento por lotes de PDF con IronPDF?

Sí, IronPDF soporta el procesamiento por lotes a través de patrones async/await, permitiéndote manejar múltiples conversiones de PDF simultáneamente usando métodos como RenderHtmlFileAsPdfAsync.

¿Cómo maneja IronPDF las firmas digitales en PDFs?

IronPDF proporciona una clase PdfSignature para agregar firmas digitales a documentos PDF. Soporta firma basada en certificado y permite la personalización de la apariencia y los metadatos de la firma.

¿Cuáles son las consideraciones de costo para el uso de IronPDF en el desarrollo .NET?

Las licencias de IronPDF comienzan en $749 para desarrolladores individuales, incluyendo todas las características. En comparación, los componentes de ActivePDF se valoran por separado, llevando a costos totales más altos para funcionalidades similares.

¿Cómo asegura IronPDF la compatibilidad multiplataforma?

IronPDF soporta el despliegue multiplataforma, incluyendo entornos Windows, Linux, macOS y Docker, lo que lo hace adecuado para diversas necesidades de desarrollo y aplicaciones basadas en la nube.

¿Cómo puedo agregar encabezados y pies de página a PDFs usando IronPDF?

IronPDF proporciona las clases TextHeaderFooter y HtmlHeaderFooter, permitiendo añadir encabezados y pies de página tanto con texto simple como con diseños complejos de HTML/CSS.

¿Qué tan bien se integra IronPDF con las versiones modernas de .NET?

IronPDF soporta plenamente las versiones modernas de .NET, incluyendo .NET 9 y 10, así como .NET Core, .NET Standard y .NET Framework 4.6.2+, asegurando una amplia compatibilidad y un desarrollo a prueba de futuro.

¿Existe soporte para la ejecución de JavaScript durante la conversión de PDF?

Sí, IronPDF ejecuta completamente JavaScript antes de renderizar PDFs, con opciones para controlar el tiempo usando WaitFor.JavaScript() y RenderDelay(), asegurando conversiones completas y precisas.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más