COMPARACIóN

Text Control frente a IronPDF: Guía de comparación técnica

Cuando los desarrolladores de .NET evalúan las bibliotecas de generación de PDF, dos soluciones surgen con frecuencia en los debates empresariales: Control de texto TXe IronPDF. Aunque ambas pueden producir archivos PDF, representan filosofías arquitectónicas fundamentalmente diferentes. Esta comparación técnica examina ambas bibliotecas para ayudar a arquitectos y desarrolladores a tomar decisiones informadas para sus aplicaciones .NET.

Entendiendo TX Text Control

TX Text Control es un completo componente editor de documentos que hace hincapié en las capacidades de edición DOCX con controles de interfaz de usuario integrados. La generación de PDF es una función secundaria dentro de su arquitectura más amplia de procesamiento de documentos. La plataforma ofrece amplias funciones de edición de documentos, por lo que es adecuada para aplicaciones que requieren interfaces de edición de texto enriquecido.

Sin embargo, esta naturaleza exhaustiva introduce consideraciones que los equipos de desarrollo deben evaluar cuidadosamente:

  • Licencias costosas: Control de texto TXopera con una licencia comercial a partir de $3398+ por desarrollador, con renovaciones anuales obligatorias del 40% para mantener el acceso a las actualizaciones.
  • PDF como función secundaria: la arquitectura principal prioriza el procesamiento de textos sobre la generación de PDF, tratando la salida de PDF como una capacidad complementaria.
  • Problemas de hardware conocidos: Los errores de representación de gráficos Intel Iris Xe documentados que afectan a los procesadores Intel de 11.ª generación requieren soluciones alternativas de registro.
  • Dependencias infladas: incluye componentes de interfaz de usuario de edición de documentos que pueden ser innecesarios para flujos de trabajo centrados en PDF
  • API compleja: requiere patrones de modelo de selección y gestión de contexto de ServerTextControl

Entendiendo IronPDF

IronPDF adopta un enfoque fundamentalmente diferente al centrarse principalmente en la generación de PDF sin superponer componentes de interfaz de usuario ni herramientas de edición DOCX. La biblioteca destaca por su diseño esbelto y adaptado, optimizado específicamente para la generación y manipulación de PDF, lo que la convierte en una herramienta de arquitectura PDF-first muy eficaz.

Las principales características de IronPDF son:

  • Arquitectura PDF-First: diseñada desde cero para la generación de PDF, que ofrece sólidas capacidades de creación y representación de documentos.
  • Motor de renderizado Chromium: aprovecha los estándares modernos HTML5 y CSS3 con soporte completo para ejecución de JavaScript
  • Rentabilidad: El modelo de licencia única elimina los costos de suscripción continuos
  • Estabilidad comprobada: confiabilidad documentada en diversas configuraciones de hardware, lo que evita problemas de renderizado específicos de la plataforma.
  • Integración sencilla: no requiere gestión de contexto ni patrones de inicialización complejos

Comparación de precios

Las estructuras de licencias entre TextControl eIronPDFrevelan importantes diferencias de costes a lo largo del tiempo:

AspectoControl de texto TXIronPDF
Licencia base$3,398+ por desarrollador749 $ una sola vez por desarrollador
Renovación anual40% obligatorioAsistencia opcional
Equipo de 4 personas (Año 1)~$6,749~$2,996
Coste total de 3 añosmás de 5.750 $ por desarrollador749 $ por desarrollador
Componentes de interfaz de usuarioPaquetes (hinchazón potencial)Sólo para PDF
Tiempo de ejecución del servidorLicencias adicionalesSe incluye

Comparación de características

La siguiente tabla destaca las diferencias técnicas entre TextControl eIronPDFen las dimensiones clave:

CaracterísticaControl de texto TXIronPDF
Enfoque principalEdición DOCXGeneración de PDF
Calidad del PDFFunción básica y complementariaFunciones principales
HTML a PDFSí (secundario)Sí (principal)
Soporte CSSLimitadoCSS3 completo
Ejecución de JavaScriptLimitadoES2024 completo
URL a PDFRequiere una configuración complejaSoporte nativo
Cabeceras/Pies de páginaAPI complejasBasado en HTML sencillo
Mail MergeSistema propietarioPlantillas HTML
Cumplimiento de PDF/A
Protección de contraseñas
Firmas digitales
Fusionar PDFLimitadoSe admite
Dividir PDFLimitadoSe admite
Marcas de aguaImplementación complejaHTML/CSS sencillo
Compatibilidad de hardwareProblemas conocidos de Intel IrisEstable en todos los dispositivos
Gestión de contextosRequeridoNo es necesario
Traducción multiplataformaCentrado en Windows

