Saltar al pie de página
USANDO IRONPDF

Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.

View Full Comparison

Cómo agregar encabezados y pies de página a documentos PDF en C

Añadir encabezados y pies de página a los documentos PDF es esencial para crear informes, facturas y documentos comerciales profesionales. Los desarrolladores que buscan soluciones de iTextSharp utilizando PdfPageEventHelper y el método OnEndPage encontrarán que las bibliotecas modernas de .NET ofrecen enfoques significativamente más simples para lograr los mismos resultados.

Esta guía demuestra cómo agregar encabezados y pies de página en archivos PDF usando C#, comparando el enfoque tradicional de iText 7 con la API concisa de IronPDF . Al final, comprenderás ambas implementaciones, desde crear un nuevo Document hasta generar el archivo PDF final, y podrás elegir el enfoque que mejor se adapte a los requerimientos de tu proyecto.

Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 1 - IronPDF

¿Por qué son importantes los encabezados y pies de página en documentos PDF?

Los encabezados y pies de página desempeñan funciones críticas en los documentos PDF profesionales. Las traducciones deben ser coherentes con la marca mediante logotipos de imágenes, permitir la navegación por páginas con números de página, mostrar metadatos importantes como fechas y títulos de documentos, y establecer la autenticidad del documento mediante marcas de tiempo e información sobre la versión.

En entornos empresariales, los encabezados y pies de página suelen tener importancia jurídica. Los informes financieros requieren marcas de tiempo para realizar auditorías. Los contratos necesitan una numeración de páginas para garantizar su integridad. Los documentos internos pueden requerir avisos de confidencialidad en cada página. Cumplir estos requisitos mediante programación requiere una biblioteca PDF que gestione de forma fiable la inyección de contenido a nivel de página.

Las razones principales para agregar encabezados y pies de página mediante programación incluyen:

  • Cumplimiento de auditoría : las marcas de tiempo y los números de versión en cada página satisfacen los requisitos reglamentarios
  • Coherencia de marca : los logotipos y el estilo de la empresa se aplican de manera uniforme en todos los documentos generados
  • Navegación : los números de página y los títulos de las secciones ayudan a los lectores a localizar la información rápidamente.
  • Autenticidad : el nombre del autor, la fecha de creación y la identificación del documento evitan disputas sobre la integridad del documento.

Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 2 - Funciones

¿Cómo agregar un encabezado y pie de página de texto en C#?

IronPDF proporciona el enfoque más directo para agregar encabezados y pies de página a documentos PDF en aplicaciones .NET . Usando la clase ChromePdfRenderer combinada con TextHeaderFooter o HtmlHeaderFooter, se pueden generar encabezados y pies de página con código mínimo, sin necesidad de crear celdas separadas o gestionar manualmente un objeto contentbyte.

Antes de escribir cualquier código, agregue IronPDF a su proyecto usando NuGet:

Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
SHELL

La biblioteca no requiere dependencias externas y funciona inmediatamente después de su instalación. Está dirigido a .NET 5, 6, 7, 8 y 10, y se ejecuta en Windows, Linux y macOS sin configuración específica de la plataforma.

En patrones más antiguos de iTextSharp, los desarrolladores creaban métodos auxiliares como private static void AddContent() para inyectar manualmente la lógica de encabezados y pies de página. IronPDF elimina por completo la necesidad de este tipo de repeticiones.

A continuación se muestra un ejemplo completo que agrega un encabezado de texto y un pie de página a un archivo PDF:

using IronPdf;

// Initialize the PDF renderer
var renderer = new ChromePdfRenderer();

// Configure the text header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Quarterly Sales Report",
    DrawDividerLine = true,
    FontSize = 14
};

// Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    LeftText = "{date}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 10
};

// Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;

// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>");
pdf.SaveAs("report-with-headers.pdf");
using IronPdf;

// Initialize the PDF renderer
var renderer = new ChromePdfRenderer();

// Configure the text header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Quarterly Sales Report",
    DrawDividerLine = true,
    FontSize = 14
};

// Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    LeftText = "{date}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 10
};

// Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;

// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>");
pdf.SaveAs("report-with-headers.pdf");
Imports IronPdf

' Initialize the PDF renderer
Dim renderer = New ChromePdfRenderer()

' Configure the text header
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
    .CenterText = "Quarterly Sales Report",
    .DrawDividerLine = True,
    .FontSize = 14
}

' Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
    .LeftText = "{date}",
    .RightText = "Page {page} of {total-pages}",
    .DrawDividerLine = True,
    .FontSize = 10
}

' Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25

' Generate PDF from HTML content
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>")
pdf.SaveAs("report-with-headers.pdf")
$vbLabelText   $csharpLabel

La clase TextHeaderFooter proporciona propiedades para posicionar texto a la izquierda, centro o derecha del área de encabezado o pie de página. La propiedad DrawDividerLine añade una línea de separación profesional entre el encabezado o pie de página y el contenido principal del documento. Los campos fusionables como {page}, {total-pages} y {date} se completan automáticamente con valores dinámicos durante la generación del PDF.

IronPDF maneja los cálculos de márgenes automáticamente, garantizando que los encabezados y pies de página no se superpongan con el contenido del documento. La clase TextHeaderFooter admite tipos de fuente de IronSoftware.Drawing.FontTypes, brindando control sobre la tipografía sin dependencias externas.

Resultado

Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 4 - Salida del PDF

Observa cómo toda la implementación cabe en un único bloque de código con asignaciones de propiedades claras y legibles. No es necesario crear un archivo de clase separado, calcular posiciones de píxeles ni administrar objetos de lienzo. La biblioteca abstrae estas complejidades y le permite centrarse en el contenido en lugar de en la mecánica de la generación de PDF.

¿Cómo crear encabezados y pies de página con estilo HTML?

Para diseños más sofisticados, la clase HtmlHeaderFooter de IronPDF permite un estilo HTML y CSS completo. Este enfoque es particularmente valioso cuando los encabezados necesitan incluir un logotipo de imagen, diseños complejos o estilo específico de la marca, sin crear manualmente objetos PdfPCell ni utilizar constructores new Phrase.

using IronPdf;
using System;

var renderer = new ChromePdfRenderer();

// Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    MaxHeight = 25,
    DrawDividerLine = true,
    BaseUrl = new Uri(@"C:\assets\").AbsoluteUri
};

// Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    MaxHeight = 20
};

renderer.RenderingOptions.MarginTop = 30;
renderer.RenderingOptions.MarginBottom = 25;

var pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>");
pdf.SaveAs("styled-document.pdf");
using IronPdf;
using System;

var renderer = new ChromePdfRenderer();

// Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    MaxHeight = 25,
    DrawDividerLine = true,
    BaseUrl = new Uri(@"C:\assets\").AbsoluteUri
};

// Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    MaxHeight = 20
};

renderer.RenderingOptions.MarginTop = 30;
renderer.RenderingOptions.MarginBottom = 25;

var pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>");
pdf.SaveAs("styled-document.pdf");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

' Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    .MaxHeight = 25,
    .DrawDividerLine = True,
    .BaseUrl = New Uri("C:\assets\").AbsoluteUri
}

' Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    .MaxHeight = 20
}

renderer.RenderingOptions.MarginTop = 30
renderer.RenderingOptions.MarginBottom = 25

Dim pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>")
pdf.SaveAs("styled-document.pdf")
$vbLabelText   $csharpLabel

Este código de ejemplo muestra cómo las cabeceras HTML pueden incorporar imágenes junto con el texto. La propiedad BaseUrl establece la ruta raíz para resolver URLs de imágenes relativas, facilitando la inclusión de logotipos de la empresa u otros gráficos. La propiedad MaxHeight asegura que el encabezado no exceda las dimensiones especificadas, manteniendo diseños de documentos consistentes.

Los campos fusionables ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}) funcionan de manera idéntica en encabezados y pies de página HTML, proporcionando inserciones de contenido dinámico sin código adicional. Para obtener orientación sobre cómo implementar varios estilos de encabezado, consulte la Guía práctica de encabezados y pies de página .

El enfoque HTML brilla al crear documentos de marca. Los equipos de marketing pueden proporcionar plantillas HTML que los desarrolladores integran directamente, garantizando una reproducción perfecta de los diseños aprobados. Las propiedades CSS como font-family, color, background-color y border funcionan como se espera, permitiendo tratamientos visuales sofisticados que requerirían un extenso código de bajo nivel en otras bibliotecas.

Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 3 - Cómo agregar encabezado y pie de página en PDF - IronPDF

¿Cómo se pueden añadir encabezados a documentos PDF existentes?

Un requisito común implica agregar encabezados y pies de página a archivos PDF que ya existen, ya sean documentos cargados, archivos fusionados o PDF generados por otros sistemas. IronPDF maneja este escenario con los métodos AddHtmlHeaders y AddHtmlFooters.

using IronPdf;

// Load an existing PDF document
var pdf = PdfDocument.FromFile("customer-profile.pdf");

// Define the header to add
var header = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    MaxHeight = 20
};

// Define the footer to add
var footer = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    MaxHeight = 15
};

// Apply headers and footers to all pages
pdf.AddHtmlHeaders(header);
pdf.AddHtmlFooters(footer);
pdf.SaveAs("document-with-new-headers.pdf");
using IronPdf;

// Load an existing PDF document
var pdf = PdfDocument.FromFile("customer-profile.pdf");

// Define the header to add
var header = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    MaxHeight = 20
};

// Define the footer to add
var footer = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    MaxHeight = 15
};

// Apply headers and footers to all pages
pdf.AddHtmlHeaders(header);
pdf.AddHtmlFooters(footer);
pdf.SaveAs("document-with-new-headers.pdf");
Imports IronPdf

' Load an existing PDF document
Dim pdf = PdfDocument.FromFile("customer-profile.pdf")

' Define the header to add
Dim header As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    .MaxHeight = 20
}

' Define the footer to add
Dim footer As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    .MaxHeight = 15
}

' Apply headers and footers to all pages
pdf.AddHtmlHeaders(header)
pdf.AddHtmlFooters(footer)
pdf.SaveAs("document-with-new-headers.pdf")
$vbLabelText   $csharpLabel

La clase PdfDocument representa un PDF cargado o renderizado y proporciona métodos para modificaciones posteriores al renderizado. Esta separación entre renderización y modificación permite flujos de trabajo en los que los documentos PDF pasan por varias etapas de procesamiento. El método AddHtmlHeaders aplica automáticamente el encabezado a cada página, aunque también puedes dirigirte a páginas específicas pasando una colección de índices de página.

Entrada

Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 6 - Entrada de muestra

Resultado

Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 7 - Salida del encabezado del PDF existente

Esta capacidad resulta inestimable en sistemas de gestión de documentos que reciben archivos PDF de diversas fuentes, como documentos escaneados, cargas de usuarios o respuestas de API de terceros. IronPDF estandariza la marca o la numeración de las páginas antes de su distribución o archivo.

¿Cómo agregar diferentes encabezados en diferentes páginas?

Algunos documentos requieren que la primera página tenga un encabezado diferente (o ningún encabezado), mientras que las páginas posteriores utilizan un formato estándar. IronPDF permite esto a través de la aplicación de encabezados basada en índices de página, sin necesidad de verificar condiciones dentro de los manejadores void OnEndPage o gestionar contadores de bucles manualmente:

using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Text;

var renderer = new ChromePdfRenderer();

// Build multi-page HTML with print page-breaks between pages
var pages = new List<string>
{
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
};

var sb = new StringBuilder();
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>");
sb.AppendLine("<style>");
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }");
sb.AppendLine("  .page-break { page-break-after: always; }");
sb.AppendLine("</style>");
sb.AppendLine("</head><body>");

for (int i = 0; i < pages.Count; i++)
{
    sb.AppendLine(pages[i]);
    if (i < pages.Count - 1)
        sb.AppendLine("<div class='page-break'></div>");
}
sb.AppendLine("</body></html>");

var pdf = renderer.RenderHtmlAsPdf(sb.ToString());

// Create the standard header for pages 2 onwards
var standardHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    MaxHeight = 20
};

// Apply to all pages except the first (index 0)
var pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList();
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices);
pdf.SaveAs("document-skip-first-page-header.pdf");
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Text;

var renderer = new ChromePdfRenderer();

// Build multi-page HTML with print page-breaks between pages
var pages = new List<string>
{
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
};

var sb = new StringBuilder();
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>");
sb.AppendLine("<style>");
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }");
sb.AppendLine("  .page-break { page-break-after: always; }");
sb.AppendLine("</style>");
sb.AppendLine("</head><body>");

for (int i = 0; i < pages.Count; i++)
{
    sb.AppendLine(pages[i]);
    if (i < pages.Count - 1)
        sb.AppendLine("<div class='page-break'></div>");
}
sb.AppendLine("</body></html>");

var pdf = renderer.RenderHtmlAsPdf(sb.ToString());

// Create the standard header for pages 2 onwards
var standardHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    MaxHeight = 20
};

// Apply to all pages except the first (index 0)
var pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList();
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices);
pdf.SaveAs("document-skip-first-page-header.pdf");
Imports IronPdf
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text

Dim renderer As New ChromePdfRenderer()

' Build multi-page HTML with print page-breaks between pages
Dim pages As New List(Of String) From {
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
}

Dim sb As New StringBuilder()
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>")
sb.AppendLine("<style>")
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }")
sb.AppendLine("  .page-break { page-break-after: always; }")
sb.AppendLine("</style>")
sb.AppendLine("</head><body>")

For i As Integer = 0 To pages.Count - 1
    sb.AppendLine(pages(i))
    If i < pages.Count - 1 Then
        sb.AppendLine("<div class='page-break'></div>")
    End If
Next
sb.AppendLine("</body></html>")

Dim pdf = renderer.RenderHtmlAsPdf(sb.ToString())

' Create the standard header for pages 2 onwards
Dim standardHeader As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    .MaxHeight = 20
}

' Apply to all pages except the first (index 0)
Dim pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList()
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices)
pdf.SaveAs("document-skip-first-page-header.pdf")
$vbLabelText   $csharpLabel

El segundo parámetro en AddHtmlHeaders especifica el número de página inicial para el campo fusionable {page}, mientras que el tercer parámetro acepta una colección de índices de página para recibir el encabezado. Este control granular permite diseñar documentos complejos sin una lógica condicional enrevesada. El ejemplo de Encabezados y pies de página avanzados cubre escenarios adicionales, incluida la diferenciación de páginas pares e impares.

Resultado

Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 9 - Diferentes encabezados para diferentes páginas

¿Cómo implementar contenido dinámico más allá de los números de página?

El sistema de campos fusionables admite varios valores dinámicos que se completan automáticamente durante la representación. La siguiente tabla enumera todos los campos disponibles y sus significados:

