Saltar al pie de página
GUíAS DE MIGRACIóN

Cómo migrar de TextControl a IronPDF en C#

TX Text Control se ha consolidado como un completo componente editor de documentos en el ecosistema .NET, ofreciendo sólidas capacidades de edición DOCX con controles de interfaz de usuario integrados. Sin embargo, para los equipos de desarrollo cuyo principal requisito es la generación de PDF en lugar de la edición completa de documentos, la arquitectura de TextControl presenta una sobrecarga significativa en costes de licencia, complejidad y dependencias de tiempo de ejecución.

Esta guía proporciona una ruta de migración completa de TextControl a IronPDF, con instrucciones paso a paso, comparaciones de código y ejemplos prácticos para desarrolladores profesionales de .NET que estén evaluando esta transición.

Por qué migrar de TextControl

La decisión de migrar de TextControl suele centrarse en adaptar las herramientas a las necesidades reales. Control de texto TXes fundamentalmente un editor de documentos que trata la generación de PDF como una función secundaria. Entre las principales razones por las que los equipos de desarrollo se plantean la migración se incluyen:

Licencias costosas: TextControl opera con una licencia comercial a un mínimo de $3,398 por año por desarrollador. Un equipo de cuatro personas puede esperar invertir alrededor de 6.749 dólares al año, con costes adicionales por licencias de tiempo de ejecución de implementación en servidor. Los costes de renovación ascienden al 40% anual, lo que es obligatorio para mantener el acceso a las actualizaciones.

PDF como ocurrencia tardía: la arquitectura central es el procesamiento de textos, no PDF. Aunque existe la posibilidad de generar archivos PDF, se trata más de una función añadida que del objetivo principal, por lo que la calidad del resultado no es óptima.

Errores de hardware: el error de gráficos Intel Iris Xe afecta la representación de documentos en los procesadores Intel más nuevos (11.ª generación), lo que requiere una solución alternativa de registro para resolverlo.

Dependencias infladas: TextControl incluye componentes de interfaz de usuario de edición de documentos que posiblemente no necesite si su enfoque es puramente en la generación de PDF.

Arquitectura de procesador de textos: no optimizada para los flujos de trabajo de HTML a PDF que exigen las aplicaciones web modernas.

API compleja: el modelo de selección y gestión de contexto de ServerTextControl agrega una complejidad innecesaria a las tareas sencillas de generación de PDF.

Comparación de costes

Aspecto Control de texto TX IronPDF
Licencia base $3,398+ Reducción significativa
Renovación anual 40% obligatorio Asistencia opcional
Por desarrollador
Componentes de interfaz de usuario Paquete (bloat) Enfocado a PDF
Coste total de 3 años $5,750+ Mucho más bajo

IronPDFfrente a TextControl: Comparación de características

Comprender las diferencias arquitectónicas ayuda a los responsables técnicos a evaluar la inversión en migración:

Característica Control de texto TX IronPDF
Enfoque principal Edición DOCX Generación de PDF
Coste de la licencia 3.398 $/año por desarrollador 749 $ una sola vez por desarrollador
Calidad PDF Función básica y complementaria Funciones principales
Compatibilidad de hardware Problemas conocidos con Intel Iris Estable en todos los dispositivos
Integración con la interfaz de usuario Requiere componentes de interfaz de usuario Sin sobrecarga de componentes de interfaz de usuario
Renderización HTML/CSS Buggy con HTML HTML5/CSS3 moderno
HTML a PDF Sí (secundario) Sí (principal)
Soporte CSS Limitado CSS3 completo
JavaScript Limitado ES2024 completo
URL a PDF Configuración compleja Nativo
Encabezados/pies de página API complejas HTML sencillo
Combinación de correspondencia Propietario Plantillas HTML
PDF/A
Protección por contraseña
Firmas digitales
Fusionar PDF Limitado
Dividir PDF Limitado
Gestión del contexto Requerido No es necesario
Multiplataforma Centrado en Windows

Inicio rápido: Migración de TextControl a IronPDF

La migración puede comenzar inmediatamente con estos pasos básicos.

Paso 1: Sustituir paquetes NuGet

Elimine todos los paquetes de TextControl:

# Remove TX Text Control
dotnet remove package TXTextControl.TextControl
dotnet remove package TXTextControl.DocumentServer
# Remove TX Text Control
dotnet remove package TXTextControl.TextControl
dotnet remove package TXTextControl.DocumentServer
SHELL

Instalar IronPDF:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Paso 2: Actualizar los espacios de nombres

Sustituya los espacios de nombres TextControl por el espacio de nombres IronPdf:

// Before (TextControl)
using TXTextControl;
using TXTextControl.DocumentServer;

// After (IronPDF)
using IronPdf;
// Before (TextControl)
using TXTextControl;
using TXTextControl.DocumentServer;

// After (IronPDF)
using IronPdf;
Imports TXTextControl
Imports TXTextControl.DocumentServer

' After (IronPDF)
Imports IronPdf
$vbLabelText   $csharpLabel

Paso 3: Inicializar licencia