Diferencias en la arquitectura de las API

Una diferencia fundamental entre TextControl eIronPDFradica en sus filosofías de diseño de API y patrones de inicialización.

Enfoque de TextControl

TextControl requiere una gestión explícita del contexto a través de la clase ServerTextControl. Cada operación debe ocurrir dentro de un bloque using después de llamar a Create():

// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;

namespace TextControlExample
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServerTextControl textControl = new ServerTextControl())
            {
                textControl.Create();

                string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";

                textControl.Load(html, StreamType.HTMLFormat);
                textControl.Save("output.pdf", StreamType.AdobePDF);
            }
        }
    }
}
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;

namespace TextControlExample
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServerTextControl textControl = new ServerTextControl())
            {
                textControl.Create();

                string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";

                textControl.Load(html, StreamType.HTMLFormat);
                textControl.Save("output.pdf", StreamType.AdobePDF);
            }
        }
    }
}
$vbLabelText   $csharpLabel

Este patrón requiere comprender las clases específicas de TextControl, los tipos de flujo y el ciclo de vida del contexto.

Enfoque IronPDF

IronPDF elimina por completo la gestión del contexto. La clase ChromePdfRenderer proporciona una API sin estado que los desarrolladores pueden utilizar inmediatamente:

// NuGet: Install-Package IronPdf
using IronPdf;

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

            string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";

            var pdf = renderer.RenderHtmlAsPdf(html);
            pdf.SaveAs("output.pdf");
        }
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

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

            string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";

            var pdf = renderer.RenderHtmlAsPdf(html);
            pdf.SaveAs("output.pdf");
        }
    }
}
$vbLabelText   $csharpLabel

Para obtener una orientación completa sobre las capacidades de conversión de HTML, consulte el Tutorial de HTML a PDF.

Referencia de mapeo de API

Los equipos que evalúen una transición de TextControl aIronPDFencontrarán útil este mapeo para comprender las equivalencias de conceptos:

Control de texto TXIronPDF
<código>ServerTextControl.Create()</código<código>new ChromePdfRenderer()</código
<código>tx.Load(html, StreamType.HTMLFormat)</códigorenderer.RenderHtmlAsPdf(html)
<código>tx.Load(url, StreamType.HTMLFormat)</código<código>renderer.RenderUrlAsPdf(url)</código
<código>tx.Save(path, StreamType.AdobePDF)</código<código>pdf.SaveAs(ruta)</código
<código>SaveSettings.PDFAConformance</código<código>RenderingOptions.PdfAFormat</código
<código>DocumentServer.MailMerge</códigoPlantillas HTML + Razor
<código>DocumentTarget.HeadersAndFooters</código<código>HtmlHeaderFooter</código
Configuración de carga<código>RenderingOptions</código
Tipo de flujo.AdobePDFResultados por defecto

Fusión de documentos PDF

La fusión de documentos representa un requisito común en el que la complejidad de la implementación difiere entre las dos bibliotecas.

Implementación de TextControl

TextControl requiere la carga secuencial de documentos con banderas explícitas de modo append:

// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;

namespace TextControlExample
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServerTextControl textControl = new ServerTextControl())
            {
                textControl.Create();

                byte[] pdf1 = File.ReadAllBytes("document1.pdf");
                textControl.Load(pdf1, StreamType.AdobePDF);

                byte[] pdf2 = File.ReadAllBytes("document2.pdf");
                textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append);

                textControl.Save("merged.pdf", StreamType.AdobePDF);
            }
        }
    }
}
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;

namespace TextControlExample
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServerTextControl textControl = new ServerTextControl())
            {
                textControl.Create();

                byte[] pdf1 = File.ReadAllBytes("document1.pdf");
                textControl.Load(pdf1, StreamType.AdobePDF);

                byte[] pdf2 = File.ReadAllBytes("document2.pdf");
                textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append);

                textControl.Save("merged.pdf", StreamType.AdobePDF);
            }
        }
    }
}
$vbLabelText   $csharpLabel

Implementación de IronPDF

IronPDF proporciona un método estático dedicado para la fusión que acepta múltiples documentos:

// NuGet: Install-Package IronPdf
using IronPdf;

namespace IronPdfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var pdf1 = PdfDocument.FromFile("document1.pdf");
            var pdf2 = PdfDocument.FromFile("document2.pdf");

            var merged = PdfDocument.Merge(pdf1, pdf2);
            merged.SaveAs("merged.pdf");
        }
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