Campos fusionables admitidos en encabezados y pies de página de IronPDF
Campo Valor insertado Uso típico
`{page}` Número de página actual Pies de página que muestran "Página 3"
`{total-pages}` Número total de páginas Pies de página que muestran "Página 3 de 10"
`{date}` Fecha actual en formato local Marcas de tiempo de auditoría, fechas de informes
`{time}` Hora actual en formato local Pies de página de cumplimiento normativo
`{html-title}` Contenido de la etiqueta HTML ``</td> <td>Encabezados de documentos que muestran el título de la página</td> </tr> <tr> <td>`{pdf-title}`</td> <td>Título de metadatos del documento PDF</td> <td>Pies de página de marca con el nombre del documento</td> </tr> <tr> <td>`{url}`</td> <td>URL de origen al renderizar desde una dirección web</td> <td>Pies de página de archivo para contenido web</td> </tr> </tbody> </table> <p>Para contenido verdaderamente dinámico, valores determinados en tiempo de ejecución, puedes construir la cadena de fragmentos HTML con valores interpolados antes de asignarla a la propiedad <code>HtmlFragment</code>. Este enfoque permite incluir cabeceras con valores recuperados de bases de datos, información del usuario o datos calculados:</p> <pre class='naked-code'><code class="language-csharp">using IronPdf; string userName = GetCurrentUserName(); string documentVersion = "v2.3.1"; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " + $"| Version: {documentVersion} " + "| Page {page} of {total-pages}</div>", MaxHeight = 20 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>"); pdf.SaveAs("dynamic-header-report.pdf");</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Haga clic para copiar" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Haga clic para copiar" data-copied-text="Copiado al portapapeles" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Modo Completo" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Salir de Pantalla Completa" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using IronPdf; string userName = GetCurrentUserName(); string documentVersion = "v2.3.1"; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " + $"| Version: {documentVersion} " + "| Page {page} of {total-pages}</div>", MaxHeight = 20 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>"); pdf.SaveAs("dynamic-header-report.pdf");</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports IronPdf Dim userName As String = GetCurrentUserName() Dim documentVersion As String = "v2.3.1" Dim renderer As New ChromePdfRenderer() renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With { .HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " & $"| Version: {documentVersion} " & "| Page {page} of {total-pages}</div>", .MaxHeight = 20 } Dim pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>") pdf.SaveAs("dynamic-header-report.pdf")</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p>Nota que los tokens <code>{page}</code> y <code>{total-pages}</code> se dejan como cadenas simples dentro de la concatenación de cadenas de C# -- no dentro de la parte interpolada. Durante la representación de PDF, IronPDF reemplaza esos tokens automáticamente. Este patrón funciona para cualquier valor de tiempo de ejecución: nombres de usuario de Active Directory, ID de documentos de una base de datos, cadenas de versión de su canal de compilación o totales calculados de su motor de informes.</p> <p>La combinación de campos fusionables y la interpolación de cadenas permite diseños de pie de página sofisticados comunes en documentos comerciales. Los departamentos jurídicos suelen necesitar pies de página con el título del documento, la fecha y el número de páginas. Los informes financieros pueden necesitar marcas de tiempo para cumplir la normativa. Estos requisitos se cumplen sin código personalizado para cada tipo de documento.</p> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-36-49c36-49mo-es-el-enfoque-de-itext-7" data-heading-level="2" data-heading-text="¿Cómo es el enfoque de iText 7?"> <h2 id="anchor-36-49c36-49mo-es-el-enfoque-de-itext-7">¿Cómo es el enfoque de iText 7?</h2> <p>Los desarrolladores familiarizados con iText 7 (el sucesor de iTextSharp) saben que para añadir encabezados y pies de página es necesario implementar controladores de eventos. La biblioteca utiliza un sistema de eventos de página donde creas una clase que responde a eventos del ciclo de vida del documento como <code>OnEndPage</code> y <code>OnCloseDocument</code>.</p> <p>Así es como se ve la misma implementación de encabezado y pie de página con iText 7, usando el patrón <code>ITextEvents</code>:</p> <pre class='naked-code'><code class="language-csharp">using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using iText.Kernel.Events; using iText.Kernel.Geom; using iText.Layout.Properties; // Event handler class for headers and footers -- similar to PdfPageEventHelper public class ITextEvents : IEventHandler { private string _header; public string Header { get { return _header; } set { _header = value; } } public void HandleEvent(Event currentEvent) { PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent; PdfDocument pdfDoc = docEvent.GetDocument(); PdfPage page = docEvent.GetPage(); Rectangle pageSize = page.GetPageSize(); // Create a new PdfCanvas for the contentbyte object PdfCanvas pdfCanvas = new PdfCanvas( page.NewContentStreamBefore(), page.GetResources(), pdfDoc); Canvas canvas = new Canvas(pdfCanvas, pageSize); // Add header text at calculated position canvas.ShowTextAligned( new Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER); // Add footer with page number int pageNumber = pdfDoc.GetPageNumber(page); canvas.ShowTextAligned( new Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER); canvas.Close(); } } // Usage in main code var writer = new PdfWriter("report.pdf"); var pdfDoc = new PdfDocument(writer); var document = new Document(pdfDoc); // Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new ITextEvents()); document.Add(new Paragraph("Sales Data")); document.Add(new Paragraph("Content goes here...")); document.Close();</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Haga clic para copiar" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Haga clic para copiar" data-copied-text="Copiado al portapapeles" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Modo Completo" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Salir de Pantalla Completa" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using iText.Kernel.Events; using iText.Kernel.Geom; using iText.Layout.Properties; // Event handler class for headers and footers -- similar to PdfPageEventHelper public class ITextEvents : IEventHandler { private string _header; public string Header { get { return _header; } set { _header = value; } } public void HandleEvent(Event currentEvent) { PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent; PdfDocument pdfDoc = docEvent.GetDocument(); PdfPage page = docEvent.GetPage(); Rectangle pageSize = page.GetPageSize(); // Create a new PdfCanvas for the contentbyte object PdfCanvas pdfCanvas = new PdfCanvas( page.NewContentStreamBefore(), page.GetResources(), pdfDoc); Canvas canvas = new Canvas(pdfCanvas, pageSize); // Add header text at calculated position canvas.ShowTextAligned( new Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER); // Add footer with page number int pageNumber = pdfDoc.GetPageNumber(page); canvas.ShowTextAligned( new Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER); canvas.Close(); } } // Usage in main code var writer = new PdfWriter("report.pdf"); var pdfDoc = new PdfDocument(writer); var document = new Document(pdfDoc); // Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new ITextEvents()); document.Add(new Paragraph("Sales Data")); document.Add(new Paragraph("Content goes here...")); document.Close();</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports iText.Kernel.Pdf Imports iText.Layout Imports iText.Layout.Element Imports iText.Kernel.Events Imports iText.Kernel.Geom Imports iText.Layout.Properties ' Event handler class for headers and footers -- similar to PdfPageEventHelper Public Class ITextEvents Implements IEventHandler Private _header As String Public Property Header As String Get Return _header End Get Set(value As String) _header = value End Set End Property Public Sub HandleEvent(currentEvent As [Event]) Implements IEventHandler.HandleEvent Dim docEvent As PdfDocumentEvent = CType(currentEvent, PdfDocumentEvent) Dim pdfDoc As PdfDocument = docEvent.GetDocument() Dim page As PdfPage = docEvent.GetPage() Dim pageSize As Rectangle = page.GetPageSize() ' Create a new PdfCanvas for the contentbyte object Dim pdfCanvas As New PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), pdfDoc) Dim canvas As New Canvas(pdfCanvas, pageSize) ' Add header text at calculated position canvas.ShowTextAligned(New Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER) ' Add footer with page number Dim pageNumber As Integer = pdfDoc.GetPageNumber(page) canvas.ShowTextAligned(New Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER) canvas.Close() End Sub End Class ' Usage in main code Dim writer As New PdfWriter("report.pdf") Dim pdfDoc As New PdfDocument(writer) Dim document As New Document(pdfDoc) ' Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, New ITextEvents()) document.Add(New Paragraph("Sales Data")) document.Add(New Paragraph("Content goes here...")) document.Close()</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p>Esta implementación demuestra la diferencia arquitectónica fundamental entre las dos bibliotecas. iText 7 requiere crear una clase de manejador separada que implemente <code>IEventHandler</code> (similar al legado <code>PdfPageEventHelper</code>), calculando manualmente posiciones de página usando coordenadas flotantes y gestionando los objetos <code>PdfCanvas</code> y <code>Canvas</code> para operaciones de dibujo. El manejador recibe eventos para cada página a través del tipo de evento <code>END_PAGE</code> -- un detalle que confunde a muchos desarrolladores que usan incorrectamente <code>START_PAGE</code>.</p> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-resultado" data-heading-level="3" data-heading-text="Resultado"> <h3 id="anchor-resultado">Resultado</h3> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-8.webp" alt="Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 8 - Cómo agregar encabezado y pie de página en PDF usando iTextSharp en C# con ejemplo" loading="lazy" class="img-responsive add-shadow img-popup" width="883" height="951" /></p> <p>El sistema de coordenadas en iText 7 se origina en la esquina inferior izquierda de la página, lo que requiere cálculos explícitos para el posicionamiento. Obtener el número final de páginas requiere complejidad adicional con patrones <code>PdfTemplate</code> que se completan durante <code>OnCloseDocument</code> -- un patrón que añade más código de plantilla a un flujo de trabajo ya implicado.</p> <p>Para los desarrolladores que proceden de entornos de desarrollo web, este enfoque basado en coordenadas resulta extraño en comparación con el modelo declarativo HTML/CSS. Cada decisión de posicionamiento requiere comprender las dimensiones de la página, los márgenes y la medición del texto: cuestiones que se abstraen en los enfoques basados ​​en HTML.</p> <p>iText 7 también funciona bajo licencia AGPL, lo que significa que las aplicaciones que utilizan iTextSharp o iText 7 deben ser de código abierto a menos que se compre una licencia comercial. Esta es una consideración importante a la hora de elegir entre bibliotecas para proyectos comerciales.</p> </section> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-36-49c36-49mo-se-comparan-los-dos-enfoques" data-heading-level="2" data-heading-text="¿Cómo se comparan los dos enfoques?"> <h2 id="anchor-36-49c36-49mo-se-comparan-los-dos-enfoques">¿Cómo se comparan los dos enfoques?</h2> <p>Las diferencias se hacen más evidentes al analizar las capacidades específicas en paralelo. La siguiente tabla resume las distinciones clave:</p> <table class="content__data-table" data-content-table> <caption>Comparación de las funciones de encabezado y pie de página de IronPDF vs. iText 7</caption> <thead> <tr> <th>Función</th> <th>IronPDF</th> <th>iText 7 / iTextSharp</th> </tr> </thead> <tbody> <tr> <td>Estilo de implementación</td> <td>Asignación de propiedades en las opciones del renderizador</td> <td>Clase de controlador de eventos que implementa IEventHandler</td> </tr> <tr> <td>Compatibilidad con HTML/CSS</td> <td>HTML y CSS completos mediante HtmlHeaderFooter</td> <td>No tiene soporte para HTML nativo; requiere dibujo de lienzo de bajo nivel</td> </tr> <tr> <td>Total de números de página</td> <td>Automático a través del campo `{total-pages}`</td> <td>Requiere que PdfTemplate esté completo en OnCloseDocument</td> </tr> <tr> <td>Imagen en el encabezado</td> <td>Etiqueta HTML estándar `<img loading="lazy" class="img-responsive add-shadow img-popup" alt=" related to ¿Cómo se comparan los dos enfoques?">` con BaseUrl</td> <td>Requiere objeto de imagen y posicionamiento manual</td> </tr> <tr> <td>Agregar a PDF existente</td> <td>Métodos AddHtmlHeaders / AddHtmlFooters</td> <td>Requiere reprocesamiento a través de un estampador o bucle de eventos</td> </tr> <tr> <td>Segmentación por página</td> <td>Lista de índices de página pasados ​​al método</td> <td>Lógica condicional dentro del controlador de eventos</td> </tr> <tr> <td>Modelo de licencia</td> <td>Comercial con prueba gratuita</td> <td>AGPL (código abierto) o comercial</td> </tr> <tr> <td>Multiplataforma</td> <td>Windows, Linux, macOS; compatible con Docker</td> <td>Windows, Linux, macOS</td> </tr> </tbody> </table> <p>La experiencia de desarrollo también difiere significativamente a la hora de solucionar problemas. El enfoque basado en HTML de IronPDF permite previsualizar el diseño del encabezado en un navegador antes de integrarlo en el código de generación de PDF. Si algo parece incorrecto, puedes ajustar el HTML y el CSS utilizando las herramientas de desarrollo conocidas del navegador. Con iText 7, la depuración de problemas de posicionamiento requiere generar PDF de prueba repetidamente y medir manualmente las coordenadas.</p> <p>El enfoque basado en HTML significa que puedes aplicar directamente las habilidades de desarrollo web existentes. Cualquier diseño que se pueda lograr con HTML y CSS funciona en encabezados y pies de página de IronPDF , desde arreglos de flexbox hasta cuadrículas de imágenes. El <a href="/es/examples/html-headers-and-footers/" target="_blank">ejemplo de encabezados y pies de página HTML</a> demuestra posibilidades de estilo adicionales.</p> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-personalizar-la-apariencia-del-encabezado-y-pie-de-p36-49gina" data-heading-level="3" data-heading-text="Personalizar la apariencia del encabezado y pie de página"> <h3 id="anchor-personalizar-la-apariencia-del-encabezado-y-pie-de-p36-49gina">Personalizar la apariencia del encabezado y pie de página</h3> <p>El ajuste de los encabezados y pies de página implica varias propiedades que afectan al posicionamiento y la presentación visual. La clase <code>TextHeaderFooter</code> proporciona estas opciones de personalización:</p> <pre class='naked-code'><code class="language-csharp">using IronPdf; using IronSoftware.Drawing; var renderer = new ChromePdfRenderer(); var footer = new TextHeaderFooter { LeftText = "Confidential", CenterText = "{pdf-title}", RightText = "Page {page} of {total-pages}", Font = FontTypes.Arial, FontSize = 9, DrawDividerLine = true, DrawDividerLineColor = Color.Gray }; renderer.RenderingOptions.TextFooter = footer; renderer.RenderingOptions.MarginBottom = 20; var pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>"); pdf.SaveAs("board-report.pdf");</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Haga clic para copiar" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Haga clic para copiar" data-copied-text="Copiado al portapapeles" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Modo Completo" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Salir de Pantalla Completa" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using IronPdf; using IronSoftware.Drawing; var renderer = new ChromePdfRenderer(); var footer = new TextHeaderFooter { LeftText = "Confidential", CenterText = "{pdf-title}", RightText = "Page {page} of {total-pages}", Font = FontTypes.Arial, FontSize = 9, DrawDividerLine = true, DrawDividerLineColor = Color.Gray }; renderer.RenderingOptions.TextFooter = footer; renderer.RenderingOptions.MarginBottom = 20; var pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>"); pdf.SaveAs("board-report.pdf");</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports IronPdf Imports IronSoftware.Drawing Dim renderer As New ChromePdfRenderer() Dim footer As New TextHeaderFooter With { .LeftText = "Confidential", .CenterText = "{pdf-title}", .RightText = "Page {page} of {total-pages}", .Font = FontTypes.Arial, .FontSize = 9, .DrawDividerLine = True, .DrawDividerLineColor = Color.Gray } renderer.RenderingOptions.TextFooter = footer renderer.RenderingOptions.MarginBottom = 20 Dim pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>") pdf.SaveAs("board-report.pdf")</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p>La propiedad <code>Font</code> acepta valores de <code>IronSoftware.Drawing.FontTypes</code>, incluyendo Helvetica, Arial, Courier y Times New Roman. La propiedad <code>DrawDividerLine</code> añade una regla horizontal profesional entre el pie de página y el contenido principal. Puedes personalizar el color de la línea utilizando <code>DrawDividerLineColor</code> para que coincida con los colores de tu marca o tema del documento.</p> <p>Para encabezados y pies de página basados en HTML, la propiedad <code>LoadStylesAndCSSFromMainHtmlDocument</code> opcionalmente hereda estilos del documento principal que se está renderizando, asegurando consistencia visual entre los encabezados y el contenido del cuerpo. Esto resulta especialmente útil cuando el documento principal utiliza CSS personalizado que también debe aplicarse a las regiones de encabezado y pie de página.</p> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-5.webp" alt="Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 5 - Compatibilidad multiplataforma" loading="lazy" class="img-responsive add-shadow img-popup" width="1530" height="655" /></p> </section> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-implementaciones-multiplataforma-y-de-contenedores" data-heading-level="3" data-heading-text="Implementaciones multiplataforma y de contenedores"> <h3 id="anchor-implementaciones-multiplataforma-y-de-contenedores">Implementaciones multiplataforma y de contenedores</h3> <p>Las aplicaciones .NET modernas a menudo se despliegan en contenedores Linux, Azure App Services o funciones AWS Lambda. IronPDF admite la implementación multiplataforma en Windows, Linux y macOS sin necesidad de configuración adicional. La biblioteca funciona en contenedores Docker, por lo que es adecuada para arquitecturas de microservicios y aplicaciones nativas en la nube.</p> <p>Esta capacidad multiplataforma se extiende a la funcionalidad de encabezado y pie de página: el mismo código que genera archivos PDF con encabezados en una máquina de desarrollo de Windows produce un resultado idéntico cuando se implementa en un servidor de producción Linux. No es necesario instalar fuentes adicionales, configurar motores de renderizado ni manejar rutas de código específicas de la plataforma.</p> <p>Para equipos que ejecutan cargas de trabajo en contenedores, la <a href="/es/get-started/linux/" target="_blank">documentación de implementación de Docker de IronPDF</a> proporciona orientación de configuración para varias imágenes base y plataformas de orquestación. El comportamiento consistente de la biblioteca en todos los entornos elimina una fuente común de errores en los flujos de trabajo de generación de PDF.</p> <p>Según <a href="https://learn.microsoft.com/en-us/dotnet/core/deploying/" target="_blank" rel="nofollow noopener noreferrer">la documentación .NET de Microsoft</a> , las aplicaciones .NET en contenedores se benefician de un comportamiento de ejecución consistente en todos los entornos, un principio que el motor de renderizado de IronPDF refuerza para las tareas de generación de PDF. De manera similar, <a href="https://docs.docker.com/get-started/" target="_blank" rel="nofollow noopener noreferrer">la documentación oficial de Docker</a> explica las mejores prácticas para contenerizar cargas de trabajo .NET que se aplican directamente a los servicios de generación de PDF.</p> <p>La <a href="https://itextpdf.com/resources/api-documentation" target="_blank" rel="nofollow noopener noreferrer">documentación de iText 7</a> también confirma el soporte multiplataforma, pero la complejidad adicional de su modelo basado en eventos significa que depurar problemas de renderizado multiplataforma puede ser más complicado que con un enfoque declarativo basado en HTML.</p> </section> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-36-49cuales-son-tus-pr36-49ximos-pasos" data-heading-level="2" data-heading-text="¿Cuales son tus próximos pasos?"> <h2 id="anchor-36-49cuales-son-tus-pr36-49ximos-pasos">¿Cuales son tus próximos pasos?</h2> <p>Implementar encabezados y pies de página en sus documentos PDF le llevará sólo unos minutos con IronPDF. Instale la biblioteca a través de NuGet Package Manager:</p> <pre class='naked-code'><code class="language-bash">Install-Package IronPdf dotnet add package IronPdf</code></pre> <div class="code-content code-content-inner" > <div class="code_window" > <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Haga clic para copiar" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Haga clic para copiar" data-copied-text="Copiado al portapapeles" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Modo Completo" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Salir de Pantalla Completa" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-shell"><code>Install-Package IronPdf dotnet add package IronPdf</code></pre> </div> <div class="code_window_bottom"> <span class="pull-right"><span class="ls-span" style='font-weight: 600'>SHELL</span> </div> </div> </div> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-10.webp" alt="Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 10 - Instalación" loading="lazy" class="img-responsive add-shadow img-popup" width="1280" height="818" /></p> <p>Desde aquí, estos recursos te ayudarán a llegar más lejos:</p> <ul> <li><strong><a href="/es/docs/" target="_blank">Documentación de introducción</a></strong> : cubre la gama completa de capacidades de generación y manipulación de PDF</li> <li><strong><a href="/es/how-to/headers-and-footers/" target="_blank">Guía práctica de encabezados y pies de página</a></strong> : instrucciones paso a paso para todos los escenarios de encabezados y pies de página</li> <li><strong><a href="/es/examples/html-headers-and-footers/" target="_blank">Ejemplo de encabezados y pies de página HTML</a></strong> : ejemplos de código listos para ejecutar para encabezados basados ​​en HTML</li> <li><strong><a href="/es/examples/adding-headers-and-footers-advanced/" target="_blank">Ejemplo de encabezados y pies de página avanzados</a></strong> : segmentación por página y diferenciación de páginas pares e impares</li> <li><strong><a href="/es/object-reference/api/IronPdf.TextHeaderFooter.html" target="_blank">Referencia de API de TextHeaderFooter</a></strong> : lista completa de propiedades para encabezados y pies de página basados ​​en texto</li> <li><strong><a href="/es/object-reference/api/IronPdf.HtmlHeaderFooter.html" target="_blank">Referencia de API HtmlHeaderFooter</a></strong> : API completa para encabezados y pies de página basados ​​en HTML</li> <li><strong><a href="/es/get-started/linux/" target="_blank">Guía de implementación de Docker</a></strong> -- configuración para contenedores de Linux y entornos en la nube</li> <li><strong><a href="/es/licensing/" target="_blank">Opciones de licencia de IronPDF</a></strong> : planes para desarrolladores individuales y equipos empresariales</li> </ul> <p><a href="#trial-license" data-modal-id="trial-license" class="js-modal-open">Comience su prueba gratuita</a> para probar las implementaciones de encabezado y pie de página en sus propios proyectos. La prueba incluye todas las funciones sin límite de tiempo de funcionalidad, lo que le permite evaluar la biblioteca comparándola con los requisitos de sus documentos PDF del mundo real antes de comprometerse con una licencia.</p> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-11.webp" alt="Cómo agregar encabezado y pie de página en PDF usando iTextSharp y IronPDF en C# con ejemplo: Imagen 11 - Licenciamiento" loading="lazy" class="img-responsive add-shadow img-popup" width="1757" height="741" /></p> <p>Añadir encabezados y pies de página a documentos PDF en C# puede ser desde sencillo hasta complejo, según la biblioteca elegida. Mientras que iText 7 ofrece control de bajo nivel mediante controladores de eventos y operaciones de lienzo, IronPDF ofrece la misma funcionalidad mediante una API que aplica conceptos familiares de HTML y CSS. Para los desarrolladores que priorizan una implementación rápida y un código fácil de mantener, IronPDF reduce la implementación de encabezados y pies de página de docenas de líneas (incluyendo clases de controladores, configuraciones de celdas y estructuras de tablas) a solo unas pocas asignaciones de propiedades.</p></section> </div> <section id="article__faqs" class="bg" style="min-height: 500px; contain-intrinsic-size: auto 1065px;"> <h2 class="article__faqs__heading-title">Preguntas Frecuentes</h2> <div class="article__faqs__questions-and-answers container-fluid"> <div class="tab-pane in active" id="ta-faq"> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">¿Cómo puedo añadir encabezados y pies de página a los PDF con iTextSharp?</h3> <p class="question-answer">Para añadir encabezados y pies de página a los PDF con iTextSharp, puede definir un controlador de eventos de página que personalice las páginas del documento durante el proceso de creación del PDF. Esto implica anular el método OnEndPage para incluir el contenido deseado de encabezado y pie de página.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">¿Cuáles son las ventajas de utilizar IronPDF para añadir encabezados y pies de página?</h3> <p class="question-answer">IronPDF simplifica el proceso de añadir encabezados y pies de página, ya que proporciona una API sencilla y admite varias opciones de estilo. Se integra a la perfección con proyectos en C# y ofrece funciones adicionales como la conversión de HTML a PDF, lo que la convierte en una herramienta versátil para la manipulación de PDF.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">¿Se pueden utilizar IronPDF e iTextSharp juntos?</h3> <p class="question-answer">Sí, IronPDF e iTextSharp pueden utilizarse juntos en un proyecto C#. Mientras que iTextSharp es excelente para la manipulación programática de PDF, IronPDF lo complementa proporcionando funciones adicionales como la conversión de HTML a PDF, que puede ser útil para generar dinámicamente encabezados y pies de página.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">¿Existe alguna forma de dar estilo a los encabezados y pies de página con IronPDF?</h3> <p class="question-answer">IronPDF permite dar estilo a los encabezados y pies de página mediante HTML y CSS. Esto proporciona a los desarrolladores la flexibilidad necesaria para crear diseños y maquetaciones visualmente atractivos para sus documentos PDF.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">¿Cómo maneja IronPDF los números de página en encabezados y pies de página?</h3> <p class="question-answer">IronPDF puede insertar automáticamente números de página en encabezados y pies de página. Ofrece opciones para dar formato a los números de página según sus necesidades, como incluir el recuento total de páginas o ajustar el número de página inicial.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">¿Cuál es la ventaja de utilizar C# para la manipulación de PDF con IronPDF?</h3> <p class="question-answer">El uso de C# para la manipulación de PDF con IronPDF ofrece una gran seguridad tipográfica, fácil integración con aplicaciones .NET y acceso a una amplia gama de bibliotecas y herramientas que mejoran el proceso de desarrollo. La API de C# de IronPDF está diseñada para ser intuitiva y fácil de usar, lo que la hace accesible a desarrolladores de todos los niveles.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">¿Puedo convertir documentos existentes a PDF con IronPDF?</h3> <p class="question-answer">Sí, IronPDF puede convertir en PDF varios formatos de documentos, incluidos HTML, ASPX y otros contenidos basados en web. Esta función es especialmente útil para crear PDF a partir de páginas web o contenidos generados dinámicamente.</p> </div> </div> </div> </div> </section> <script> document.addEventListener("DOMContentLoaded", function() { onViewLoadAsync( "#article__faqs", function() { }, ["common__faqs.js", "content__faqs.css", "article__faqs.css"] ); const articleFaqs = document.querySelector("#article__faqs .tab-pane"); if (!articleFaqs) return; articleFaqs.addEventListener("click", (evt) => { const targeted = evt.target.closest(".faq-item"); if (!targeted) return; targeted.classList.toggle("faq-item--active"); }); }); </script> <div class="author-details" id="author"> <div class="d-flex column-gap-4"> <div class="col_image"> <img loading="lazy" src="/img/how-tos/authors/curtis.png" alt="Curtis Chau" class="author-image" width="64" height="64"> </div> <div class="col_detail"> <div class="author-details__connect"> <div class="d-flex align-items-center flex-wrap"> <div class="author-details__connect__author"> <div class="author-name text-no-wrap"> <a href="https://ironsoftware.com/es/about-us/authors/curtis/" aria-label="">Curtis Chau</a> </div> <div class="author-details__connect__linkedin"> <a href="https://www.linkedin.com/in/curtis-chau-937368213/" target="_blank"><i class="fa-brands fa-linkedin" target="_blank" rel="nofollow"></i></a> </div> <div class="author-details__connect__website"> <a href="https://github.com/CurtisChau" target="_blank"><i class="fa-solid fa-globe"></i></a> </div> </div> <div class="author-details__chat"> <a href="#live-chat-support"><i class="fa-solid fa-comments"></i>  <span class="d-none d-md-inline">Chatea con el equipo de ingeniería ahora </a></span> </div> </div> </div> <div class="author-job-title">Escritor Técnico</div> <div class="author-bio"><p>Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...</div><a class="author-job-title__read-more" href="https://ironsoftware.com/es/about-us/authors/curtis/">Leer más</a> </div> </div> </div> <div class="feedback_form"> </div> <div class="blog_end_line"></div> <div class="page_blog_listing module section_blog_listing"> <section class="col-12" id="blog_post--related-articles"> <h2>Artículos Relacionados</h2> <div class="container-fluid blog_post--related-articles__list"> <div class="row row-cols-1 row-cols-sm-2 row-cols-lg-3 g-4"> <div class="col"> <article class="h-100"> <a href="/es/blog/using-ironpdf/ironpdf-monthly-statements/" class="d-block h-100 item_box" title="Generación de extractos de cuenta mensuales como documentos PDF"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">Actualizado<time datetime="2026-03-31">30 de marzo de 2026</time></span></div> <h3 class="post_header">Generación de extractos de cuenta mensuales como documentos PDF</h3> <p class="post_description">Con la biblioteca IronPDF C# PDF, los desarrolladores pueden convertir HTML en archivos PDF fiables dentro de un proyecto .NET sin depender de servicios externos.</p> <p class="read_more">Leer más<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> <div class="col"> <article class="h-100"> <a href="/es/blog/using-ironpdf/ironpdf-form-to-pdf/" class="d-block h-100 item_box" title="Convertir formularios de solicitud en línea en resúmenes PDF con IronPDF"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"><img class="object-fit-cover" alt="Convertir formularios de solicitud en línea en resúmenes PDF con IronPDF" src="/static-assets/pdf/blog/ironpdf-form-to-pdf/ironpdf-form-to-pdf-4.webp" width="1428" height="517" decoding="async" loading="lazy"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">Actualizado<time datetime="2026-03-31">30 de marzo de 2026</time></span></div> <h3 class="post_header">Convertir formularios de solicitud en línea en resúmenes PDF con IronPDF</h3> <p class="post_description">Aprenda a utilizar IronPDF para producir un registro rastreable del envío de un formulario web, útil para fines de cumplimiento gubernamental.</p> <p class="read_more">Leer más<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> <div class="col"> <article class="h-100"> <a href="/es/blog/using-ironpdf/ironpdf-fintech-receipts/" class="d-block h-100 item_box" title="Recibos y registros de transacciones en PDF en C# para aplicaciones de tecnología financiera"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">Actualizado<time datetime="2026-03-31">30 de marzo de 2026</time></span></div> <h3 class="post_header">Recibos y registros de transacciones en PDF en C# para aplicaciones de tecnología financiera</h3> <p class="post_description">Lea para aprender a utilizar IronPDF para crear registros con fecha y hora de las transacciones en el punto de servicio</p> <p class="read_more">Leer más<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> </div> </div> </section> </div> <div class="blog_end_line"></div> <div class="blog_bottom_nav"><div class="blog_bottom_nav row row-cols-2"><div class="text-start text-truncate"><a href="/es/blog/using-ironpdf/dynamic-pdf-generation/" class="link previous">Cómo generar PDF dinámicamente en .NET con IronPDF</a></div><div class="text-end text-truncate"><a href="/es/blog/using-ironpdf/retrieve-pdf-file-from-database-apr-net/" class="link next">Cómo recuperar archivos PDF de una...</a></div></div></div> </article> </div> <div id="blog_sidebar--right" class="blog_sidebar--right"> <aside id="blog_post--right_content" class="right_column right_sidebar_wrapper"> <div class="sticky-top z-0 specific_sticky_height"> <!-- Tutorial Videos Start --> <!-- Tutorial Videos End --> <div class="block_on_this_page"> <div id="blog_right_scrollspy_menu" class="menu_wrapper"> <h2 class="table_of_contents--header">En esta página</h2> <ul id="scroll-menu" class="blog_post_on_this_page"> <li> <a href="#anchor-c36-49mo-agregar-encabezados-y-pies-de-p36-49gina-a-documentos-pdf-en-c" class=""><span>Cómo agregar encabezados y pies de página a documentos PDF en C</span></a> </li> <li> <a href="#anchor-36-49por-qu36-49-son-importantes-los-encabezados-y-pies-de-p36-49gina-en-documentos-pdf" class=""><span>¿Por qué son importantes los encabezados y pies de página en documentos PDF?</span></a> </li> <li> <a href="#anchor-36-49c36-49mo-agregar-un-encabezado-y-pie-de-p36-49gina-de-texto-en-c" class=""><span>¿Cómo agregar un encabezado y pie de página de texto en C#?</span></a> <ul class=""> <li class=""> <a href="#anchor-resultado"><span>Resultado</span></a> </li> </ul> </li> <li> <a href="#anchor-36-49c36-49mo-crear-encabezados-y-pies-de-p36-49gina-con-estilo-html" class=""><span>¿Cómo crear encabezados y pies de página con estilo HTML?</span></a> </li> <li> <a href="#anchor-36-49c36-49mo-se-pueden-a36-49adir-encabezados-a-documentos-pdf-existentes" class=""><span>¿Cómo se pueden añadir encabezados a documentos PDF existentes?</span></a> <ul class=""> <li class=""> <a href="#anchor-entrada"><span>Entrada</span></a> </li> <li class=""> <a href="#anchor-resultado"><span>Resultado</span></a> </li> </ul> </li> <li> <a href="#anchor-36-49c36-49mo-agregar-diferentes-encabezados-en-diferentes-p36-49ginas" class=""><span>¿Cómo agregar diferentes encabezados en diferentes páginas?</span></a> <ul class=""> <li class=""> <a href="#anchor-resultado"><span>Resultado</span></a> </li> </ul> </li> <li> <a href="#anchor-36-49c36-49mo-implementar-contenido-din36-49mico-m36-49s-all36-49-de-los-n36-49meros-de-p36-49gina" class=""><span>¿Cómo implementar contenido dinámico más allá de los números de página?</span></a> </li> <li> <a href="#anchor-36-49c36-49mo-es-el-enfoque-de-itext-7" class=""><span>¿Cómo es el enfoque de iText 7?</span></a> <ul class=""> <li class=""> <a href="#anchor-resultado"><span>Resultado</span></a> </li> </ul> </li> <li> <a href="#anchor-36-49c36-49mo-se-comparan-los-dos-enfoques" class=""><span>¿Cómo se comparan los dos enfoques?</span></a> <ul class=""> <li class=""> <a href="#anchor-personalizar-la-apariencia-del-encabezado-y-pie-de-p36-49gina"><span>Personalizar la apariencia del encabezado y pie de página</span></a> </li> <li class=""> <a href="#anchor-implementaciones-multiplataforma-y-de-contenedores"><span>Implementaciones multiplataforma y de contenedores</span></a> </li> </ul> </li> <li> <a href="#anchor-36-49cuales-son-tus-pr36-49ximos-pasos" class=""><span>¿Cuales son tus próximos pasos?</span></a> </li> </ul> </div> </div> <div> <div class="nuget-sidebar-wrapper nuget-sidebar-wrapper--right-sidebar nuget-variant-3"> <div class="nuget-sidebar-header-block"> <div class="nuget-sidebar-header-block__logo-block"> <a href="https://nuget.org/packages/IronPdf" target="_blank"><img loading="lazy" src="/img/nuget.blue.svg" alt="Gratis para desarrollo desde NuGet" width="38" height="38" data-modal-id="trial-license-after-download" class="js-modal-open"></a> </div> <div class="nuget-sidebar-header-block__text-block" data-bs-toggle="modal"> <p class="nuget-sidebar-header-block__text-block__big-text"> <a href="https://nuget.org/packages/IronPdf" target="_blank" data-modal-id="trial-license-after-download" class="js-modal-open"> Instalar con <span class="nuget-sidebar-header-block__text-block__big-text--blue">NuGet</span> <span class="nuget-sidebar-header-block__text-block__small-text">nuget.org/packages/<span class="text-block__small-text--inline-block">IronPdf</span></span> </a> </p> </div> </div> <div class="nuget-sidebar-cli vwo-nuget-copy vwo-nuget-copy--ironpdf" data-bs-custom-class="tooltipCopyToClipboard"> <div class="nuget-sidebar-cli__command"> <p class="nuget-sidebar-cli__command__text"> PM > <span class="js-nuget-sidebar-cli__command__text">Install-Package IronPdf</span> </p> </div> <div class="nuget-sidebar-cli__copy-block"> <span class="fas copy-icon-white"></span> </div> </div> </div> </div> <div class="join_bug_bounty"> <h2>Reportar un problema</h2> <ul class="list-unstyled rt-list"> <li class="list-unstyled__item-flex-align-items-center"><i class="fa-regular fa-pen-to-square"></i>   <button class="js-modal-open" data-modal-id="article-feedback-modal">Únase a nuestra caza de errores por Iron Swag</button> </li> </ul> </div> </div> </div> </aside> </div> </div> <!-- offcanvas menu --> <div id="offcanvas_blog_right_sidebar" class="offcanvas offcanvas-end offcanvas_blog_right_sidebar" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" aria-labelledby="offcanvas_blog_right_sidebar"> <!-- button toggle offcanvas right sidebar --> <div id="button_toggle_blog_right_sidebar" class="button_toggle_blog_right_sidebar" data-bs-toggle="offcanvas" data-bs-target="#offcanvas_blog_right_sidebar" aria-controls="offcanvasScrolling"> <div class="button_icons_open_offcanvas"><i class="fa-solid fa-angle-left"></i><i class="fa-solid fa-list-ul ms-1"></i></div> <div class="button_icons_close_offcanvas" style="display:none;"><i class="fa-solid fa-x"></i></div> </div> <div class="offcanvas-body" style="box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.25); background-color:#fafafb; padding:0 20px 0;"> <div id="place_holder_offcanvas_blog_right_sidebar"></div> </div> </div> <!-- A/B test new content layout 2025 May, end --> <section style="container-type: inline-size;"></section> </main> <section class="bifrost"></section> <div class="modal fade img-popup-modal" id="img-popup-modal" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog" data-bs-dismiss="modal"> <div class="modal-loaded donotdelete" style="font-size: 1px; display: none;"></div> <div class="modal-content" > <div class="modal-title"> <!--<button type="button" class="close" data-bs-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>--> <i data-bs-dismiss="modal" aria-hidden="true" class="fas fa-times slide-out-close"></i> </div> <div class="modal-body"> <img class="img-popup-fullsize" loading="lazy" src="" alt=" related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo"> <p class="img-popup-caption"></p> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var element = document.querySelector("#img-popup-modal"); document.onElementViewportIntersect(element, function() { importModal(["image-popup.js", "modals/image-popup.css"], "img-popup-modal"); }); }) </script> <div class="modal cv-auto" id="download-modal"> <div class="modal-dialog products-download dm-IronPDF ironpdf"> <div class="modal-loaded donotdelete"></div> <div class="modal-content"> <div class="modal-header"> <i data-bs-dismiss="modal" aria-hidden="true" class="fas fa-times slide-out-close"></i> </div> <div class="modal-body"> <div class="dm-col-left"> <div class="products-title">Pruebe IronPDF gratis</div> <div class="subtitle">Configúrese en 5 minutos</div> <div class="image-box"> <img class="img-responsive" loading="lazy" src="/img/license-types/icon-lightbulb.svg" alt="Icon Lightbulb related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo"> </div> </div> <div class="dm-col-right"> <div class="row"> <div class="col-md-6"> <div class="js-modal-open product-item nuget vwo-nuget-copy" data-modal-id="trial-license-after-download" > <div class="product-section" style="padding: 33px 25px 28px;"> <div class="row"> <div class="col-lg-2 product-image"> <img class="img-responsive add-shadow" loading="lazy" src="/img/nuget-logo.svg" alt="Biblioteca C# NuGet para PDF" > </div> <div class="col-lg-10 product-info"> <div class="products-title">Instalar con <span>NuGet</span></div> <div class="subtitle"><strong>Versión:</strong> 2026.4</div> </div> </div> <div class="js-open-modal-ignore copy-nuget-section" data-toggle="tooltip" data-copy-text="Haga clic para copiar" , data-copied-text="Copiado al portapapeles" data-placement="top" title="Haga clic para copiar"> <div class="copy-nuget-row vwo-nuget-copy"> <pre class="install-script">Install-Package IronPdf</pre> <div class="copy-button"> <button class="btn btn-default copy-nuget-script" type="button" data-toggle="popover" data-placement="top" data-content="Copiado al portapapeles" aria-label="Copiar el comando del Administrador de Paquetes" data-original-title="Haga clic para copiar" title="Haga clic para copiar"> <span class="fas copy-icon-white"></span> </button> </div> </div> </div> <div class="nuget-link"> nuget.org/packages/IronPdf/ </div> </div> <div class="product-section"> <ol class="product-description"> <li><span>En el Explorador de Soluciones, haga clic derecho en Referencias, Administrar Paquetes NuGet</span></li> <li><span>Seleccione Examinar y busque "IronPDF"</span></li> <li><span>Seleccione el paquete e instale</span></li> </ol> </div> </div> </div> <div class="col-md-6"> <div class="js-modal-open product-item dll" data-modal-id="trial-license-after-download" > <div class="product-section"> <div class="row"> <div class="col-lg-2 product-image"> <img class="img-responsive add-shadow" loading="lazy" src="/img/dll-img.png" alt="C# PDF DLL" > </div> <div class="col-lg-10 product-info"> <div class="products-title">Descargar <span>DLL</span></div> <div class="subtitle"><strong>Versión:</strong> 2026.4</div> </div> </div> <div class="download-dll-section"> <a class="btn btn-red download-library-dropdown dark-version" href="/packages/IronPdf.zip" data-toggle="tooltip" data-placement="bottom" data-html="true" title="<div class='library_download_dropdown_tooltip'><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-microsoft'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>Para Windows</span></span></div><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.MacOs.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-apple'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>Para macOS</span></span></div><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.Linux.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-linux'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>Para Linux</span></span></div></div>" download><i class="fas fa-download"></i> Descargar ahora</a> <div class="subtitle">o descargue el Instalador de Windows <a href="/packages/IronPdfInstaller.zip" class="ga-windows-installer" title="Download Iron Software Installer for Windows">aquí</a>.</div> </div> </div> <div class="product-section"> <ol class="product-description"> <li><span>Descargue y descomprima IronPDF en una ubicación como ~/Libs dentro del directorio de su solución</span></li> <li><span>En el Explorador de Soluciones de Visual Studio, haga clic derecho en Referencias. Seleccione Examinar, "IronPDF.dll"</span></li> </ol> </div> </div> </div> </div> <div class="licensing-link"> Licencias desde <a href="/es/licensing/" target="_blank">$749</a> </div> </div> </div> <div class="dm-modal-footer"> <div class="dm-col-left"> </div> <div class="dm-col-right"> <p class="helpscout-text">¿Tiene alguna pregunta? <a href="#live-chat-support">Póngase en contacto</a> con nuestro equipo de desarrollo.</p> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { setupModalPopup("#download-modal", "download-modal", ["modals/download.css", "download-modal.js"], () => { const dlSection = qs("#download-modal .col-md-6, #download-modal .ironpdf-java__maven-install-section"); const packageUrl = "/packages/IronPdf.zip"; const filename = "IronPdf.zip" if (!dlSection) return; registerDownloadAction(dlSection, "click", packageUrl, filename); }); }); </script> <div class="modal cv-auto" id="trial-license-after-download" tabindex="-1" data-bs-backdrop="true" data-form-id="b93685fb-4445-4114-8b0a-4af3ec564c41" data-ironproduct-key="ironpdf" data-js-modal-id="trial-license-after-download"> <div class="modal-config" data-for-product="ironpdf"> <span class="trial-license-inactive-timeout" data-trial-license-inactive-timeout="15">15</span> <span class="trial-license-inactive-timeout-interval" data-trial-license-inactive-timeout-interval="1000">1000</span> <span class="trial-license-reset-state-in-days" data-trial-license-reset-state-in-days="1">1</span> </div> <div class="modal-dialog"> <div class="modal-content modal-content_border-0 modal-content_padding-0"> <div class="trial-license-after-download-modal__status__css-loaded" style="display:none; font-size:0px;"><!-- a place holder, when css completely load the font-size will change to 1px; then it will trigger js to make modal visible --></div> <div class="modal-header"> <i class="slide-out-close-bold" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body modal-body_padding-0"> <div class="modal-loaded donotdelete"></div> <div class="trial-license trial-license_light"> <div class="trial-license__info_2410 d-none d-lg-block"> <div class="bg_product_logo d-none d-xl-block ironpdf"><!-- bg-product-logo --></div> <div class="content_wrapper pt-4 pt-lg-5"> <div class="header type_installed flex-column flex-lg-row js_control_type_installed"> <div class="header__animate_icon installed"> <div class="package_icon_bg"><img class="platform_logo" src="/img/modals/new-design-2410/logo_nuget.svg" width="43" height="42" alt="Nuget Logo" loading="lazy"></div> </div> <div> <div class="header__title text-center text-lg-start"> Ahora ha instalado con NuGet </div> </div> </div> <div class="header type_downloading flex-column flex-lg-row js_control_type_downloading"> <div class="header__animate_icon downloading"></div> <div> <div class="header__title text-center text-lg-start"> Su navegador ahora está descargando <span class="header__title__product_name">IronPDF</span> </div> </div> </div> <h3 class="header_subtitle text-center text-lg-start type_installed">Próximo paso: Comenzar prueba gratuita de 30 días</h3> <p class="text-center text-lg-start">No se requiere tarjeta de crédito</p> <ul class="highlight d-none d-lg-block"> <li><span class="icon_test"></span>Pruebe en un entorno en vivo</li><li><span class="icon_calendar"></span>Producto totalmente funcional</li><li><span class="icon_support"></span>Soporte técnico 24/5</li> </ul> </div> </div> <style> /* @media (min-width: 992px) { #trial-license-after-download .trial-license__action { } } */ </style> <div class="trial-license__action" style="min-height: 550px;" > <div class="trial-license__action-title" style=" "> Obtenga su <strong>Clave de Prueba de 30 días</strong> gratis al instante. </div> <div class="trial-license__exit-intent-form-sent-title"> Gracias.<br>Si desea hablar con nuestro equipo de licencias: </div> <div id="hubspot-form__thank_you" class="hubspot-form__thank_you"> <p><section class="formright_submitted"><img loading="lazy" src="/img/icons/greencheck_in_yellowcircle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"><div class="thank-you__header">El formulario de prueba fue enviado<br><em>con éxito</em>.</div><p>Su clave de prueba debería estar en el correo electrónico.<br>Si no es así, por favor contacte<br><a href="mailto:support@ironsoftware.com">support@ironsoftware.com</a></p></section></p> </div> <div id="hubspot-form__form__trial-license-after-download" class="hubspot-form__form-wrapper"> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { var trialLicenseHbsptOptions_form_1a = { region: "na1", portalId: "22630553", formId: "b93685fb-4445-4114-8b0a-4af3ec564c41", locale: "es", target: "#trial-license-after-download .place_holder--form_1a", cssClass: "hsform_error_v2 hsform_floating_label hsform_intl_phone", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"Por favor ingrese una direcci\u00f3n de email v\u00e1lida","firstname":"Por favor ingrese su nombre","countrycode":"","phone":"Un n\u00famero de tel\u00e9fono v\u00e1lido solo puede contener n\u00fameros, +()-. o x","preferred_communication":"Seleccione un m\u00e9todo de contacto preferido"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); buildCountryCodeForPhoneFields($form, 'div.hs-fieldtype-phonenumber'); removeHSFormPlaceHolder($form); }, onFormSubmitted: function($form, data) { trigger_goal('trial_form_submitted'); // trigger goal start // Fire Custom Event when form submited dataLayer.push({'event':'trial-from-submitted'}); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end setTimeout(function () { $("#trial-license-after-download .trial-license__action-features").hide(); }, 0); // hide 1st form place holder $("#trial-license-after-download .place_holder--form_1a").hide(); $("#trial-license-after-download .place_holder--form_1b").hide(); // show 2nd form place holder $("#trial-license-after-download .place_holder--form_2").show(); /// push submited data to 2nd form setTimeout(function() { $("#trial-license-after-download .trialFormTwo input[name='email']").val(data.submissionValues.email).change(); }, 1000); history.pushState("", document.title, window.location.pathname + "#trial-license-after-download-form-sent"); }, translations: { es: { fieldLabels: {"email":"Su Email Empresarial","firstname":"Nombre","countrycode":"C\u00f3digo de Marcado","phone":"N\u00famero de tel\u00e9fono","preferred_communication":"M\u00e9todo de contacto preferido"} } }, submitText: "Continue", submitButtonClass: "hs-button primary large arrow_right", inlineMessage: "<div class=\"d-none\"></div>", }; // var for form 1b var trialLicenseHbsptOptions_form_1b = Object.assign({}, trialLicenseHbsptOptions_form_1a); trialLicenseHbsptOptions_form_1b.formId = "8c54dcae-960c-4452-b83c-06affb378052"; trialLicenseHbsptOptions_form_1b.target = "#trial-license-after-download .place_holder--form_1b"; // var for form 2 var trialLicenseHbsptOptions_form_2 = { region: "na1", portalId: "22630553", formId: "febf5e33-1edd-45f9-b9b0-6ead75fb1b9a", locale: "es", cssClass: "trialFormTwo", target: "#trial-license-after-download .place_holder--form_2", inlineMessage: "<div class=\"d-none\"></div>", onFormSubmitted: function ($form, data) { // setCookie("stopFlag", "1", 1); setLocalStorageIfTrialSubmitted(); // Trigger HubSpot goal trigger_goal('second_trial_form_submitted'); $(".hubspot-form__form-wrapper").css("display", "none"); $("#trial-license-after-download .hubspot-form__thank_you").css("padding-top", "60px").show(); // Specific to modal #trial-license-after-download $("#trial-license-after-download .hubspot-form__thank_you section.formright_submitted").css("display", "block"); $("#trial-license-after-download .hubspot-form__thank_you").css("display", "block"); $("#trial-license-after-download .trial-license__action-title").css("display", "none"); $("#trial-license-after-download .trial-license__action-features-single, #trial-license .trial-license__action-features-single").css("display", "none"); // Specific to modal #trial-license $("#trial-license .trial-license__action-title").css("display", "none"); }, }; var selector = document.querySelector("#hubspot-form__form__trial-license-after-download"); const modalSelector = document.querySelector("#trial-license-after-download"); modalSelector?.addEventListener("shown.bs.modal", function() { embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_1a); embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_1b); embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_2); }, { once: true }); });</script> <div class="place_holder--form_1a vwo_ab_test_phone_extension_a"></div> <div class="place_holder--form_1b vwo_ab_test_phone_extension_b"></div> <div class="place_holder--form_2"></div> </div> <div class="trial-license__exit-intent-form-sent-action-button"> <a class="btn btn-red btn-red--exit-intent-form-sent" href="https://help.ironsoftware.com/meetings/ironsoftware/schedule-a-call-with-sales" target="_blank"> <i class="fa fa-phone-alt" aria-hidden="true"></i> Programar una llamada </a> </div> <div class="trial-license__exit-intent-form-sent-description"> ¿Tiene alguna pregunta? <a href="#live-chat-support" onclick="return show_helpscout(event)">Póngase en contacto</a> con nuestro equipo de desarrollo. </div> <div class="flex-grow-1"><!-- spacer --></div> <div class="trial-license__action-features"> <div class="trial-license__action-features-single"> No se requiere tarjeta de crédito ni creación de cuenta </div> </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-after-download"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css"]; importModal(modals, "trial-license-after-download", debug()); }); }); </script> <div class="modal cv-auto" id="trial-license-after-download-form-sent" tabindex="-1" data-bs-backdrop="true" data-form-id="b93685fb-4445-4114-8b0a-4af3ec564c41" data-ironproduct-key="ironpdf" data-js-modal-id="trial-license-after-download-form-sent"> <div class="modal-config" data-for-product="ironpdf"> <span class="trial-license-inactive-timeout" data-trial-license-inactive-timeout="15">15</span> <span class="trial-license-inactive-timeout-interval" data-trial-license-inactive-timeout-interval="1000">1000</span> <span class="trial-license-reset-state-in-days" data-trial-license-reset-state-in-days="1">1</span> </div> <div class="modal-dialog"> <div class="modal-content modal-content_border-0 modal-content_padding-0"> <div class="trial-license-after-download-form-sent-modal__status__css-loaded" style="display:none; font-size:0px;"><!-- a place holder, when css completely load the font-size will change to 1px; then it will trigger js to make modal visible --></div> <div class="modal-header"> <i class="slide-out-close-bold" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body modal-body_padding-0"> <div class="modal-loaded donotdelete"></div> <div class="trial-license trial-license_light"> <div class="trial-license__info_2410 d-none d-lg-block"> <div class="bg_product_logo d-none d-xl-block ironpdf"><!-- bg-product-logo --></div> <div class="content_wrapper pt-4 pt-lg-5"> <div class="header type_installed flex-column flex-lg-row js_control_type_installed"> <div class="header__animate_icon installed"> <div class="package_icon_bg"><img class="platform_logo" src="/img/modals/new-design-2410/logo_nuget.svg" width="43" height="42" alt="Nuget Logo" loading="lazy"></div> </div> <div> <div class="header__title text-center text-lg-start"> Ahora ha instalado con NuGet </div> </div> </div> <div class="header type_downloading flex-column flex-lg-row js_control_type_downloading"> <div class="header__animate_icon downloading"></div> <div> <div class="header__title text-center text-lg-start"> Su navegador ahora está descargando <span class="header__title__product_name">IronPDF</span> </div> </div> </div> <h3 class="header_subtitle text-center text-lg-start type_installed">Próximo paso: Comenzar prueba gratuita de 30 días</h3> <p class="text-center text-lg-start">No se requiere tarjeta de crédito</p> <ul class="highlight d-none d-lg-block"> <li><span class="icon_test"></span>Pruebe en un entorno en vivo</li><li><span class="icon_calendar"></span>Producto totalmente funcional</li><li><span class="icon_support"></span>Soporte técnico 24/5</li> </ul> </div> </div> <style> /* @media (min-width: 992px) { #trial-license-after-download-form-sent .trial-license__action { padding-top: 3px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; } } */ </style> <div class="trial-license__action" style="min-height: 270px;" > <div class="trial-license__action-title" style=" "> <strong>Gracias.<br> Vea sus opciones de licencia:</strong> </div> <div class="trial-license__exit-intent-form-sent-title"> Gracias.<br>Si desea hablar con nuestro equipo de licencias: </div> <div class="trial-license__action-buttons" style=" "> <a class="trial-license__action-button trial-license__action-button_red trial-license__action-button_wide" style=" " href="/es/licensing/" > <span class="trial-license__action-button-text"> Ver licencias </span> </a> </div> <div class="trial-license__exit-intent-form-sent-action-button"> <a class="btn btn-red btn-red--exit-intent-form-sent" href="https://help.ironsoftware.com/meetings/ironsoftware/schedule-a-call-with-sales" target="_blank"> <i class="fa fa-phone-alt" aria-hidden="true"></i> Programar una llamada </a> </div> <div class="trial-license__action-description trial-license__action-description_highlighted" style=" "> ¿Tiene alguna pregunta? <!-- --><a href="#live-chat-support" >Contáctenos</a><!-- --> con nuestro equipo de desarrollo. </div> <div class="trial-license__exit-intent-form-sent-description"> ¿Tiene alguna pregunta? <a href="#live-chat-support" onclick="return show_helpscout(event)">Póngase en contacto</a> con nuestro equipo de desarrollo. </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-after-download-form-sent"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css"]; importModal(modals, "trial-license-after-download-form-sent", debug()); }); }); </script> <script> function getHsProductCodeFromUrl() { const url = window.location.href; if (url.includes("ironpdf.com") || url.includes("ironpdf.local")) { if (url.includes("/java/")) return "pdf-java"; if (url.includes("/python/")) return "pdf-python"; if (url.includes("/nodejs/")) return "pdf-nodejs"; return "pdf"; } else if (url.includes("ironsoftware.com") || url.includes("ironsoftware.local")) { if (url.includes("/word/")) return "word"; if (url.includes("/ocr/")) return "ocr"; if (url.includes("/webscraper/")) return "webscraper"; if (url.includes("/barcode/")) return "barcode"; if (url.includes("/excel/")) return "excel"; if (url.includes("/qr/")) return "qr"; if (url.includes("/zip/")) return "zip"; if (url.includes("/word/")) return "word"; if (url.includes("/print/")) return "print"; if (url.includes("/securedoc/")) return "securedoc"; if (url.includes("/ppt/")) return "ppt"; if (url.includes("/python/excel/")) return "excel-python"; return "suite"; } } function enabledAbandonTrialForm() { function s(e = "") { const headers = new Headers(); headers.append("Content-Type", "application/json"); const body = JSON.stringify({ "fields": [{ "name": "email", "value": e }, { "name": "interested_products", "value": getHsProductCodeFromUrl() } ], "context": { "pageUri": window.location.href, "pageName": window.location.href.split('#')[0] } }); fetch("https://api.hsforms.com/submissions/v3/integration/submit/22630553/e036830d-c04a-4cb9-a5a0-2ba606d5de9f", { method: "POST", headers: headers, body: body, redirect: "follow" }).then((response) => response.text()).then((result) => console.log(result)).catch((error) => console.error(error)); } const w = 'email'; const t = 'trial-license'; const l = 'trial-license-new'; const f = 'name'; const fullScreenTrialModal = document.getElementById(t); if (fullScreenTrialModal && fullScreenTrialModal.classList.contains(l)) { fullScreenTrialModal.addEventListener('hide.bs.modal', function() { let e = []; document.querySelectorAll('#' + t + ' input[' + f + '="' + w + '"]').forEach(function(input) { if (input.value != '' && input.value != null && input.value.length >= 4) { e.push(input.value); } }); if (e.length > 0) { s(e[0]); } }); } }; function enabledSocialTrial() { const target = '.modal#trial-license .right_content.page_one'; const insertAfter = '.no_credit_required'; // Add place holder for social login document.querySelector(target + ' ' + insertAfter).insertAdjacentHTML("afterend", '<div id="firebaseui-auth-container"><div class="or_separator">OR</div></div>'); const firebaseuiAuthContainer = document.querySelector(target + ' #firebaseui-auth-container'); const currentPageUri = window.location.href; function submitHsform(formData) { const myHeaders = new Headers(); const hsu = "https://api.hsforms.com/submissions/v3/integration/submit/23795711/98897ae8-f5f7-4636-ae9e-98d808bc59b7"; myHeaders.append("Content-Type", "application/json"); const raw = JSON.stringify({ "fields": [{ "name": "email", "value": formData.email }, { "name": "firstname", "value": formData.name }, { "name": "comment", "value": "Submit via social login" } ], "context": { "pageUri": currentPageUri, "pageName": "Trial Submit" } }); fetch(hsu, { method: "POST", headers: myHeaders, body: raw, redirect: "follow" }) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); } // helper to load a script function loadScript(src) { return new Promise(resolve => { const s = document.createElement('script'); s.src = src; s.onload = resolve; document.head.appendChild(s); }); } // helper to load CSS function loadCSS(href) { const l = document.createElement('link'); l.rel = "stylesheet"; l.href = href; document.head.appendChild(l); } // Make sure related files are loaded, prevent miss behavior. Promise.all([ loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"), loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-auth-compat.js"), loadScript("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.js"), loadCSS("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.css"), ]).then(() => { // Firebase config const firebaseConfig = { apiKey: "AIzaSyCsJiQyqdfI_YcNRxxpVUJ_pvicKmH9dX4", authDomain: "iron-authentication.firebaseapp.com", projectId: "iron-authentication", storageBucket: "iron-authentication.firebasestorage.app", messagingSenderId: "381801101678", appId: "1:381801101678:web:2d637bb0cdf2377998e97f" }; // init authn app firebase.initializeApp(firebaseConfig); // FirebaseUI const ui = new firebaseui.auth.AuthUI(firebase.auth()); ui.start('#firebaseui-auth-container', { signInFlow: 'popup', signInOptions: [{ provider: firebase.auth.GoogleAuthProvider.PROVIDER_ID, scopes: [ 'email', 'profile', ], customParameters: { prompt: 'select_account' } }, { provider: firebase.auth.GithubAuthProvider.PROVIDER_ID, scopes: [ 'user:email', 'read:user', ], customParameters: { prompt: 'select_account' } }, ], callbacks: { signInSuccessWithAuthResult: function(authResult) { const user = authResult.user; const userEmail = user.email || user.providerData[0]?.email; const userName = user.displayName; // Place info into the HS form const emailInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="email"]'); const nameInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="firstname"]'); // interact the dom document.querySelector('.modal#trial-license .right_content.page_one').style.display = 'none'; document.querySelector('.modal#trial-license .right_content.page_two').style.display = 'block'; var emailInputField = document.querySelector('.modal#trial-license .placeholder__hsform--two input[name="email"]'); if (emailInputField) { emailInputField.readOnly = true; emailInputField.value = userEmail; emailInputField.dispatchEvent(new Event('change', { bubbles: true })); } if (emailInput) { emailInput.value = userEmail; emailInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } if (nameInput) { nameInput.value = userName; nameInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } submitHsform({ "email": userEmail, "name": userName }) firebaseuiAuthContainer.style.display = 'none'; return false; } } }); }); return; } // enabledAbandonTrialForm(); // enabledSocialTrial(); </script> <script> /* trialFormSetStep("#trial-license", 1); modalId = "#trial-license"; */ function trialFormSetStep(modal_id, step) { // check is suite modal const isSuite = getHsProductCodeFromUrl() === 'suite'; const modal = document.querySelector(modal_id); const show = (selector) => modal.querySelector(selector).style.display = 'block'; const hide = (selector) => modal.querySelector(selector).style.display = 'none'; if (step === 1) { // left contents show('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); // right forms show('.page_one'); hide('.page_two'); hide('.page_three'); hide('.page_submitted'); } else if (step === 2) { // left contents show('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); show('.page_two'); hide('.page_three'); hide('.page_submitted'); } else if (step === 3) { // left contents hide('.group__started_for_free'); show('.group__started_for_free_completed'); show('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); hide('.page_two'); show('.page_three'); hide('.page_submitted'); hide('.right .trusted_by'); show('.right .trial_key_sent'); } else if (step === 4) { // left contents hide('.group__started_for_free'); show('.group__started_for_free_completed'); show('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); hide('.page_two'); hide('.page_three'); show('.page_submitted'); show('.right .trusted_by'); hide('.right .trial_key_sent'); } /* override for suite modal */ if (isSuite == true) { // left contents for suite hide('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); show('.group__suite'); hide('.formright_submitted--products'); show('.formright_submitted--suite'); } } window.addEventListener("load", function() { // enabled 3 steps form (won test) window.IRON = window.IRON || {}; window.IRON.enabled3StepsTrialForm = true; }); window.addEventListener("DOMContentLoaded", function() { trialFormSetStep("#trial-license", 1); }); </script> <script data-hbspt-form> /* settings of from one */ var hsFormOptions_one = { region: "na1", portalId: "22630553", formId: "78c61202-075f-4baa-909b-54216b9dede2", // new form information form for all product formInstanceId: "modal-trial-license", locale: "es", target: "#trial-license .placeholder__hsform--one", cssClass: "hsform_error_v2 hsform_floating_label", submitButtonClass: "hs-button primary large", submitText: "Continuar →", inlineMessage: "<div class=\"d-none\"></div>", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"Por favor ingrese una direcci\u00f3n de email v\u00e1lida","firstname":"Por favor ingrese su nombre","countrycode":"","phone":"Un n\u00famero de tel\u00e9fono v\u00e1lido solo puede contener n\u00fameros, +()-. o x","preferred_communication":"Seleccione un m\u00e9todo de contacto preferido"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); removeHSFormPlaceHolder($form); }, onFormSubmitted: function ($form, data) { trialFormSetStep("#trial-license", 2); // trigger goal start trigger_goal('trial_form_submitted'); setLocalStorageIfTrialSubmitted(); // trigger VWO goal window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(238);}); // Fire Custom Event when form submited dataLayer.push({'event':'trial-from-submitted'}); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end /// push submited data to 2nd form and mark readonly setTimeout(function() { $(".modal#trial-license .placeholder__hsform--two input[name='email']").attr('readonly', true).val(data.submissionValues.email).change(); }, 200); }, translations: { es: { fieldLabels: {"email":"Su Email Empresarial","firstname":"Nombre","countrycode":"C\u00f3digo de Marcado","phone":"N\u00famero de tel\u00e9fono","preferred_communication":"M\u00e9todo de contacto preferido"} } }, }; /* settings of from two */ var hsFormOptions_two = { region: "na1", portalId: "22630553", formId: "dbd072d1-1098-4c98-bdc3-7255fc2e0d6b", // existing trial form for each product locale: "es", target: "#trial-license .placeholder__hsform--two", cssClass: "trialFormTwo hsform_error_v2 hsform_floating_label", submitButtonClass: "hs-button primary large", submitText: "Continuar →", inlineMessage: "<div class=\"d-none\"></div>", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"Por favor ingrese una direcci\u00f3n de email v\u00e1lida","firstname":"Por favor ingrese su nombre","countrycode":"","phone":"Un n\u00famero de tel\u00e9fono v\u00e1lido solo puede contener n\u00fameros, +()-. o x","preferred_communication":"Seleccione un m\u00e9todo de contacto preferido"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); removeHSFormPlaceHolder($form); }, onFormSubmitted: function ($form, data) { // change step to meeting form trialFormSetStep("#trial-license", 3); // trigger window resize for HubSpot meeting form to recalculate the height after update data-src window.dispatchEvent(new Event('resize')); setTimeout(function() { // update iframe from data-src, start const email = data['submissionValues']['email']; const name = data['submissionValues']['firstname']; const phone = data['submissionValues']['phone']; var bookingFormUrl = $('#trial-license .hsform_schedule_meeting .meetings-iframe-container').attr('data-src'); // generate new data-src bookingFormUrl = bookingFormUrl + '&email=' + email; bookingFormUrl = bookingFormUrl + '&firstname=' + name; bookingFormUrl = bookingFormUrl + '&phone=' + phone; $('#trial-license .hsform_schedule_meeting .meetings-iframe-container').attr('data-src', bookingFormUrl); // update iframe from data-src, end // call next form manually after update data-src $.getScript('https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js', function() { }); // listen for the meeting form submit, start // const meetingEventOrigin = 'https://meetings.hubspot.com'; const meetingEventOrigin = 'https://hub.ironsoftware.com'; function handleMessage(event) { // Validate the origin first if (event.origin === meetingEventOrigin) { // only if meetingBookSucceeded if (event.data?.meetingBookSucceeded === true) { // goal for meeting form of 3 steps trial window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(239);}); // Remove this listener after success window.removeEventListener('message', handleMessage); trialFormSetStep("#trial-license", 4); } } } // Register the listener window.addEventListener('message', handleMessage); // listen for the meeting form submit, end }, 200); }, translations: { es: { fieldLabels: {"email":"Su Email Empresarial","firstname":"Nombre","countrycode":"C\u00f3digo de Marcado","phone":"N\u00famero de tel\u00e9fono","preferred_communication":"M\u00e9todo de contacto preferido"} } }, } // load embed forms after hsoptions is ready document.addEventListener("DOMContentLoaded", function() { const selector = document.querySelector("#trial-license .placeholder__hsform--one"); const modalSelector = document.querySelector("#trial-license.modal_new"); modalSelector.addEventListener("shown.bs.modal", function() { embedCustomHubspotForm(selector, hsFormOptions_one); embedCustomHubspotForm(selector, hsFormOptions_two, false); }, { once: true }); }); </script> <div class="modal modal_new trial-license-new cv-auto" id="trial-license" tabindex="-1" data-bs-backdrop="true" data-form-id="dbd072d1-1098-4c98-bdc3-7255fc2e0d6b" style="" data-js-modal-id="trial-license"> <div class="modal-dialog modal-dialog-scrollable modal-fullscreen"> <div class="modal-content p-0"> <div class="position-relative z-1"> <i class="fa-solid fa-x" data-bs-dismiss="modal" aria-hidden="true" style="position:absolute; top:12px; right:12px; width:40px; height:40px; cursor:pointer; display:flex; align-items:center; justify-content:center;font-size:18px; color:#181818;"></i> </div> <div class="modal-body p-0"> <div id="formtrial" class="modal_body"> <div class="modal-loaded donotdelete"></div> <div class="d-flex h-100 gap-0"> <div class="left d-none d-lg-block"> <div class="wrapper"> <div style="flex:0 1 56px;"><!-- spacer --></div> <div><img src="/img/products/ironpdf-logo-text-dotnet.svg" alt="ironpdf_for_dotnet_log2o" class="product_logo" loading="lazy"></div> <div style="flex:0 1 48px;"><!-- spacer --></div> <div class="bg_wrapper group__started_for_free"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="40" height="40" alt="Tecla azul en círculo" loading="lazy">Comience gratis</div> <div class="subtitle">No se requiere tarjeta de crédito</div> </section> <section class="content"> <article> <div class="h2">Probar en un entorno en vivo</div> <p>Probar en producción sin marcas de agua.<br>Funciona donde lo necesites.</p> <div class="floating_icon"><i class="fa-kit fa-square-arrow-in"></i></div> </article> <article> <div class="h2">Producto completamente funcional</div> <p>Obtén 30 días de producto completamente funcional.<br>Instálalo y ejecútalo en minutos.</p> <div class="floating_icon"><i class="fa-kit fa-calendar-bottom-check"></i></div> </article> <article> <div class="h2">Soporte técnico 24/5</div> <p>Acceso completo a nuestro equipo de soporte técnico durante tu prueba del producto</p> <div class="floating_icon"><i class="fa-regular fa-messages-question"></i></i></div> </article> </section> </div> <div class="bg_wrapper group__started_for_free_completed"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/checked_circle_grey.svg" width="40" height="40" alt="Tecla gris en círculo" loading="lazy">Comience gratis</div> <div class="subtitle">El formulario de prueba se envió con éxito.</div> </section> <section class="content"> </section> </div> <div class="bg_wrapper group__booking"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/calendar_circle_blue.svg" width="40" height="40" alt="Calendario en círculo" loading="lazy">Reserve demostración en vivo gratis</div> <div class="subtitle">Sin contacto, sin datos de tarjeta, sin compromisos <span class="detail">Reserve una demostración personal de 30 minutos.<span></div> </section> <section class="content"> <div class="title_of_listing">Así es como será:</div> <article> <p>Demostración en vivo de nuestro producto y características clave</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> <article> <p>Recomendaciones de características del proyecto</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> <article> <p>Se responde a todas sus preguntas para asegurarse de que dispone de toda la información que necesita. (Sin ningún tipo de compromiso)</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> </section> </div> <div class="bg_wrapper group__booking_completed"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/checked_circle_grey.svg" width="40" height="40" alt="Tecla gris en círculo" loading="lazy">Reserve demostración en vivo gratis</div> <div class="subtitle">Su reserva se ha completado <span class="detail">Consulte su correo electrónico para obtener confirmación</span></div> </section> <section class="content"> </section> </div> <style> ul.suite_features { list-style: none; li + li { margin-top: 6px } } .grid_listing_products { margin-top: 48px; display: grid; grid-template-columns: auto auto; row-gap:16px; justify-content: space-between; } </style> <div class="group__suite" style="display:none;"> <h2 class="iron_color--deep_blue iron_font--black iron_fs--30" style="margin:0 0 16px;">Want to deploy IronSuite to a live project for FREE?</h2> <h3 class="iron_color--pink iron_font--bold iron_fs--20" style="margin:24px 0 16px;">What’s included?</h3> <ul class="suite_features iron_color--black iron_font--normal iron_fs--18 p-0 m-0"> <li><i class="fa-solid fa-check iron_color--green me-2"></i>Test in production without watermarks</li> <li><i class="fa-solid fa-check iron_color--green me-2"></i>30 days fully functional product</li> <li><i class="fa-solid fa-check iron_color--green me-2"></i>24/5 technical support during trial</li> </ul> <div class="grid_listing_products"> <div><img src="\img\products\h-126\logo-ironpdf.svg" height="32" width="auto" alt="ironpdf Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironword.svg" height="32" width="auto" alt="ironword Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironxl.svg" height="32" width="auto" alt="ironxl Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironppt.svg" height="32" width="auto" alt="ironppt Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironocr.svg" height="32" width="auto" alt="ironocr Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironbarcode.svg" height="32" width="auto" alt="ironbarcode Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironqr.svg" height="32" width="auto" alt="ironqr Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironprint.svg" height="32" width="auto" alt="ironprint Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironzip.svg" height="32" width="auto" alt="ironzip Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironwebscraper.svg" height="32" width="auto" alt="ironwebscraper Logo" loading="lazy"></div> </div> </div> <div style="flex:1 1 auto;"><!-- spacer --></div> <div class="modal_new_trial__support_team"> <div class="image_wrapper"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-6.webp" loading="lazy" alt="Support Team Member 6 related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-14.webp" loading="lazy" alt="Support Team Member 14 related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-4.webp" loading="lazy" alt="Support Team Member 4 related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-2.webp" loading="lazy" alt="Support Team Member 2 related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo"> </div> <div class="online">En línea 24/5</div> </div> <div class="need_help"><strong>¿Necesita ayuda?</strong> Nuestro equipo de ventas estará encantado de ayudarle.</div> <a href="https://ironsoftware.com/es/enterprise/trial" class="enterprise-trial__cta">Prueba la versión de prueba Enterprise<i class="fa-solid fa-arrow-right"></i></a> <div style="flex:0 1 48px;"><!-- spacer --></div> </div> </div> <div class="right" style="flex:1 1 auto;"> <div class="wrapper"> <div style="flex:0 1 80px;"><!-- spacer --></div> <div class="d-none text-center"> <img loading="lazy" src="/img/products/ironpdf-logo-text-dotnet.svg" alt="ironpdf_for_dotnet_log2o" class="product_logo" style="max-height:50px;" height="50" width="auto"> </div> <!-- Page One --> <div class="right_content page_one"> <div class="header"> <div><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="80" height="80" alt="Tecla en el círculo azul" loading="lazy"></div> <div class="h2">Obtenga su <strong class="visible-xs-block visible-sm-inline visible-md-inline visible-lg-inline">clave de prueba gratuita de 30 días</strong> al instante.</div> </div> <div style="height:48px;"><!-- spacer --></div> <div class="placeholder__hsform--one"></div> <div> <div class="no_credit_required"><img loading="lazy" src="/img/modals/trial-license-new/bullet_checked.svg" width="16" height="16" alt="bullet_checked">No se requiere tarjeta de crédito ni creación de cuenta</div> </div> </div> <!-- Page Two --> <div class="right_content page_two" style="display:none;"> <div class="header"> <div><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="80" height="80" alt="Tecla en el círculo azul" loading="lazy"></div> <div class="h2">Obtenga su <strong class="visible-xs-block visible-sm-inline visible-md-inline visible-lg-inline">clave de prueba gratuita de 30 días</strong> al instante.</div> </div> <div style="height:24px;"><!-- spacer --></div> <div class="placeholder__hsform--two"></div> <div> <div class="no_credit_required"><img loading="lazy" src="/img/modals/trial-license-new/bullet_checked.svg" width="16" height="16" alt="Tecla azul en círculo">No se requiere tarjeta de crédito ni creación de cuenta</div> </div> </div> <!-- Page Three (meeting form) --> <div class="right_content page_three" style="display:none;"> <div class="header"> <div><img src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="80" height="80" alt="Green Check in orange circle" loading="lazy"></div> <div class="h2">El formulario de prueba se ha enviado <span class="iron_font--bold">exitosamente</span>.</div> </div> <div style="height:24px;"><!-- spacer --></div> <div class="hsform_schedule_meeting"> <!-- Start of Meetings Embed Script --> <div class="meetings-iframe-container" data-src="https://hub.ironsoftware.com/meetings/iron-software-sales/demo-trial?embed=true"></div> <!-- End of Meetings Embed Script --> </div> </div> <!-- Page Submitted --> <div class="right_content page_submitted formright_submitted" style="display:none;"> <div class="d-none d-md-block" style="flex:0 1 80px;"><!-- spacer --></div> <div class="d-block d-md-none" style="flex:0 1 24px;"><!-- spacer --></div> <!-- submitted for products --> <div class="formright_submitted--products" style="display:block;"> <div><img loading="lazy" src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"></div> <div class="title">Gracias por iniciar una prueba</div> <div class="text p-3"><p>Por favor, compruebe su correo electrónico para la clave de licencia de prueba.</p><p>Si usted no recibe un correo electrónico, por favor, inicie un <a href="#livechat" onclick="return window.HubSpotConversations.widget.open()">chat en vivo</a> o correo electrónico <a href="mailto:support@ironsoftware.com">support@ironsoftware.com</a></p></div> <div> <div style="margin:0 auto; width:100%; max-width:248px;"> <div class="my-3"><a class="trial-license__action-button trial-license__action-button_red m-0" style="width:100%; font-size:14px;" href="https://www.nuget.org/packages/IronPdf/" target="_blank"><i class="trial-license__action-button-icon nuget-icon-white2"></i><span class="trial-license__action-button-text">Instalar con NuGet</span></a></div> <div class="my-3"><a class="trial-license__action-button trial-license__action-button_white m-0" style="width:100%; font-size:14px;" href="/es/licensing/"><span class="trial-license__action-button-text">Ver licencias</span></a></div> </div></div> </div> <!-- submitted for suite --> <div class="formright_submitted--suite" style="display:none; padding-top:80px;"> <div><img loading="lazy" src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"></div> <div class="title">Gracias</div> <div class="text p-3">Su clave de prueba debería estar en el correo electrónico.<br>Si no lo está, por favor contacte a <a href="mailto:support@ironsoftware.com" aria-label="Contact support" class="iron_color--deep_blue iron_font--medium iron_hover_color--pink">support@ironsoftware.com</a></div> </div> </div> <div style="flex:1 1 96px"><!-- spacer --></div> <section class="trusted_by"> <ul class="our_clients"><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_aetna.svg" alt="Logo Aetna" width="80" height="20"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_nasa.svg" alt="Logo NASA" width="64" height="52"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_ge.svg" alt="Logo GE" width="54" height="54"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_porsche.svg" alt="Logo Porsche" width="40" height="52"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_usds.svg" alt="Logo USDA" width="54" height="54"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_qatar.svg" alt="Logo Qatar" width="114" height="32"></li></ul> <div class="h2">Únase a millones de ingenieros que han probado IronPDF</div> </section> <section class="trial_key_sent text-center iron_color--black iron_font--normal iron_fs--14 iron_lh--16" style="display:none;"> Su clave de prueba debería estar en el correo electrónico.<br>Si no lo está, por favor contacte a <a href="mailto:support@ironsoftware.com" aria-label="Contact support" class="iron_color--deep_blue iron_font--medium iron_hover_color--pink">support@ironsoftware.com</a> </section> <div style="flex:0 1 80px"><!-- spacer --></div> </div> </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css", "modals/trial-license-new.css"]; importModal(modals, "trial-license", debug()); }); }); </script> <script> function getHsProductCodeFromUrl() { const url = window.location.href; if (url.includes("ironpdf.com") || url.includes("ironpdf.local")) { if (url.includes("/java/")) return "pdf-java"; if (url.includes("/python/")) return "pdf-python"; if (url.includes("/nodejs/")) return "pdf-nodejs"; return "pdf"; } else if (url.includes("ironsoftware.com") || url.includes("ironsoftware.local")) { if (url.includes("/word/")) return "word"; if (url.includes("/ocr/")) return "ocr"; if (url.includes("/webscraper/")) return "webscraper"; if (url.includes("/barcode/")) return "barcode"; if (url.includes("/excel/")) return "excel"; if (url.includes("/qr/")) return "qr"; if (url.includes("/zip/")) return "zip"; if (url.includes("/word/")) return "word"; if (url.includes("/print/")) return "print"; if (url.includes("/securedoc/")) return "securedoc"; if (url.includes("/ppt/")) return "ppt"; if (url.includes("/python/excel/")) return "excel-python"; return "suite"; } } function enabledAbandonTrialForm() { function s(e = "") { const headers = new Headers(); headers.append("Content-Type", "application/json"); const body = JSON.stringify({ "fields": [{ "name": "email", "value": e }, { "name": "interested_products", "value": getHsProductCodeFromUrl() } ], "context": { "pageUri": window.location.href, "pageName": window.location.href.split('#')[0] } }); fetch("https://api.hsforms.com/submissions/v3/integration/submit/22630553/e036830d-c04a-4cb9-a5a0-2ba606d5de9f", { method: "POST", headers: headers, body: body, redirect: "follow" }).then((response) => response.text()).then((result) => console.log(result)).catch((error) => console.error(error)); } const w = 'email'; const t = 'trial-license'; const l = 'trial-license-new'; const f = 'name'; const fullScreenTrialModal = document.getElementById(t); if (fullScreenTrialModal && fullScreenTrialModal.classList.contains(l)) { fullScreenTrialModal.addEventListener('hide.bs.modal', function() { let e = []; document.querySelectorAll('#' + t + ' input[' + f + '="' + w + '"]').forEach(function(input) { if (input.value != '' && input.value != null && input.value.length >= 4) { e.push(input.value); } }); if (e.length > 0) { s(e[0]); } }); } }; function enabledSocialTrial() { const target = '.modal#trial-license .right_content.page_one'; const insertAfter = '.no_credit_required'; // Add place holder for social login document.querySelector(target + ' ' + insertAfter).insertAdjacentHTML("afterend", '<div id="firebaseui-auth-container"><div class="or_separator">OR</div></div>'); const firebaseuiAuthContainer = document.querySelector(target + ' #firebaseui-auth-container'); const currentPageUri = window.location.href; function submitHsform(formData) { const myHeaders = new Headers(); const hsu = "https://api.hsforms.com/submissions/v3/integration/submit/23795711/98897ae8-f5f7-4636-ae9e-98d808bc59b7"; myHeaders.append("Content-Type", "application/json"); const raw = JSON.stringify({ "fields": [{ "name": "email", "value": formData.email }, { "name": "firstname", "value": formData.name }, { "name": "comment", "value": "Submit via social login" } ], "context": { "pageUri": currentPageUri, "pageName": "Trial Submit" } }); fetch(hsu, { method: "POST", headers: myHeaders, body: raw, redirect: "follow" }) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); } // helper to load a script function loadScript(src) { return new Promise(resolve => { const s = document.createElement('script'); s.src = src; s.onload = resolve; document.head.appendChild(s); }); } // helper to load CSS function loadCSS(href) { const l = document.createElement('link'); l.rel = "stylesheet"; l.href = href; document.head.appendChild(l); } // Make sure related files are loaded, prevent miss behavior. Promise.all([ loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"), loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-auth-compat.js"), loadScript("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.js"), loadCSS("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.css"), ]).then(() => { // Firebase config const firebaseConfig = { apiKey: "AIzaSyCsJiQyqdfI_YcNRxxpVUJ_pvicKmH9dX4", authDomain: "iron-authentication.firebaseapp.com", projectId: "iron-authentication", storageBucket: "iron-authentication.firebasestorage.app", messagingSenderId: "381801101678", appId: "1:381801101678:web:2d637bb0cdf2377998e97f" }; // init authn app firebase.initializeApp(firebaseConfig); // FirebaseUI const ui = new firebaseui.auth.AuthUI(firebase.auth()); ui.start('#firebaseui-auth-container', { signInFlow: 'popup', signInOptions: [{ provider: firebase.auth.GoogleAuthProvider.PROVIDER_ID, scopes: [ 'email', 'profile', ], customParameters: { prompt: 'select_account' } }, { provider: firebase.auth.GithubAuthProvider.PROVIDER_ID, scopes: [ 'user:email', 'read:user', ], customParameters: { prompt: 'select_account' } }, ], callbacks: { signInSuccessWithAuthResult: function(authResult) { const user = authResult.user; const userEmail = user.email || user.providerData[0]?.email; const userName = user.displayName; // Place info into the HS form const emailInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="email"]'); const nameInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="firstname"]'); // interact the dom document.querySelector('.modal#trial-license .right_content.page_one').style.display = 'none'; document.querySelector('.modal#trial-license .right_content.page_two').style.display = 'block'; var emailInputField = document.querySelector('.modal#trial-license .placeholder__hsform--two input[name="email"]'); if (emailInputField) { emailInputField.readOnly = true; emailInputField.value = userEmail; emailInputField.dispatchEvent(new Event('change', { bubbles: true })); } if (emailInput) { emailInput.value = userEmail; emailInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } if (nameInput) { nameInput.value = userName; nameInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } submitHsform({ "email": userEmail, "name": userName }) firebaseuiAuthContainer.style.display = 'none'; return false; } } }); }); return; } // enabledAbandonTrialForm(); // enabledSocialTrial(); </script> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-form-sent"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css", "modals/trial-license-new.css"]; importModal(modals, "trial-license-form-sent", debug()); }); }); </script> <div class="modal fade" id="talk-to-sales" tabindex="-1"> <div class="modal-dialog modal-fullscreen modal-dialog-scrollable"> <div class="modal-content talk_to_sales"> <div class="modal-loaded donotdelete"></div> <!-- close modal button --> <button type="button" class="button_close_modal" data-bs-dismiss="modal"><img src="/img/modals/talk_to_sales/icon_close_modal.svg" width="20" height="20" alt="close modal" loading="lazy"></button> <!-- modal content, start --> <div class=""> <div class="d-flex align-items-stretch vh-100"> <div class="content_left d-none d-md-flex flex-column"> <div class="product_logo"><img src="/img/modals/talk_to_sales/main_logo.svg" width="220" height="40" alt="Logo de Iron Suite Enterprise" loading="lazy"></div> <div class="h2">Hablar con Ventas</div> <p class="sub_title">Reserva una Consulta Sin Compromiso</p> <div class="team_expert_photo"> <img src="/img/modals/talk_to_sales/team_expert.webp" width="248" height="56" alt="Equipo de consultoría de Iron Software Enterprise" class="img-fluid" loading="lazy"> </div> <div class="how_we_help"> <div class="h3">Cómo podemos ayudar:</div> <ul> <li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Consulta sobre tu flujo de trabajo y puntos de dolor</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Observa cómo otras empresas resuelven sus necesidades de documentos .NET</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Todas tus preguntas respondidas para asegurarte de que tienes toda la información que necesitas. (Sin compromiso alguno.)</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Solicita una cotización a medida</span></li> </ul> </div> </div> <div class="content_right d-flex flex-column"> <div style="flex:0 1 84px;"><!-- spacer --></div> <div class="content_right__hsform_header"> <div class="form_title">Obtén tu Consulta Sin Compromiso</div> <p class="sub_title">Completa el formulario a continuación o envía un correo a <a href="mailto:sales@ironsoftware.com" aria-title="">sales@ironsoftware.com</a></p> </div> <div id="form_wrapper" class="form_wrapper" style="min-height: 488px;"> <div class="form_placeholder"></div> <p class="text_below_form"><i class="fa-solid fa-shield-heart"></i>Tus detalles siempre serán <strong>mantenidos confidenciales.</strong></p> </div> <div style="flex:0 1 98px; min-height:24px;"><!-- spacer --></div> <div class="trusted_by"> <div class="h3">Confiado por millones de ingenieros en todo el mundo</div> <div><img src="/img/modals/talk_to_sales/trusted_by_logos.webp" width="552" height="97" alt="Logos de clientes de Iron Software" class="img-fluid" loading="lazy"></div> </div> </div> </div> </div> <!-- modal content, end --> </div> </div> </div> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { // iron_hsform_error_v2 (2024 DEC) // required: css group ".iron_hsform_error_v2" // required: label from hubspot // HubSpot form CSS is global; with multiple instances it can affect the wrong form. // Toggle the stylesheet with the modal to prevent modal submissions // from visually updating the page form. let hsCss; var salesTalkSelector = document.querySelector("#talk-to-sales"); salesTalkSelector?.addEventListener("hidden.bs.modal", (evt) => { if (evt.target.id === "talk-to-sales") { hsCss = document.querySelector(`link[rel="stylesheet"][type="text/css"][href="/front/css/hbsptforms.css?v=1776149867"]`); hsCss && (hsCss.disabled = true); } }); salesTalkSelector?.addEventListener("show.bs.modal", (evt) => { if (evt.target.id === "talk-to-sales") { hsCss && (hsCss.disabled = false); } }); var this_hsFormID = "dd27b8f3-83d9-4518-8fbc-8d07ec8b0761"; var this_hsFormSubmitText = "Solicitar cotización"; var this_hsFormSubmittedText = '<div class="hsform_submitted_badge"></div><div class="hsform_submitted_text">¡Gracias! por enviar el formulario</div>'; var this_hsFormConfig = { region: "na1", portalId: "22630553", formId: this_hsFormID, locale: "es", inlineMessage: this_hsFormSubmittedText, submitText: this_hsFormSubmitText, target: "#form_wrapper", cssClass: "hsform_talk-to-sales iron_hsform_error_v2", translations: { "es": { fieldLabels: {"email":"Su Email Empresarial","firstname":"Nombre","countrycode":"Código de Marcado","phone":"Número de teléfono","preferred_communication":"Método de contacto preferido"} } }, onFormReady: function($form) { // alway scoped with $form // inject error element (icon and tooltip) var this_hsFormErrors = {"email":"Por favor ingrese una dirección de email válida","firstname":"Por favor ingrese su nombre","countrycode":"","phone":"Un número de teléfono válido solo puede contener números, +()-. o x","preferred_communication":"Seleccione un método de contacto preferido"}; var this_hsFormErrorTooltipMessages = { ".hs-form-field.hs-firstname": this_hsFormErrors.firstname || "Por favor ingrese su nombre", ".hs-form-field.hs-email": this_hsFormErrors.email || "Por favor ingrese una dirección de email válida", ".hs-form-field.hs-phone": this_hsFormErrors.phone || "Un número de teléfono válido solo puede contener números, +()-. o x", } for (var classname in this_hsFormErrorTooltipMessages) { const errorElement = $('<div/>', { class: 'iron-hsform-error-element', 'data-toggle': 'tooltip', 'data-placement': 'top', title: this_hsFormErrorTooltipMessages[classname] }); $form.find(classname).append(errorElement); } // create bootstrap's tooltip inside this form only $form.find('[data-toggle="tooltip"]').each(function(index, el) { bootstrap.Tooltip.getOrCreateInstance(this); }); }, onFormSubmitted: function($form) { // hide form header, form making sense of submitted form $form.parent().parent().parent().find('.content_right__hsform_header').hide(); window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(229);}); } }; setupModalPopupWithHubSpotForm(salesTalkSelector, "talk-to-sales", ["modals/talk_to_sales.css"], this_hsFormConfig, "#talk-to-sales div.form_wrapper"); }); </script> <!-- modal start --> <div class="modal fade cv-auto" id="booking-demo" tabindex="-1"> <div class="modal-dialog modal-fullscreen modal-dialog-scrollable"> <div class="modal-content modal_booking_demo"> <div class="modal-loaded donotdelete"></div> <!-- close modal button --> <button type="button" class="button_close_modal" data-bs-dismiss="modal" aria-label="Close"><img src="/img/modals/booking_demo/icon_close_modal.svg" width="20" height="20" alt="close modal button" loading="lazy"></button> <!-- modal content, start --> <div class=""> <div class="d-flex align-items-stretch vh-100"> <div class="content_left d-none d-md-flex flex-column"> <div class="product_logo_wrapper"><img class="product_logo" src="/img/products/ironpdf-logo-text-dotnet-white.svg" width="170" height="28" alt="IronPDF para .Net" loading="lazy"></div> <div style="flex:0 1 56px;"><!-- spacer --></div> <div class="h2">Reserve demostración en vivo gratis</div> <p class="sub_title">Reserve una demostración personal de 30 minutos.</p> <p class="sub_title_emphasis">Sin contrato, sin datos de tarjeta, sin compromisos.</p> <div style="flex:0 1 12px;"><!-- spacer --></div> <div class="team_expert_photo_wrapper"> <img loading="lazy" src="/img/modals/booking_demo/team_expert.webp" width="496" height="112" alt="Equipo de demostración de Iron Software" class="team_expert_photo"> </div> <div style="flex:0 1 40px;"><!-- spacer --></div> <div class="how_we_help"> <span class="h3">Así es como será:</h3> <ul> <li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Demostración en vivo de nuestro producto y características clave</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Recomendaciones de características del proyecto</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Todas sus preguntas serán respondidas para asegurarse de que tiene toda la información que necesita.<br>(Sin compromiso alguno.)</span></li> </ul> </div> </div> <div class="content_right d-flex flex-column"> <div class="d-none d-md-block" style="flex:0 0 48px;"><!-- spacer --></div> <div class="d-none d-md-block hsform_progress"> <div class="line"></div> <div class="dot step-1"></div> <div class="dot step-2"></div> <div class="text step-1">ELEGIR HORA</div> <div class="text step-2">SU INFO</div> </div> <div class="form_title">Reserve su <strong>Demostración en Vivo</strong> gratuita</div> <div class="d-none d-md-block" style="height:72px;"><!-- spacer --></div> <div class="content_right__hsform_header"> <div class="text-center"> <img loading="lazy" src="/img/modals/booking_demo/booking_badge.svg" class="img-fluid mx-auto" width="234" height="170" alt="Booking Badge related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo"> </div> </div> <div class="hsform_loader_wrapper"> <div class="hsform_loader"></div> </div> <div class="form_wrapper hsform_schedule_email" style="min-height: 201px;"></div> <div class="hsform_schedule_meeting"> <!-- Start of Meetings Embed Script --> <div class="meetings-iframe-container" data-src="https://hub.ironsoftware.com/meetings/ironsoftware/demo?embed=true"></div> <!-- End of Meetings Embed Script --> </div> <div style="flex:0 0 24px;"><!-- spacer --></div> <div style="flex:0 1 98px;"><!-- spacer --></div> <div class="trusted_by"> <h3 class="h3">Confiado por millones de ingenieros en todo el mundo</h3> <div><img loading="lazy" src="/img/modals/booking_demo/trusted_by_logos.webp" width="574" height="54" alt="Logos de clientes de Iron Software" class="img-fluid"></div> </div> </div> </div> </div> <!-- modal content, end --> </div> </div> </div> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { var bookingDemoSelector = document.querySelector("#booking-demo"); // iron_hsform_error_v2 (2024 DEC) // required: css group ".iron_hsform_error_v2" // required: label from hubspot window.currentModalID = "#booking-demo"; var this_hsFormID = "28570e7d-08f2-41c5-ab5b-b00342515d68"; var this_hsFormSubmitText = "Comience a reservar"; var this_hsFormConfig = { region: "na1", portalId: "22630553", formId: this_hsFormID, locale: 'en', submitText: this_hsFormSubmitText, cssClass: "iron_hsform_meeting iron_hsform_error_v2", onFormReady: function($form) { /* create error tooltip, start */ // alway scoped with $form // inject error element (icon and tooltip), then hide them var this_hsFormErrorTooltipMessages = { ".hs-form-field.hs-firstname": "Por favor ingrese su nombre", ".hs-form-field.hs-email": "Por favor ingrese una dirección de email válida", ".hs-form-field.hs-phone": "", }; for (var classname in this_hsFormErrorTooltipMessages) { const invalidAttr = $('<div/>', { class: 'invalid-field', 'data-toggle': 'tooltip', 'data-placement': 'top', title: this_hsFormErrorTooltipMessages[classname] }); $form.find(classname).append(invalidAttr); } // create bootstrap's tooltip inside this form only $form.find('[data-toggle="tooltip"]').each(function(index, element) { bootstrap.Tooltip.getOrCreateInstance(element); }); /* create error tooltip, end */ }, onFormSubmitted: function($form, data) { $(currentModalID + ' .content_right__hsform_header').hide(); $(currentModalID + ' .hsform_schedule_email').hide(); $(currentModalID + ' .trusted_by').hide(); $(currentModalID + ' .hsform_loader_wrapper').show(); dataLayer.push({ 'event': 'book_live_demo' }); window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() { _vis_opt_goal_conversion(234); }); setTimeout(function() { // collect email address after form submitted const email = data['submissionValues']['email']; // get data-src from next form var nextFormDataSrc = $('.hsform_schedule_meeting .meetings-iframe-container').attr('data-src'); // generate new data-src nextFormDataSrc = nextFormDataSrc + '&email=' + email // inject new data-src to next form $(currentModalID + ' .hsform_schedule_meeting .meetings-iframe-container').attr('data-src', nextFormDataSrc); // call next form manually after update data-src $.getScript('https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js', function() { $(currentModalID + ' .hsform_loader_wrapper').hide(); $(currentModalID + ' .hsform_schedule_meeting').show(); }); }, 0); }, }; /* for form progress, start */ var hsMeetingFormActivated = false; window.addEventListener("message", function(event) { if (event.origin == "https://meetings.hubspot.com" && event.data == "readyForConsentListener" && hsMeetingFormActivated == false) { hsMeetingFormActivated = true; $(currentModalID + ' .hsform_progress').css("visibility", "visible"); $(currentModalID + ' .hsform_progress .step-1.dot').addClass('active'); $(currentModalID + ' .hsform_progress .step-1.text').addClass('active'); } if (event.origin == "https://meetings.hubspot.com" && event.data != "readyForConsentListener" && hsMeetingFormActivated) { // console.log('>> second meeting form displaying') $(currentModalID + ' .hsform_progress .step-1.dot').addClass('completed'); $(currentModalID + ' .hsform_progress .step-1.dot').html('<i class="fas fa-check"></i>'); $(currentModalID + ' .hsform_progress .step-1.text').addClass('completed'); $(currentModalID + ' .hsform_progress .step-2.dot').addClass('active'); $(currentModalID + ' .hsform_progress .step-2.text').addClass('active'); $(currentModalID + ' .hsform_progress .line').addClass('active'); } if (event.origin == "https://meetings.hubspot.com" && event.data.meetingBookSucceeded && hsMeetingFormActivated) { // console.log('>> meeting form submitted') $(currentModalID + ' .hsform_progress .step-2.dot').addClass('completed'); $(currentModalID + ' .hsform_progress .step-2.dot').html('<i class="fas fa-check"></i>'); $(currentModalID + ' .hsform_progress .step-2.text').addClass('completed'); } }); /* for form progress, end */ setupModalPopupWithHubSpotForm(bookingDemoSelector, "booking-demo", ["modals/booking_demo.css"], this_hsFormConfig, "#booking-demo .form_wrapper.hsform_schedule_email"); }); </script> <!-- modal end --> <!-- Article Documentation Typeform Modal START --> <div class="modal fade cv-auto" id="article-feedback-modal" tabindex="-1" data-bs-backdrop="true" aria-modal="true" aria-hidden="true" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <i class="fas fa-times slide-out-close" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body"> <div class="modal-loaded donotdelete"></div> <div class="article-feedabck__wrapper" id="anchor-improve-the-article" data-tf-widget="zrOqRbmz" data-tf-iframe-props="title=Article feedback" data-tf-medium="snippet" data-tf-hidden="source=https://ironpdf.com/es/blog/using-ironpdf/read-header-footer-itextsharp" data-tf-disable-auto-focus ></div> <script> document.addEventListener("DOMContentLoaded", function() { setupModalPopup("#article-feedback-modal", "article-feedback-modal", ["https://embed.typeform.com/next/embed.js", "modals/article-typeform.css"]); }); </script> </div> </div> </div> </div> <!-- Article Documentation Typeform Modal END --> <!-- Full Width Code Example Modal START --> <div class="modal full-width-code-example-modal cv-auto" tabindex="-1" id="fullWidthCodeExample" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-loaded donotdelete"></div> <div class="modal-header"> <button title="Close" data-bs-dismiss="modal" aria-hidden="true" class="full-width-code-example-modal__close-button"> <i class="fas fa-times" data-bs-dismiss="modal" aria-hidden="true"></i> </button> </div> <div class="modal-body"></div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var copyButtonSibling = null; const fwCSEl = document.querySelector("#fullWidthCodeExample"); const fwCSModal = bsModal(fwCSEl); document.querySelectorAll(".js-full-screen-code-example-modal").forEach((exBtn) => { exBtn.addEventListener("click", (ev) => { copyButtonSibling = Array.from(getSiblings(exBtn)).filter(sibling => sibling.classList.contains('js-clipboard-button') || sibling.classList.contains('copy-clipboard'))[0]; let copyHoverVal = copyButtonSibling.getAttribute("title"); let copyDataHoverVal = copyButtonSibling.getAttribute("data-original-title"); let codeExampleContent = exBtn.closest(".code-content")?.cloneNode(true); if (!codeExampleContent) { codeExampleContent = exBtn.closest(".code-explorer__content").cloneNode(true); } if (codeExampleContent) { fwCSEl.querySelector(".modal-body").replaceChildren(codeExampleContent); fwCSEl.querySelector(".copy-clipboard")?.setAttribute("title", copyDataHoverVal != '' ? copyDataHoverVal : copyHoverVal); openModalPopup("fullWidthCodeExample", null, false); } }); }); fwCSEl.addEventListener("click", (ev) => { const target = ev.target.closest(".js-exit-full-screen-code-example-modal, .full-width-code-example-modal__close-button"); if (!target) return; const sib = Array.from(getSiblings(target)).filter(sibling => sibling.classList.contains('copy-clipboard'))[0]; if (!sib) return; copyButtonSibling.setAttribute('title', sib.getAttribute('title')); fwCSModal.then((modal) => { modal.hide(); }); }); setupModalPopup("#fullWidthCodeExample", "fullWidthCodeExample", ["modals/code-examples.css"]); }); </script> <!-- Full Width Code Example Modal END --> <script> // toggle dropdown trial form function vwoEnabledHsFormAtStickyFooter() { load_$(() => { // load hubspot form dynamically function dynamicLoadHsForms(formOption, target) { function waitForHsptReady() { var interval = setInterval(function() { if (typeof hbspt !== "undefined") { clearInterval(interval); var option = formOption; option.target = target; hbspt.forms.create(option); } }, 10); } if (typeof hbspt === "undefined") { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "//js.hsforms.net/forms/embed/v2.js"; document.getElementsByTagName("head")[0].appendChild(script); script.onload = function() { waitForHsptReady(); }; } else { waitForHsptReady(); } } // disable open the modal on click at sticky footer bar const $footerSticky = $("#footer-sticky"); $footerSticky.replaceWith($footerSticky.clone(true)); // hide default black cta button $('#footer-sticky-cta-button').hide(); // show a variant hsform $('#placeHolderForHsFormAtStickyFooter').show(); // styling variant $("#footer-sticky").css({ 'cursor': 'default', 'height': '52px' }); $('#footer-sticky .support-text').css({ 'cursor': 'default', }); // hsform options const hsFormOptionsAtStickyFooter = { portalId: "22630553", region: "na1", locale: "en", formId: "78c61202-075f-4baa-909b-54216b9dede2", formInstanceId: "sticky-footer-trial", submitText: "Prueba gratis", inlineMessage: "Gracias, por favor revise su correo electrónico para su prueba gratuita.", onFormReady: function($form) { // insert product_id to form hidden input // $form.find('input[name="2-12260276/trial_products"]').val(window.IRON.product.code.toUpperCase()).change(); const el = document.querySelector('#placeHolderForHsFormAtStickyFooter'); const tooltip = new bootstrap.Tooltip(el, { placement: 'top', trigger: 'manual', title: 'Correo electrónico necesario para recibir la clave de prueba', }); const emailInput = $form.find('input[type="email"]')[0]; const observer = new MutationObserver((mutations) => { const mutation = mutations[0]; if (mutation.attributeName === 'class') { if (emailInput.classList.contains('invalid')) { tooltip.show(); setTimeout(() => { tooltip.hide(); }, 3000); } else { tooltip.hide(); } } }); observer.observe(emailInput, { attributes: true, attributeFilter: ['class'] }); }, onFormSubmitted: function($form, data) { // trigger goal start window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() { _vis_opt_goal_conversion(237); }); // Fire Custom Event when form submited dataLayer.push({ 'event': 'trial-from-submitted' }); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end const nextForm = ".modal#trial-license .placeholder__hsform--two form"; const waitForTargetInput = setInterval(() => { if ($(nextForm).length) { clearInterval(waitForTargetInput); $(nextForm + " input[name='email']").val(data.submissionValues.email).change(); $(nextForm + " input[name='email']").attr('readonly', true); } }, 100); // open full trial modal, jump to step 2 trialFormSetStep('#trial-license', 2); $('#trial-license').modal('show'); }, }; dynamicLoadHsForms(hsFormOptionsAtStickyFooter, "#placeHolderForHsFormAtStickyFooter"); }); } </script> <div id="footer-sticky" class="fixed-support-bar footer-sticky__vwo-test js-hide-footer-on-scroll js-search-offset-block js-modal-open" data-modal-id="trial-license" > <div class="support-text"> <span class="support-text__full-power">Prueba de 30 días → Producto completo. Sin límites. Sin tarjeta.</span> <a id="footer-sticky-cta-button" aria-label="Licencia de prueba de Iron Software" class="js-fixed-support-bar-button vwo-homepage-start-trial-cta-button--control btn btn-red btn-white-red" > <i class="fas fa-key d-inline"></i><span class="d-inline">Prueba gratis</span> </a> <div id="placeHolderForHsFormAtStickyFooter"><!-- placeholder --></div> </div> </div> <script> // enabled for debug /* window.onload = function() { vwoEnabledHsFormAtStickyFooter(); }; */ </script> <footer id="footer" class="footer"> <!-- Iron Suite Products --> <div id="new-sc" class="main_product_page new-footer"> <div class="footer__wrapper"> <div class="footer__header"> <a href="https://ironsoftware.com/es/about-us/1-percent-for-the-planet/" class="footer__header-logo"> <img class="footer__logo" src="/img/footer/logo-1_percent.svg" alt="Logo 1 Percent related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo" width="204" height="32" loading="lazy"> </a> <div class="footer__header-content"> <div class="footer__header-tagline"> <div class="footer__icon-wrapper"> <img class="footer__icon" src="/img/footer/textlogo-iron_suite.svg" alt="Textlogo Iron Suite related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo" width="201" height="32" loading="lazy"> </div> <h2 class="footer__title"><span>IronPDF es parte de </span>IRON<strong>SUITE</strong></h2> <p class="footer__subtitle">10 productos API .NET <span>para tus documentos de oficina</span></p> </div> <div class="footer__cta"> <a href="https://ironsoftware.com/es/suite/" class="footer__btn buy-all__btn">Suite completa de 10 productos <i class="fa-solid fa-caret-right"></i></a> <a href="https://ironsoftware.com/es/suite/#trial-license" class="footer__btn free-trial__btn"><i class="fa-solid fa-key"></i>  Prueba gratis <i class="fa-solid fa-caret-right"></i></a> </div> </div> </div> <div class="footer__divider d-none d-xl-block"></div> <div class="footer__products"> <h2 class="visually-hidden" id="footer__products__heading">Enlaces de productos</h2> <ul class="footer__products-list" aria-labelledby="footer__products__heading"> <li class="footer__product"> <a href="/es/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Enlaces de productos" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_pdf.svg" alt="ironpdf_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Crear, leer y editar PDFs. HTML a PDF para .NET.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/es/csharp/word/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Enlaces de productos" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_word.svg" alt="ironword_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Editar archivos DOCX. Sin Office Interop.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/es/csharp/excel/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Enlaces de productos" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_xl.svg" alt="ironxl_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Editar archivos Excel y CSV. Sin Office Interop.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/es/csharp/ppt/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Enlaces de productos" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_ppt.svg" alt="ironppt_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Crear, leer y editar presentaciones. Sin Office Interop.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/es/csharp/ocr/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Enlaces de productos" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_ocr.svg" alt="ironocr_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> OCR en 125 idiomas.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/es/csharp/barcode/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Enlaces de productos" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_barcode.svg" alt="ironbarcode_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Leer y escribir Códigos QR y de Barras.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/es/csharp/qr/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Enlaces de productos" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_qr.svg" alt="ironqr_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Leer y escribir códigos QR.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/es/csharp/zip/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Enlaces de productos" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_zip.svg" alt="ironzip_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Comprimir y descomprimir archivos.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/es/csharp/print/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Enlaces de productos" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_print.svg" alt="ironprint_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Imprimir documentos en .NET.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/es/csharp/webscraper/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Enlaces de productos" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_webscraper.svg" alt="ironwebscraper_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Extraer datos estructurados de sitios web.</span> </a> </li> </ul> </div> </div> </div> <nav class="footer__first-row-wrappe" role="navigation"> <div class="footer__first-row__first-column"> <div class="footer__first-row__logo"> <a href="#"> <img loading="lazy" src="/img/products/footer-top-logo-ironpdf-for-net.svg" alt="IronPDF for .NET" width="268" height="44"> </a> </div> <div class="footer__first-row__logo-description"> <p>Cuando necesitas que tu PDF se parezca al HTML, rápido.</p> </div> </div> <div class="footer__first-row__second-column"> <section class="bifrost"></section> <div class="footer__first-row__second-column__navigation"> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Documentación</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/es/examples/using-html-to-create-a-pdf/" > Ejemplos de Código </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/how-to/create-new-pdfs/" > Guías </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/object-reference/api/" target="_blank" > Referencia API </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/features/" > Características </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/blog/" > Blog </a> </li> <li> <a class="footer__first-row__navigation__link i18n__distrans" href="/assets/ironpdf-brochure.pdf" target="_blank" > Folleto del producto </a> </li> <li> <a class="footer__first-row__navigation__link" data-bs-toggle="tooltip" data-bs-placement="right" title="Ayuda a LLMs y herramientas como ChatGPT y Claude a comprender mejor nuestra documentación" href="/es/llms.txt" target="_blank" > Índice compatible con IA (llms.txt) </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Tutoriales</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/es/docs/" > Comenzar </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/tutorials/html-to-pdf/" > HTML a PDF </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/tutorials/csharp-edit-pdf-complete-tutorial/" > Edición de PDFs en C# </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/how-to/pixel-perfect-html-to-pdf/" > Depurar HTML con Chrome </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Alternativas a VS</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/es/competitors/aspose-vs-ironpdf/" > IronPDF vs Aspose </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/competitors/syncfusion-vs-ironpdf/" > IronPDF vs Syncfusion </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/competitors/itext-vs-ironpdf/" > IronPDF vs iText </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/competitors/apryse-vs-ironpdf/" > IronPDF vs Apryse </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/competitors/questpdf-vs-ironpdf/" > IronPDF vs QuestPDF </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Licencias</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/es/licensing/" > Comprar licencia </a> </li> <li> <a class="footer__first-row__navigation__link" href="https://ironsoftware.com/es/resellers/" target="_blank" > Encontrar distribuidor </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/licensing/upgrades/" > Actualizaciones de licencia </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/licensing/extensions/" > Renovación de licencias </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/get-started/license-keys/" > Uso de claves de licencia </a> </li> <li> <a class="footer__first-row__navigation__link" href="/es/licensing/eula/" > EULA </a> </li> <li> <a class="footer__first-row__navigation__link" href="https://ironsoftware.com/es/enterprise/" > Enterprise </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Probar IronPDF gratis</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link footer__first-row__navigation__link--highlight js-modal-open" href="https://www.nuget.org/packages/IronPdf/" target="_blank" data-modal-id="trial-license-after-download" > <i class="nuget-icon-pink"></i> Descargar en NuGet </a> </li> <li> <p class="footer__first-row__navigation__link ga-dll-installer footer-dropdown-menuitem download-library-dropdown dll-installer center-dropdown js-modal-open--downloading" data-modal-id="trial-license-after-download" data-url=" /packages/IronPdf.zip " data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" data-bs-title='<div class="library_download_dropdown_tooltip v2"><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-microsoft"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">Para Windows</span></span></div><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.MacOs.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-apple"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">Para macOS</span></span></div><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.Linux.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-linux"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">Para Linux</span></span></div></div>' data-bs-custom-class='dl-dropdown-tooltip' data-bs-trigger='manual'> <i class="fas fa-download"></i> Descargar DLL <i class="fas fa-caret-down"></i> </p> </li> <li> <p class="footer__first-row__navigation__link ga-windows-installer js-modal-open--downloading" data-modal-id="trial-license-after-download" data-url=" /packages/IronPdfInstaller.zip " > <i class="fab fa-microsoft"></i> Descargar instalador de Windows </p> </li> <li> <a class="footer__first-row__navigation__link js-modal-open" href="#trial-license" data-modal-id="trial-license" > <i class="fas fa-key"></i> Prueba gratis </a> </li> </ul> </nav> </div> </div> </nav> <nav id="footer__breadcrumbs-navigation-menu"> <div class="container-fluid"> <div class="navigation-container"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="/es/" aria-label="Go to IronPDF">IronPDF</a></li><li class="breadcrumb-item"><a href="/es/blog/" aria-label="Go to Blog de IronPDF">Blog de IronPDF</a></li><li class="breadcrumb-item"><a href="/es/blog/using-ironpdf/" aria-label="Go to Usando IronPDF">Usando IronPDF</a></li><li class="breadcrumb-item active">Leer Encabezado Pie iTextSharp</li></ol> <a id="footer__topscroll-link" class="top-return-link" href="#top"> Volver arriba </a> </div> </div> </nav> <nav class="footer__additional-background-wrapper d-none" role="navigation"> <h2 class="visually-hidden" id="footer__global-navigation-menu-heading">Menú de Navegación Global</h2> <div class="footer__fourth-row-wrapper"> <div class="footer__fourth-row-wrapper__logo-block"> <h3 class="visually-hidden">Logo de la Empresa y Dirección</h3> <a href="https://ironsoftware.com/es/"> <img class="footer__fourth-row-wrapper__logo-icon" loading="lazy" src="/img/svgs/hero-logo__162x20.svg" alt="Iron Software" width="162" height="20"> </a> <div class="footer__fourth-row-wrapper__address text-center text-md-end" aria-labelledby="footer-main-links-heading"> <address> 205 N. Michigan Ave. Chicago, IL 60601 EE.UU. +1 (312) 500-3060 </address> </div> </div> <div class="footer__fourth-row-wrapper__contact-links-block"> <h3 class="visually-hidden" id="footer__main-navlinks">Enlaces de Navegación Principal</h3> <ul class="footer__fourth-row-wrapper__links-list" aria-labelledby="footer_main-navlinks"> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/es/about-us/" target="_blank"> Sobre nosotros </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/es/news/" target="_blank"> Noticias </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/es/customers/" target="_blank"> Clientes </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/es/careers/" target="_blank"> Carreras </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/es/academy/" target="_blank"> Academia </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/es/live-streams/" target="_blank"> Webinars </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://hub.ironsoftware.com/es/licenses-view" target="_blank"> Inicio del HUB del Cliente </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/es/contact-us/" target="_blank"> Contáctenos </a> </li> <li class="d-none d-md-flex"> <div class="iron_lang-menu dropup" data-bs-target="#footerLangNameMenuDropdown"> <button type="button" class="dropdown-toggle" id="iron_lang-menu__language-name_dropdown__current-language" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Español </button> <ul id="footerLangNameMenuDropdown" class="dropdown-menu" aria-labelledby="footerLangNameMenuDropdown"> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="en" hreflang="en" href="/blog/using-ironpdf/read-header-footer-itextsharp/" >English</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans active-lang" data-language-code="es" hreflang="es" href="/es/blog/using-ironpdf/read-header-footer-itextsharp/" >Español</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="de" hreflang="de" href="/de/blog/using-ironpdf/read-header-footer-itextsharp/" >Deutsch</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="fr" hreflang="fr" href="/fr/blog/using-ironpdf/read-header-footer-itextsharp/" >Français</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="ja" hreflang="ja" href="/ja/blog/using-ironpdf/read-header-footer-itextsharp/" >日本語</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="ko" hreflang="ko" href="/ko/blog/using-ironpdf/read-header-footer-itextsharp/" >한국어</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="pt" hreflang="pt" href="/pt/blog/using-ironpdf/read-header-footer-itextsharp/" >Português</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="pl" hreflang="pl" href="/pl/blog/using-ironpdf/read-header-footer-itextsharp/" >polski</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="zh" hreflang="zh" href="/zh/blog/using-ironpdf/read-header-footer-itextsharp/" >简体中文</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="zh_TW" hreflang="zh-tw" data-language-alias="zh-hant" href="/zh-hant/blog/using-ironpdf/read-header-footer-itextsharp/" >繁體中文</a></li> </ul> </div> </li> </ul> </div> <div class="d-flex flex-column align-items-end"> <h3 class="visually-hidden" id="footer__main-social-links">Enlaces de Redes Sociales</h3> <ul class="footer__fourth-row-wrapper__social-icons" aria-labelledby="footer__main-social-links"> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://github.com/iron-software" title="Explorar el Repositorio de GitHub de Iron Software" target="_blank"><img loading="lazy" src="/img/footer-socials/github.svg" alt="Github related to Enlaces de Redes Sociales" width='16' height='15.33'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.youtube.com/@ironsoftware" title="Ver videos de Iron Software en Youtube" target="_blank"><img loading="lazy" src="/img/footer-socials/youtube.svg" alt="Youtube related to Enlaces de Redes Sociales" width='16' height='11'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://x.com/ironsoftwaredev" title="Sigue a Iron Software en Twitter" target="_blank"><img loading="lazy" src="/img/footer-socials/twitter-x.svg" alt="Twitter X related to Enlaces de Redes Sociales" width='16' height='13.44'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.facebook.com/teamironsoftware" title="Mantente conectado con Iron Software en Facebook" target="_blank"><img loading="lazy" src="/img/footer-socials/facebook.svg" alt="Facebook related to Enlaces de Redes Sociales" width='16' height='16'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.linkedin.com/company/ironsoftware" title="Conectar con Iron Software en LinkedIn" target="_blank"><img loading="lazy" src="/img/footer-socials/linkedin.svg" alt="Linkedin related to Enlaces de Redes Sociales" width='16.34' height='16'></a></li> </ul> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/es/company/iron-slack-community/"> <img loading="lazy" src="/img/icons/slack-icon.svg" class="footer__fourth-row__slack-icon" alt="Slack Icon related to Enlaces de Redes Sociales" width="14" height="14"> Únete a Iron Slack</a> </div> </div> </div> </nav> <nav class="footer__fifth-row-wrapper d-none"> <p class="footer__fifth-row-wrapper__teamseas"> <a href="https://ironsoftware.com/es/about-us/1-percent-for-the-planet/"> <img loading="lazy" src="/img/footer/logo-1-percent.svg" alt="Apoyando a Teamseas" height="40"> </a> </p> <div class="copyright__links d-flex align-items-center"> <h3 class="visually-hidden" id="footer__copyright-heading">Información Legal</h3> <p class="footer__fifth-row-wrapper__copyright-text"> Derechos de Autor © Iron Software 2013-2026 </p> <ul class="footer__fifth-row-wrapper__links-list" aria-labelledby="footer__copyright-heading"> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/es/company/terms/">Términos</a> </li> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/es/company/privacy/">Privacidad</a> </li> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/es/company/cookie/">Cookie</a> </li> </ul> </div> </nav> <!-- New Footer Navs --> <div class="site-footer__wrapper"> <nav class="site-footer" aria-label="Footer"> <div class="site-footer__links"> <a href="https://ironsoftware.com/es/about-us/" target='_blank' class="site-footer__link"> Sobre nosotros </a> <a href="https://ironsoftware.com/es/news/" target='_blank' class="site-footer__link"> Noticias </a> <a href="https://ironsoftware.com/es/customers/" target='_blank' class="site-footer__link"> Clientes </a> <a href="https://ironsoftware.com/es/careers/" target='_blank' class="site-footer__link"> Carreras </a> <a href="https://ironsoftware.com/es/academy/" target='_blank' class="site-footer__link"> Academia </a> <a href="https://ironsoftware.com/es/live-streams/" target='_blank' class="site-footer__link"> Webinars </a> <a href="https://hub.ironsoftware.com/es/licenses-view" target='_blank' class="site-footer__link"> Inicio del HUB del Cliente </a> <a href="https://ironsoftware.com/es/contact-us/" target='_blank' class="site-footer__link"> Contáctenos </a> </div> <div class="site-footer__bar"> <div class="site-footer__ratings"> <a class="site-footer__rating" href="https://ironsoftware.com/es/awards-and-recognition/" aria-label="G2 Reviews - view awards and recognition"> <div class="site-footer__rating-logo"> <img class="img-fluid" src="/img/awards/g2-reviews.svg" alt="G2 Reviews" width="48" height="48" loading="lazy"> </div> <div class="site-footer__rating-content"> <div class="site-footer__rating-label"> <div class="site-footer__rating-star-meter" role="img" aria-label="Rated 4.9 out of 5 stars" style="--rating-percent: 98%;"> <span class="site-footer__rating-stars-base" aria-hidden="true">★★★★★</span> <span class="site-footer__rating-stars-fill" aria-hidden="true">★★★★★</span> </div> </div> <span class="site-footer__rating-score"><strong>4.9</strong> / 5</span> </div> </a> <a class="site-footer__rating" href="https://ironsoftware.com/es/awards-and-recognition/" aria-label="Capterra Reviews - view awards and recognition"> <div class="site-footer__rating-logo"> <img class="img-fluid" src="/img/awards/capterra-reviews.svg" alt="Capterra Reviews" width="32" height="32" loading="lazy"> </div> <div class="site-footer__rating-content"> <div class="site-footer__rating-label"> <div class="site-footer__rating-star-meter" role="img" aria-label="Rated 5 out of 5 stars" style="--rating-percent: 100%;"> <span class="site-footer__rating-stars-base" aria-hidden="true">★★★★★</span> <span class="site-footer__rating-stars-fill" aria-hidden="true">★★★★★</span> </div> </div> <span class="site-footer__rating-score"><strong>5</strong> / 5</span> </div> </a> </div> <div class="site-footer__brand"> <div class="site-footer__brand-logo"> <img src="/img/svgs/hero-logo__162x20.svg" alt="Iron Software" width="162" height="20" loading="lazy"> </div> <span class="site-footer__address">205 N. Michigan Ave. Chicago, IL 60601 EE.UU. +1 (312) 500-3060</span> </div> <div class="site-footer__contact"> <ul class="site-footer__social-items"> <li class="site-footer__social-item"> <a href="https://github.com/iron-software" class="site-footer__social-link" aria-label="GitHub" target='_blank' > <i class="fa-brands fa-github"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.youtube.com/@ironsoftware" class="site-footer__social-link" aria-label="Youtube" target='_blank' > <i class="fa-brands fa-youtube"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://x.com/ironsoftwaredev" class="site-footer__social-link" aria-label="X" target='_blank' > <i class="fa-brands fa-x-twitter"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.facebook.com/teamironsoftware" class="site-footer__social-link" aria-label="Facebook" target='_blank' > <i class="fa-brands fa-square-facebook"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.linkedin.com/company/ironsoftware" class="site-footer__social-link" aria-label="LinkedIn" target='_blank' > <i class="fa-brands fa-linkedin-in"></i> </a> </li> </ul> <a href="https://ironsoftware.com/es/company/iron-slack-community/" class="site-footer__cta" arial-label="Join Iron Slack" > <div class="site-footer__cta-logo"> <img src="/img/icons/slack-icon.svg" alt="Slack Icon related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo" width="16" height="16" loading="lazy"> </div> <span class="site-footer__cta-text">Únete a Iron Slack</span> </a> </div> </div> </nav> </div> <div class="site-copyright__wrapper"> <nav class="site-copyright" aria-label="Copyright & legal"> <div class="site-copyright__partner-logos"> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_pdfa--hover.svg" alt="Miembro de la Asociación de PDF" width="46" height="28" loading="lazy"> </div> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_microsoft--hover.svg" alt="Socio de Microsoft" width="92" height="28" loading="lazy"> </div> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_aws--hover.svg" alt="Red de Socios de AWS" width="87" height="28" loading="lazy"> </div> </div> <div class="site-copyright__meta"> <span class="site-copyright__text">Derechos de Autor © Iron Software 2013-2026</span> <div class="site-copyright__legal"> <a href="https://ironsoftware.com/es/company/terms/" class="site-copyright__legal-link">Términos</a> <a href="https://ironsoftware.com/es/company/privacy/" class="site-copyright__legal-link">Privacidad</a> <a href="https://ironsoftware.com/es/company/cookie/" class="site-copyright__legal-link">Cookie</a> </div> </div> <div class="site-copyright__donation"> <img src="/img/footer/badge-one_percent.png" alt="One Perent for the Planet" width="230" height="32" loading="lazy"> </div> </nav> </div> </footer> <style> #ironSupportWidgetButtonContainer { display: none; position: fixed; bottom: 16px; right: 16px; width: 60px; height: 60px; z-index: 10500; #ironSupportWidgetButton { font: normal 900 24px/1 var(--ff-gotham); color: #fff; background: url('/img/widgets/livechat/icon_messages.svg') #2c96d5; background-repeat: no-repeat; background-position: center; background-size: 32px auto; width: 60px; height: 60px; border-radius: 50%; cursor: pointer; user-select: none; transition: transform 0.1s ease-in-out; border: none; display: flex; justify-content: center; align-items: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 4px, rgba(0, 0, 0, 0.2) 0px 2px 12px; &:hover { box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 6px, rgba(0, 0, 0, 0.2) 0px 4px 16px; transform: scale(1.1); } } /* control button icon if widget open (active) */ &:has(~#ironSupportWidgetContainer.active) { #ironSupportWidgetButton { background: url('/img/widgets/livechat/icon_x.svg') #2c96d5; background-repeat: no-repeat; background-position: center; background-size: 26px auto; } } } #ironSupportWidgetContainer { /* only display via vwo, on test process */ position: fixed; bottom: 92px; right: 16px; width: 416px; height: 700px; padding: 0; display: none; z-index: 10501; &.active { display: block; } .ironSupportWidgetBody { overflow: hidden; background-color: #fff; border: solid 0px #e7eef0; border-radius: 16px; display: flex; flex-direction: column; height: 100%; padding: 0; margin: 0; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 4px, rgba(0, 0, 0, 0.2) 0px 2px 12px; .ironSupportWidgetHeader { .ironSupportWidgetTitle { background-color: #2a95d5; display: flex; align-items: center; column-gap: 16px; padding: 16px 24px; .supportLogo { width: 48px; height: 48px; overflow: hidden; display: flex; justify-content: center; align-items: center; background-color: #aaa; border: solid 2px #fff; border-radius: 50%; } .dotSupportStatus { position: absolute; bottom: 0px; right: 0px; background-color: #444; border: solid 2px #fff; width: 11px; height: 11px; border-radius: 50%; &.green { background-color: #02bda5; } &.red { background-color: red; } } h2.title { margin: 0; padding: 0; font: normal 700 18px/1.6 var(--ff-gotham); color: #fff; } .subTitle { margin: 0; padding: 0; font: normal 400 12px/1.4 var(--ff-gotham); color: #fff; } } .ironSupportWidgetButtons { display: flex; column-gap: 2px; padding: 8px 24px 0; margin: 0; background-color: #fff; overflow: hidden; align-items: center; justify-content: center; cursor: pointer; background-color: #2a95d5; .iron_widget_button { flex: 1 0 calc(100%/3); display: flex; align-items: center; justify-content: center; padding: 12px 0; font: normal 700 14px/1.2 var(--ff-gotham); cursor: pointer; color: #fff; user-select: none; border-top: solid 3px #2a95d5; background-color: #5fafdf; &:hover { color: #181818; background-color: #d9e5e9; } &.active { color: #181818; border-top: solid 3px #e01a59; background-color: #fff; i { color: #2a95d5; } } i { margin-right: 8px; width: 18px; height: 18px; color: inherit; display: flex; align-items: center; justify-content: center; pointer-events: none; } } } } &>.ironSupportWidgetTab { flex: 1 1 auto; background-color: #fff; padding: 0; margin: 0; } } /* hschat start */ #hubspotConversationsInlineContainer { height: 100%; overflow: hidden; #hubspotConversationsInlinePlaceholder { /* hubspot chat use height in (px) to render its container, can't be a relative value hide the chat header by moving up the container 72px */ --offset_chat_header: 72px; margin-top: calc(-1 * var(--offset_chat_header)); height: 100%; max-height: calc(100% + var(--offset_chat_header)); z-index: 0; /* below is gen by hubspot */ #hubspot-conversations-inline-parent { height: calc(100% + var(--offset_chat_header)); &>iframe { width: 100%; height: 100%; } } } } /* hschat end */ /* hsform start */ .ironSupportWidgetFormPlaceholder { padding: 24px; height: 100%; form.hs-form { width: 100%; display: flex; flex-direction: column; row-gap: 24px; height: 100%; .hs-input { height: unset; } .hs-button { margin: 0; height: unset; max-width: unset; } .hs-form-field:first-child { margin: 0; } .hs-form-field { margin: 0; } p { margin: 0; } select.hs-input, input[type="tel"], input[name="lastname"], input[name="phone"], input[name="firstname"], input[name="email"] { width: 100%; border-radius: 6px; border: solid 1px #e7eef0; padding: 8px 16px; font: normal 400 14px/1.2 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; } div.hs-form-field:has(ul.hs-error-msgs) { ul.hs-error-msgs { display: none; } input[name="email"] { border: solid 1px #e01a59; } } input[type="submit"] { background-color: #fff; color: #2a95d5; border: solid 1px #d9e5e9; display: flex; justify-content: center; align-items: center; border-radius: 64px; padding: 8px 0; min-width: 128px; font: normal 700 14px/1.6 var(--ff-gotham); user-select: none; transition: all 0.1s ease-in-out; &:hover { color: #e01a59; box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 6px, rgba(0, 0, 0, 0.2) 0px 4px 16px; } } div.hs-submit { margin-top: auto; align-self: end; } div.hs-form-field>label { font: normal 700 14px/1.2 var(--ff-gotham); color: #525252; margin-bottom: 12px; display: block; } textarea[name="TICKET.content"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; min-height: 84px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } input[name="phone"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } input[name="email"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } div.input:has(>input[type="file"]) { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; position: relative; display: block; cursor: pointer; line-height: 1.5; border: .075rem solid #d9e5e9; border-radius: 6px; user-select: none; cursor: pointer; min-height: 44px; background-color: #fafafb; &:after { font: normal 400 14px/1.4 var(--ff-gotham); position: absolute; z-index: 0; display: flex; align-items: center; top: 0; bottom: 0; left: 0; width: 100%; padding: 12px 16px; content: "Seleccionar archivo..."; cursor: pointer; } &:before { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; position: absolute; z-index: 1; display: flex; justify-content: center; align-items: center; content: "Explorar"; top: 0; bottom: 0; right: 0; width: fit-content; padding: 12px 16px; border-radius: 0 6px 6px 0; cursor: pointer; background-color: #d9e5e9; } &:hover { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } &:hover:before { background-color: #5fafdf; color: #fff; } input[type="file"] { margin: 0; filter: alpha(opacity=0); opacity: 0; padding: 0; cursor: pointer; position: absolute; z-index: 2; height: 100%; width: 100%; } } ul[role="checkbox"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; padding: 0; margin: 0; list-style: none; &>li>label { display: inline-flex; align-items: center; column-gap: 8px; } input[type="radio"] { width: unset; accent-color: #e01a59; height: unset; &:hover, &:checked, &:checked:hover { color: #e01a59; accent-color: none; } } } } } /* hsform end */ } @media screen and (max-width: 575px) { body:has(#ironSupportWidgetContainer.active) { overflow: hidden; } #ironSupportWidgetButtonContainer:has(~#ironSupportWidgetContainer.active) { left: unset; bottom: unset; top: 16px; right: 16px; width: 48px; height: 48px; z-index: 10502; #ironSupportWidgetButton { width: 48px; height: 48px; border: solid 1px #fff; } } #ironSupportWidgetContainer { right: 0; bottom: 0; width: 100%; height: 100%; .ironSupportWidgetBody { border-radius: 0px; } } } </style> <!-- Iron Support Widget Button --> <div id="ironSupportWidgetButtonContainer"> <div id="ironSupportWidgetButton" onclick="toggleIronSupportWidget()"></div> </div> <!-- Iron Support Widget Body --> <div id="ironSupportWidgetContainer" class=""> <div class="ironSupportWidgetBody"> <div class="ironSupportWidgetHeader"> <div class="ironSupportWidgetTitle"> <div style="position:relative;"> <div class="dotSupportStatus green"></div> <div class="supportLogo"> <img src="/img/support-team/support_widget.png" width="48" height="48" alt="Support Widget related to Añadir encabezado y pie de página en PDF con iTextSharp y IronPDF en C# con ejemplo" loading="lazy"> </div> </div> <div> <h2 id="ironSupportWidgetHeaderTitle" class="title">Equipo de soporte de Iron</h2> <div id="ironSupportWidgetHeaderSubTitle" class="subTitle">Estamos disponibles online las 24 horas, 5 días a la semana.</div> </div> </div> <div class="ironSupportWidgetButtons"> <div class="iron_widget_button active" data-iron-widget-tab="ironSupportWidgetTab1" data-iron-widget-subtitle="Estamos disponibles online las 24 horas, 5 días a la semana" onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-messages-question"></i>Chat</div> <div class="iron_widget_button" data-iron-widget-tab="ironSupportWidgetTab2" data-iron-widget-subtitle="Reciba las respuestas en su correo electrónico en un plazo de 24 horas." onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-envelope"></i>Email</div> <div class="iron_widget_button" data-iron-widget-tab="ironSupportWidgetTab3" data-iron-widget-subtitle="¿Prefieres hablarlo por teléfono? Te llamaremos en un plazo de 24 horas." onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-phone"></i>Llámame</div> </div> </div> <div id="ironSupportWidgetTab1" class="ironSupportWidgetTab"> <div id="hubspotConversationsInlineContainer"> <div id="hubspotConversationsInlinePlaceholder"><!-- placeholder --></div> </div> </div> <div id="ironSupportWidgetTab2" class="ironSupportWidgetTab" style="display:none;"> <div class="ironSupportWidgetFormPlaceholder"><!-- placeholder --></div> </div> <div id="ironSupportWidgetTab3" class="ironSupportWidgetTab" style="display:none;"> <div class="ironSupportWidgetFormPlaceholder"><!-- placeholder --></div> </div> </div> </div> <!-- # uncomment for test or want chat appear sooner, on website it delay by core web vital # chat will not appear until the trcking script (below) loaded --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/22630553.js"></script> <script> /* pre-register window.ironSupportWidget */ if (typeof window.ironSupportWidget === 'undefined') { window.ironSupportWidget = {}; window.ironSupportWidget.isHsFormLoaded = false; } // hubspot chat place holder if (typeof window.hsConversationsSettings === 'undefined') { window.hsConversationsSettings = {}; } // window.hsConversationsSettings.inlineEmbedSelector = '#hubspotConversationsInlinePlaceholder'; function loadHsFormInSupportWidget() { const supportWidgetFormOptionA = { portalId: "22630553", formId: "8d0b0bf2-6aea-4c76-959c-cb2f9183f7c5", region: "na1", target: "#ironSupportWidgetContainer #ironSupportWidgetTab2 .ironSupportWidgetFormPlaceholder", onFormSubmitted: function ($form, data) { window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(232);}); } } const supportWidgetFormOptionB = { portalId: "22630553", formId: "c8f2b8df-0228-4331-b207-9c6c9910764c", region: "na1", target: "#ironSupportWidgetContainer #ironSupportWidgetTab3 .ironSupportWidgetFormPlaceholder", onFormSubmitted: function ($form, data) { window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(232);}); } }; dynamicLoadHsForms_inSupportWidget(supportWidgetFormOptionA); dynamicLoadHsForms_inSupportWidget(supportWidgetFormOptionB); } function ironSupportWidgetTabChange(e) { const target = e.target; const targetWidgetTab = target.getAttribute('data-iron-widget-tab'); const textSubtitle = target.getAttribute('data-iron-widget-subtitle'); if (!targetWidgetTab) return; // Save current tab state window.ironSupportWidget.lastTab = targetWidgetTab; window.ironSupportWidget.subTitle = textSubtitle; // Remove 'active' class from all buttons document.querySelectorAll('.iron_widget_button').forEach(button => { button.classList.remove('active'); }); // Add 'active' class to clicked button target.classList.add('active'); // Hide/Show tab document.querySelectorAll('.ironSupportWidgetTab').forEach(tab => { tab.style.display = 'none'; }); const targetTab = document.getElementById(targetWidgetTab); if (targetTab) { targetTab.style.display = 'block'; } // Update subtitle in header const subtitleEl = document.getElementById('ironSupportWidgetHeaderSubTitle'); if (subtitleEl) { subtitleEl.textContent = textSubtitle || ''; } } function toggleIronSupportWidget(action = null) { const widgetContainer = document.getElementById('ironSupportWidgetContainer'); function openWidget() { window.ironSupportWidget.isOpen = true; widgetContainer.classList.add('active'); if (typeof window.ironSupportWidget.isHsFormLoaded !== true) { loadHsFormInSupportWidget(); window.ironSupportWidget.isHsFormLoaded = true; } } function closeWidget() { window.ironSupportWidget.isOpen = false; widgetContainer.classList.remove('active'); } if (action === 'open') { openWidget(); } else if (action === 'close') { closeWidget() } else { if (window.getComputedStyle(widgetContainer).display !== 'none') { closeWidget() } else { openWidget(); } } } // load hubspot form dynamically function dynamicLoadHsForms_inSupportWidget(formOption, target_override = null) { function waitForHsptReady() { var interval = setInterval(function() { if (typeof hbspt !== "undefined") { clearInterval(interval); var option = formOption; if (target_override !== null) { option.target = target_override; } hbspt.forms.create(option); } }, 10); } if (typeof hbspt === "undefined") { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "//js.hsforms.net/forms/embed/v2.js"; document.getElementsByTagName("head")[0].appendChild(script); script.onload = function() { waitForHsptReady(); }; } else { waitForHsptReady(); } } </script> <!-- Start Commonly Loaded Scripts --> <script src="/front/js/iron.loaders.js?v=1776149867" ></script><script src="/front/js/iron.helpers.js?v=1776149867" ></script><script src="/front/js/global.js?v=1776149867" ></script><script src="/front/js/bootstrap-loader/bootstrap-autoloader.min.js?v=1776149867" type="module" async="1"></script><script src="/front/js/page.js?v=1776149867" ></script><script src="/front/js/product.js?v=1776149867" ></script><!-- customJSFiles, Start --> <script src="/front/js/blog.js?v=1776149867" ></script> <script src="/front/js/blog-post.js?v=1776149867" ></script> <script src="/front/js/competitors.js?v=1776149867" ></script> <!-- customJSFiles, End --> <!-- Clarity Code Start --> <script type="text/javascript"> if (!window.deviceDetails.mobileCheck && window.deviceDetails.isDesktopViewport) { (function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i+"?ref=gtm2";y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,"clarity","script","cximmak38b"); } </script><!-- Clarity Code End --> <!-- AC Code Start --> <script> document.queueDeferredUserIntentAction(function() { importScript("tracking-code/activecampaign.js", debug()); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "activecampaign"}, debug()); }); </script> <!-- AC Code End --> <!-- Impact Sale Tracker Start --> <script> document.queueDeferredUserIntentAction(function() { importScript(["tracking-code/impactsale.js"], debug()).then(function() { setTimeout(function() { importScript(["tracking-code/impactsale-id.js"], debug()); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "impactsale"}, debug()); }, 150); }); }); </script> <!-- Impact Sale Tracker End --> <!-- End Commonly Loaded Scripts --> <!-- Start Setup Helper Functions --> <script> /** * Configures the Algolia Search feature using set-up data that is presumed to originate from an Iron Product's common.json file. * * @param {String} searchData the JSON string data (usually taken from the $common_json['search'] property key) * @param {String} indexName the Algolia Index that should be used (usually taken from the $common_json['search']['name] property key */ function setupAlgoliaSearch(searchData, indexName) { if (typeof 'aa' != 'undefined' && window.dataLayer) { window.searchData = JSON.parse(searchData); window.searchClient = algoliasearch(window.searchData.applicationId, window.searchData.apiKey); window.searchIndex = window.searchClient.initIndex(indexName); aa('init', { appId: window.searchData.applicationId, apiKey: window.searchData.apiKey, useCookie: true }); aa('getUserToken', null, (err, newUserToken) => { if (err) { console.error(err); return; } window.algoliaUserToken = newUserToken; }); let userToken = window.algoliaUserToken; aa('onUserTokenChange', (userToken) => { window.dataLayer.push({ algoliaUserToken: userToken, }); }, { immediate: true }); } else { logMsg("error", 'Algolia failed setup. The required object definitions do not exist!'); } } </script><!-- End Setup Helper Functions --> <!-- Start Algolia Insights Client --> <script> document.addEventListener("DOMContentLoaded", function() { document.queueDeferredUserIntentAction(function() { importScript(['tracking-code/algolia.js', 'algoliasearch-lite.umd.js']).then(function(status) { const algoliaSetup = function() { setupAlgoliaSearch('{"applicationId":"4S8YCFXKT5","apiKey":"ec878b51c06a7d5fbb7aab95991ab432","indexName":"ironpdf","inputPlaceholder":"Busque en la API, ejemplos de c\u00f3digo y tutoriales","searchText":"Buscar","boostedResult":"Este ser\u00e1 el art\u00edculo m\u00e1s \u00fatil","searchShortCut":["Ctrl","K"],"categories":[{"key":"Best match","title":"Mejor opci\u00f3n","iconClass":null,"color":null},{"key":"Code Examples","title":"Ejemplos de C\u00f3digo","iconClass":"fas fa-code","color":"#2A95D5"},{"key":"Products","title":"Productos","iconClass":"fas fa-bookmark","color":"#E01A59"},{"key":"Get Started","title":"Comenzar","iconClass":"fas fa-rocket","color":"#2A95D5"},{"key":"Tutorials","title":"Tutoriales","iconClass":"fas fa-graduation-cap","color":"#FDA509"},{"key":"How-Tos","title":"Gu\u00edas","iconClass":"fa-regular fa-book","color":"#63C1A0"},{"key":"Languages","title":"Idiomas","iconClass":"fas fa-globe-americas","color":"#2A95D5"},{"key":"Licensing","title":"Licencias","iconClass":"fas fa-shopping-cart","color":"#E01A59"},{"key":"API Reference","title":"Referencia API","iconClass":"fas fa-bookmark","color":"#89D3DF"},{"key":"Features","title":"Caracter\u00edsticas","iconClass":"fas fa-bookmark","color":"#63C1A0"},{"key":"Support","title":"Soporte","iconClass":"fas fa-info-circle","color":"#2A95D5"},{"key":"Blog","title":"Blog","iconClass":"fa-regular fa-file","color":"#15aabf"},{"key":"Troubleshooting","title":"Soluci\u00f3n de Problemas","iconClass":"fas fa-wrench","color":"#15aabf"},{"key":"Product Updates","title":"Actualizaciones de Producto","iconClass":"fa-solid fa-rotate","color":"#146ebe","class":"bottom_separator"}],"previewEnabled":false,"categorySortingEnabled":false,"breadcrubmsEnabled":true,"searchResultLimit":10,"breadcrumbs":[{"title":"IronPDF","url":"/"},{"title":"Licencias","url":"/licensing/"},{"title":"Docs","url":"/docs/"},{"title":"Ejemplos de C\u00f3digo","url":"/examples/using-html-to-create-a-pdf/"},{"title":"Tutoriales","url":"/tutorials/html-to-pdf/"},{"title":"Gu\u00edas","url":"how-to/create-new-pdfs/"},{"title":"Referencia API","url":"/object-reference/api/"},{"title":"Soporte","url":"https://ironsoftware.com/contact-us/"},{"title":"IronOCR","url":"https://ironsoftware.com/csharp/ocr/"},{"title":"IronBarcode","url":"https://ironsoftware.com/csharp/barcode/"},{"title":"IronXL","url":"https://ironsoftware.com/csharp/excel/"},{"title":"IronWebScraper","url":"https://ironsoftware.com/csharp/webscraper/"},{"title":"Iron Software","url":"https://ironsoftware.com/"},{"title":"Productos","url":"https://ironsoftware.com/"}],"noResults":{"message":"No hay resultados para <strong>\u201c{query}\u201d</strong>.","icon":"/img/svgs/search-no-results.svg","alt":"\u00cdcono de mensaje"},"error":{"message":"Algo sali\u00f3 mal. Escribe de nuevo.","icon":"/img/svgs/search-no-results.svg","alt":"\u00cdcono de mensaje"}}', "ironpdf__es"); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "algolia"}); }; const algoliaReady = function() { return typeof aa != 'undefined' && typeof algoliasearch != 'undefined' && window.dataLayer; }; if (algoliaReady()) { algoliaSetup(); } else { const aaTimer = setInterval(function() { if (algoliaReady()) { algoliaSetup(); clearInterval(aaTimer); } }, 500); } }); }); }); </script> <!-- End Algolia Insights Client --> <script src="https://iron-ai-assistant-frontend-152f73438a0d.herokuapp.com/widget/ironpdf-assistant.js" data-server-url="https://iron-ai-assistant-frontend-152f73438a0d.herokuapp.com" data-hide-button="true" data-trigger-selector="#ai-chat-assistant" data-min-height="80%" data-margin-top="120px" data-vertical-position="top" defer ></script> </body> </html>