Añadir inicialización de licencia al inicio de la aplicación:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Ejemplos de migración de código

Convertir HTML a PDF

El caso de uso más común demuestra la diferencia arquitectónica entre estas bibliotecas PDF .NET.

Enfoque de TextControl:

// 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);
            }
        }
    }
}
Imports TXTextControl
Imports System.IO

Namespace TextControlExample
    Class Program
        Shared Sub Main(ByVal args As String())
            Using textControl As New ServerTextControl()
                textControl.Create()

                Dim html As String = "<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)
            End Using
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

Enfoque IronPDF:

// 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");
        }
    }
}
Imports IronPdf

Namespace IronPdfExample
    Class Program
        Shared Sub Main(ByVal args As String())
            Dim renderer = New ChromePdfRenderer()

            Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"

            Dim pdf = renderer.RenderHtmlAsPdf(html)
            pdf.SaveAs("output.pdf")
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

La versión TextControl requiere crear una instancia ServerTextControl, llamar a Create() para inicializar el contexto, cargar HTML con StreamType.HTMLFormat y guardar con StreamType.AdobePDF. El bloque using es obligatorio para la correcta eliminación de recursos.

IronPDF elimina por completo la gestión del contexto. El ChromePdfRenderer no requiere ninguna ceremonia de inicialización: créelo, renderice HTML y guárdelo. Esta simplificación arquitectónica reduce la carga cognitiva y los posibles errores de gestión de recursos.

Para situaciones avanzadas de conversión de HTML a PDF, consulte la Guía de conversión de HTML a PDF.

Fusión de varios PDF

La fusión de PDF revela otra importante diferencia de complejidad entre estas bibliotecas.

Enfoque de TextControl:

// 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);
            }
        }
    }
}
Imports TXTextControl
Imports System.IO

Namespace TextControlExample
    Class Program
        Shared Sub Main(ByVal args As String())
            Using textControl As New ServerTextControl()
                textControl.Create()

                Dim pdf1 As Byte() = File.ReadAllBytes("document1.pdf")
                textControl.Load(pdf1, StreamType.AdobePDF)

                Dim pdf2 As Byte() = File.ReadAllBytes("document2.pdf")
                textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append)

                textControl.Save("merged.pdf", StreamType.AdobePDF)
            End Using
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

Enfoque IronPDF:

// 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");
        }
    }
}
Imports IronPdf

Namespace IronPdfExample
    Class Program
        Shared Sub Main(ByVal args As String())
            Dim pdf1 = PdfDocument.FromFile("document1.pdf")
            Dim pdf2 = PdfDocument.FromFile("document2.pdf")

            Dim merged = PdfDocument.Merge(pdf1, pdf2)
            merged.SaveAs("merged.pdf")
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

TextControl requiere leer archivos en matrices de bytes, administrar el contexto ServerTextControl y usar LoadAppendMode.Append para fusionar documentos. El método PdfDocument.Merge() deIronPDFmaneja todo con una única llamada explícita.

Para situaciones de fusión avanzadas, incluida la extracción selectiva de páginas, consulte la guía de fusión y división de PDF.

Añadir encabezados y pies de página

Los encabezados y pies de página con números de página dinámicos demuestran la diferencia de complejidad de las API.

Enfoque de TextControl:

// 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);
            }
        }
    }
}
Imports TXTextControl
Imports System.IO

Namespace TextControlExample
    Class Program
        Shared Sub Main(ByVal args As String())
            Using textControl As New ServerTextControl()
                textControl.Create()

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

                Dim header As New HeaderFooter(HeaderFooterType.Header)
                header.Text = "Document Header"
                textControl.Sections(0).HeadersAndFooters.Add(header)

                Dim footer As New HeaderFooter(HeaderFooterType.Footer)
                footer.Text = "Page {page} of {numpages}"
                textControl.Sections(0).HeadersAndFooters.Add(footer)

                textControl.Save("output.pdf", StreamType.AdobePDF)
            End Using
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

Enfoque IronPDF:

// 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");
        }
    }
}
Imports IronPdf
Imports IronPdf.Rendering

Namespace IronPdfExample
    Class Program
        Shared Sub Main(args As String())
            Dim renderer As New ChromePdfRenderer()

            Dim html As String = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>"

            Dim pdf = renderer.RenderHtmlAsPdf(html)

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

            pdf.SaveAs("output.pdf")
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

TextControl requiere crear objetos HeaderFooter con enumeraciones HeaderFooterType específicas, acceder a secciones del documento a través de textControl.Sections[0] y agregar a la colección HeadersAndFooters.IronPDFproporciona métodos directos AddTextHeader y AddTextFooter con una sintaxis de marcador de posición simple.

Para encabezados basados ​​en HTML con control de estilo completo,IronPDFtambién admite HtmlHeaderFooter:

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
};
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='width: 100%; text-align: center; font-size: 12pt;'>
            Company Report
        </div>",
    .MaxHeight = 30
}

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

Más información sobre las opciones de encabezado y pie de página en documentación sobre encabezados y pies de página.

Referencia de mapeo de TextControl API a IronPDF