namespace IronPdfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var pdf1 = PdfDocument.FromFile("document1.pdf");
            var pdf2 = PdfDocument.FromFile("document2.pdf");

            var merged = PdfDocument.Merge(pdf1, pdf2);
            merged.SaveAs("merged.pdf");
        }
    }
}
$vbLabelText   $csharpLabel

El método PdfDocument.Merge acepta cualquier número de documentos y devuelve un nuevo PDF combinado sin necesidad de gestión de contexto ni de manipulación manual de matrices de bytes.

Cabeceras, pies de página y numeración de páginas

La adición de encabezados y pies de página con números de página dinámicos demuestra diferencias significativas en la complejidad de las API.

Implementación de TextControl

TextControl requiere una manipulación de encabezado/pie de página basada en secciones con declaraciones de tipo explícitas:

// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;

namespace TextControlExample
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServerTextControl textControl = new ServerTextControl())
            {
                textControl.Create();

                string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";
                textControl.Load(html, StreamType.HTMLFormat);

                HeaderFooter header = new HeaderFooter(HeaderFooterType.Header);
                header.Text = "Document Header";
                textControl.Sections[0].HeadersAndFooters.Add(header);

                HeaderFooter footer = new HeaderFooter(HeaderFooterType.Footer);
                footer.Text = "Page {page} of {numpages}";
                textControl.Sections[0].HeadersAndFooters.Add(footer);

                textControl.Save("output.pdf", StreamType.AdobePDF);
            }
        }
    }
}
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;

namespace TextControlExample
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServerTextControl textControl = new ServerTextControl())
            {
                textControl.Create();

                string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";
                textControl.Load(html, StreamType.HTMLFormat);

                HeaderFooter header = new HeaderFooter(HeaderFooterType.Header);
                header.Text = "Document Header";
                textControl.Sections[0].HeadersAndFooters.Add(header);

                HeaderFooter footer = new HeaderFooter(HeaderFooterType.Footer);
                footer.Text = "Page {page} of {numpages}";
                textControl.Sections[0].HeadersAndFooters.Add(footer);

                textControl.Save("output.pdf", StreamType.AdobePDF);
            }
        }
    }
}
$vbLabelText   $csharpLabel

Implementación de IronPDF

IronPDF ofrece métodos simplificados para añadir encabezados y pies de página basados en texto:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

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

            string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";

            var pdf = renderer.RenderHtmlAsPdf(html);

            pdf.AddTextHeader("Document Header");
            pdf.AddTextFooter("Page {page} of {total-pages}");

            pdf.SaveAs("output.pdf");
        }
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

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

            string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";

            var pdf = renderer.RenderHtmlAsPdf(html);

            pdf.AddTextHeader("Document Header");
            pdf.AddTextFooter("Page {page} of {total-pages}");

            pdf.SaveAs("output.pdf");
        }
    }
}
$vbLabelText   $csharpLabel

Para diseños de encabezado más complejos,IronPDFtambién admite la clase HtmlHeaderFooter que acepta estilos HTML y CSS completos:

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; text-align: center; font-size: 12pt;'>
            Company Report
        </div>",
    MaxHeight = 30
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; text-align: right; font-size: 10pt;'>
            Page {page} of {total-pages}
        </div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; text-align: center; font-size: 12pt;'>
            Company Report
        </div>",
    MaxHeight = 30
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; text-align: right; font-size: 10pt;'>
            Page {page} of {total-pages}
        </div>",
    MaxHeight = 25
};
$vbLabelText   $csharpLabel

Conversión de URL a PDF

La conversión de páginas web en PDF revela diferencias arquitectónicas en la forma en que cada biblioteca gestiona el contenido web.

Enfoque de TextControl

TextControl requiere la carga manual de URL a través de su manejador de formato HTML, que proporciona un soporte limitado de CSS y JavaScript:

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();

    LoadSettings loadSettings = new LoadSettings();
    loadSettings.ApplicationFieldFormat = ApplicationFieldFormat.MSWord;
    tx.Load("https://example.com/invoice", StreamType.HTMLFormat, loadSettings);

    SaveSettings saveSettings = new SaveSettings();
    saveSettings.PDFAConformance = PDFAConformance.PDFa1b;
    tx.Save("output.pdf", StreamType.AdobePDF, saveSettings);
}
using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();

    LoadSettings loadSettings = new LoadSettings();
    loadSettings.ApplicationFieldFormat = ApplicationFieldFormat.MSWord;
    tx.Load("https://example.com/invoice", StreamType.HTMLFormat, loadSettings);

    SaveSettings saveSettings = new SaveSettings();
    saveSettings.PDFAConformance = PDFAConformance.PDFa1b;
    tx.Save("output.pdf", StreamType.AdobePDF, saveSettings);
}
$vbLabelText   $csharpLabel

Enfoque IronPDF

IronPDF proporciona renderizado nativo de URL a través de su motor Chromium, ejecutando JavaScript y aplicando todos los estilos:

var renderer = new ChromePdfRenderer();

// PDF/A compliance - simple property
renderer.RenderingOptions.PdfAFormat = PdfAVersions.PdfA1B;

var pdf = renderer.RenderUrlAsPdf("https://example.com/invoice");
pdf.SaveAs("output.pdf");
var renderer = new ChromePdfRenderer();

// PDF/A compliance - simple property
renderer.RenderingOptions.PdfAFormat = PdfAVersions.PdfA1B;

var pdf = renderer.RenderUrlAsPdf("https://example.com/invoice");
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

El método RenderUrlAsPdf captura la página renderizada completa, incluido el contenido generado dinámicamente, por lo que es ideal para aplicaciones web modernas creadas con marcos como React, Angular o Vue.js.

Ajustes y configuración de la página

Configurar las dimensiones, los márgenes y la orientación de las páginas muestra distintos enfoques de la configuración de los documentos.

Implementación de TextControl

TextControl utiliza ajustes de página basados en secciones con medidas en TWIPS:

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();
    tx.Load(html, StreamType.HTMLFormat);

    // Complex page settings through sections
    foreach (Section section in tx.Sections)
    {
        section.Format.PageSize = PageSize.A4;
        section.Format.PageMargins = new PageMargins(
            1440, 1440, 1440, 1440); // TWIPS
        section.Format.Landscape = true;
    }

    tx.Save("output.pdf", StreamType.AdobePDF);
}
using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();
    tx.Load(html, StreamType.HTMLFormat);

    // Complex page settings through sections
    foreach (Section section in tx.Sections)
    {
        section.Format.PageSize = PageSize.A4;
        section.Format.PageMargins = new PageMargins(
            1440, 1440, 1440, 1440); // TWIPS
        section.Format.Landscape = true;
    }

    tx.Save("output.pdf", StreamType.AdobePDF);
}
$vbLabelText   $csharpLabel

Implementación de IronPDF

IronPDF centraliza los ajustes de página en las RenderingOptions con mediciones intuitivas basadas en milímetros:

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 25;    // mm
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 25;    // mm
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

Protección y seguridad de contraseñas

Ambas bibliotecas admiten funciones de seguridad de PDF, pero con diferentes patrones de API.

Implementación de TextControl

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();
    tx.Load(html, StreamType.HTMLFormat);

    SaveSettings saveSettings = new SaveSettings();
    saveSettings.UserPassword = "user123";
    saveSettings.MasterPassword = "owner456";

    tx.Save("protected.pdf", StreamType.AdobePDF, saveSettings);
}
using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();
    tx.Load(html, StreamType.HTMLFormat);

    SaveSettings saveSettings = new SaveSettings();
    saveSettings.UserPassword = "user123";
    saveSettings.MasterPassword = "owner456";

    tx.Save("protected.pdf", StreamType.AdobePDF, saveSettings);
}
$vbLabelText   $csharpLabel

Implementación de IronPDF

IronPDF proporciona un control de seguridad granular a través de la propiedad SecuritySettings:

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);

pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;

pdf.SaveAs("protected.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);

pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;

pdf.SaveAs("protected.pdf");
$vbLabelText   $csharpLabel

Cuándo los equipos consideran alternativas a TextControl

Hay varias situaciones que suelen llevar a los equipos de desarrollo a evaluar alternativas a TextControl:

Optimización de costes

Con una licencia de TextControl a partir de 3.398 $ por desarrollador y renovaciones anuales obligatorias del 40 %, el coste total de propiedad de tres años asciende a 5.750 $ por desarrollador. Los equipos centrados principalmente en la generación de PDF a menudo encuentran este precio difícil de justificar cuando existen alternativas a puntos de coste significativamente más bajos.

Preocupaciones de compatibilidad de hardware

El error documentado de los gráficos Intel Iris Xe que afecta a la 11ª generación de procesadores Intel requiere soluciones de registro para las implementaciones de TextControl. El renderizado basado en Chromium deIronPDFelimina por completo estos problemas de renderizado específicos del hardware.

Requisitos para PDF-First

Cuando el caso de uso principal es la generación de PDF en lugar de la edición de documentos, la arquitectura del procesador de textos de TextControl introduce una complejidad innecesaria. Las aplicaciones que no requieren funciones de edición de DOCX ni controles de interfaz de usuario integrados se benefician del diseño centrado en PDF de IronPDF.

Integración de tecnología web moderna

La limitada compatibilidad de TextControl con CSS y JavaScript plantea problemas a las aplicaciones que utilizan marcos de trabajo frontales contemporáneos. La compatibilidad total deIronPDFcon HTML5, CSS3 y JavaScript ES2024 garantiza una representación precisa del contenido web moderno.

Despliegue simplificado

La gestión del contexto ServerTextControl de TextControl y las dependencias de los componentes de la interfaz de usuario aumentan la complejidad de la implementación.IronPDFfunciona como un paquete NuGet autónomo sin dependencias externas ni complejos patrones de inicialización.

Alternativas a las plantillas y a la combinación de correspondencia

El sistema de combinación de correspondencia de TextControl utiliza plantillas DOCX con campos de combinación.IronPDFsustituye esto por enfoques de plantillas HTML estándar:

// Use standard C# string interpolation
var data = new { CustomerName = "John Doe", InvoiceNumber = "12345", Total = "$1,500.00" };

var html = $@"
<html>
<head>
    <style>
        body {{ font-family: Arial; padding: 40px; }}
        h1 {{ color: #333; }}
        .total {{ font-size: 24px; color: green; }}
    </style>
</head>
<body>
    <h1>Invoice #{data.InvoiceNumber}</h1>
    <p>Customer: {data.CustomerName}</p>
    <p class='total'>Total: {data.Total}</p>
</body>
</html>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
// Use standard C# string interpolation
var data = new { CustomerName = "John Doe", InvoiceNumber = "12345", Total = "$1,500.00" };

var html = $@"
<html>
<head>
    <style>
        body {{ font-family: Arial; padding: 40px; }}
        h1 {{ color: #333; }}
        .total {{ font-size: 24px; color: green; }}
    </style>
</head>
<body>
    <h1>Invoice #{data.InvoiceNumber}</h1>
    <p>Customer: {data.CustomerName}</p>
    <p class='total'>Total: {data.Total}</p>
</body>
</html>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
$vbLabelText   $csharpLabel

Para escenarios de creación de plantillas más complejos,IronPDFse integra con motores Razor y otros marcos de creación de plantillas. Consulte la Guía de integración de plantillas Razor para obtener patrones de implementación detallados.

Compatibilidad con .NET y preparación para el futuro

Ambas bibliotecas son compatibles con las implementaciones actuales de .NET.IronPDFmantiene un desarrollo activo con actualizaciones periódicas, garantizando la compatibilidad con .NET 8, .NET 9 y futuras versiones, incluida .NET 10, prevista para 2026. La compatibilidad de la biblioteca con async/await en toda su API se ajusta a las prácticas modernas de desarrollo de C#, incluidas las funciones disponibles en C# 13 y las capacidades previstas de C# 14.

Funciones adicionales de PDF

Además de la generación,IronPDFofrece funciones de manipulación de documentos que amplían su utilidad:

Conclusión

TX Text Control eIronPDFtienen objetivos diferentes, aunque ambos producen archivos PDF. TextControl destaca como editor de documentos completo con manipulación DOCX y controles de interfaz de usuario integrados, ideal para aplicaciones que requieren interfaces de edición de texto enriquecidas junto con funciones de exportación de documentos.

IronPDF se centra específicamente en la generación de PDF a partir de HTML y contenido web, proporcionando una solución racionalizada para los desarrolladores que necesitan convertir HTML, URL o contenido generado dinámicamente a PDF sin la sobrecarga de una infraestructura completa de edición de documentos. Su renderizado basado en Chromium garantiza un resultado perfecto en cuanto a píxeles que coincide con la visualización del navegador, mientras que el diseño de su API prioriza la simplicidad y la integración con los flujos de trabajo de desarrollo web estándar.

La elección entre ellas depende de los requisitos del proyecto: TextControl se decanta por la edición completa de documentos con exportación a PDF, mientras queIronPDFes más adecuado para la generación directa de PDF a partir de contenido web. Para los equipos que actualmente utilizan TextControl principalmente para la generación de PDF, la evaluación deIronPDFpuede revelar oportunidades para una reducción significativa de costes y una implementación simplificada sin sacrificar la calidad del PDF.

Para obtener más información sobre la implementación, consulte la documentación de IronPDF y los tutoriales que cubren casos de uso específicos y funciones avanzadas.