Este mapeo acelera la migración al mostrar los equivalentes directos de las API:

Control de texto TX IronPDF
ServerTextControl.Create() new ChromePdfRenderer()
tx.Load(html, StreamType.HTMLFormat) renderer.RenderHtmlAsPdf(html)
tx.Load(url, StreamType.HTMLFormat) renderer.RenderUrlAsPdf(url)
tx.Save(path, StreamType.AdobePDF) pdf.SaveAs(path)
SaveSettings.PDFAConformance RenderingOptions.PdfAFormat
DocumentServer.MailMerge Plantillas HTML + Razor
DocumentTarget.HeadersAndFooters HtmlHeaderFooter
LoadSettings RenderingOptions
StreamType.AdobePDF Resultados por defecto

Problemas comunes de migración y soluciones

Edición 1: Contexto de ServerTextControl

TextControl requiere los bloques Create() y using para cada operación.

Solución:IronPDFno tiene gestión de contexto:

// Just create and use
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Just create and use
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
' Just create and use
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Número 2: Conversiones StreamType

TextControl carga diferentes formatos y los convierte a PDF a través de enumeraciones StreamType.

Solución:IronPDFrenderiza HTML directamente sin conversión de formatos intermedios:

// No format conversion needed
var pdf = renderer.RenderHtmlAsPdf(html);
// No format conversion needed
var pdf = renderer.RenderHtmlAsPdf(html);
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Edición 3: Plantillas DOCX

TextControl utiliza archivos DOCX para plantillas con combinación de correspondencia.

Solución: Convertir a plantillas HTML con interpolación de cadenas de C# o Razor:

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");
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");
Option Strict On



Dim data = New With {Key .CustomerName = "John Doe", Key .InvoiceNumber = "12345", Key .Total = "$1,500.00"}

Dim 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>"

Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
$vbLabelText   $csharpLabel

Número 4: Intel Iris Xe Graphics Bug

TextControl ha documentado problemas de renderizado con procesadores Intel de 11ª generación, que requieren soluciones de registro.

Solución:IronPDFutiliza el renderizado Chromium, por lo que no se requieren errores de aceleración de hardware ni modificaciones en el registro.

Lista de migración de TextControl

Tareas previas a la migración

Audite su código base para identificar todos los usos de TextControl:

grep -r "using TXTextControl" --include="*.cs" .
grep -r "ServerTextControl\|Load\|Save" --include="*.cs" .
grep -r "using TXTextControl" --include="*.cs" .
grep -r "ServerTextControl\|Load\|Save" --include="*.cs" .
SHELL

Plantillas de combinación de correspondencia de documentos para su conversión a HTML. Tenga en cuenta los requisitos de encabezado y pie de página para la implementación con HtmlHeaderFooter. Identifique cualquier funcionalidad de edición de DOCX que pueda requerir soluciones alternativas.

Tareas de actualización de código

  1. Eliminar paquetes NuGet de TX Text Control
  2. Instalación del paquete IronPdf NuGet
  3. Eliminar la gestión de contexto ServerTextControl (no más llamadas Create())
  4. Convertir cargas StreamType.HTMLFormat a RenderHtmlAsPdf
  5. Convertir combinación de correspondencia en plantillas HTML con interpolación de cadenas o Razor
  6. Actualice los encabezados y pies de página para usar HtmlHeaderFooter o AddTextFooter
  7. Simplifique la configuración de la página usando RenderingOptions
  8. Añadir inicialización de licencia al inicio

Pruebas posteriores a la migración

Tras la migración, verifique estos aspectos:

  • Prueba de que todas las plantillas de documentos se visualizan correctamente
  • Verificar el cumplimiento de PDF/Asi es necesario
  • Probar la funcionalidad de la protección por contraseña
  • Comprobar que los encabezados/pies de página aparecen en todas las páginas
  • Comprobación en hardware Intel de 11ª generación: ya no se necesitan más soluciones de registro con IronPDF

Beneficios clave de migrar a IronPDF

Pasar de TextControl aIronPDFofrece varias ventajas a los equipos centrados en la generación de PDF:

Arquitectura PDF-First:IronPDFestá diseñado específicamente para la generación de PDF y ofrece sólidas capacidades de creación y representación de documentos aprovechando los modernos estándares HTML5 y CSS3.

Rentabilidad: el precio único deIronPDFlo hace significativamente más barato a lo largo del tiempo, especialmente en comparación con el servicio basado en suscripción de TextControl con renovaciones anuales obligatorias del 40%.

Estabilidad comprobada: confiabilidad documentada en varios hardware, evitando problemas como los que enfrenta TextControl con gráficos Intel.

Sin gestión de contexto: elimine la ceremonia de creación de ServerTextControl y los patrones de eliminación de recursos. El renderizado sin estado deIronPDFsimplifica el código y reduce las posibles fugas de memoria.

Motor de renderizado moderno: a medida que aumenta la adopción de .NET 10 y C# 14 hasta 2026, la renderización basada en Chromium deIronPDFgarantiza la compatibilidad con los estándares web actuales y futuros.

Curtis Chau
Escritor Técnico

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 ...

Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame