Ir para o conteúdo do rodapé
GUIAS DE MIGRAçãO

Como migrar de TextControl para IronPDF em C#

O Controle de texto TX se consolidou como um componente abrangente de edição de documentos no ecossistema .NET , oferecendo recursos robustos de edição de DOCX com controles de interface do usuário integrados. No entanto, para equipes de desenvolvimento cuja principal necessidade é a geração de PDFs em vez da edição completa de documentos, a arquitetura do TextControl apresenta custos adicionais significativos em licenciamento, complexidade e dependências de tempo de execução.

Este guia fornece um caminho completo de migração do TextControl para o IronPDF, com instruções passo a passo, comparações de código e exemplos práticos para desenvolvedores .NET profissionais que estejam avaliando essa transição.

Por que migrar do TextControl?

A decisão de migrar do TextControl geralmente se concentra em adequar suas ferramentas às suas necessidades reais. O Controle de texto TX é fundamentalmente um editor de documentos que trata a geração de PDFs como um recurso secundário. Os principais motivos pelos quais as equipes de desenvolvimento consideram a migração incluem:

Licenciamento caro: O TextControl opera com uma licença comercial a um custo mínimo de US$ 3.398 por ano por desenvolvedor. Uma equipe de quatro pessoas pode esperar investir cerca de US$ 6.749 por ano, com custos adicionais para licenças de tempo de execução de implantação de servidor. Os custos de renovação são de 40% ao ano, o que é obrigatório para manter o acesso às atualizações.

PDF como uma reflexão tardia: A arquitetura principal é de processamento de texto, não de PDF. Embora a geração de PDFs esteja disponível, ela é mais um recurso adicional do que o foco principal, resultando em uma qualidade de saída abaixo do ideal.

Problemas de hardware: O bug na placa gráfica Intel Iris Xe afeta a renderização de documentos em processadores Intel mais recentes (11ª geração), exigindo uma solução alternativa no registro do sistema para ser resolvido.

Dependências excessivas: o TextControl inclui componentes de interface de usuário para edição de documentos que podem não ser necessários se o seu foco for exclusivamente a geração de PDFs.

Arquitetura do processador de texto: Não otimizada para fluxos de trabalho de HTML para PDF exigidos por aplicativos web modernos.

API complexa: O modelo de gerenciamento de contexto e seleção do ServerTextControl adiciona complexidade desnecessária a tarefas simples de geração de PDF.

Comparação de custos

Aspecto Controle de texto TX IronPDF
Licença básica US$ 3.398+ Significativamente menor
Renovação anual 40% obrigatório Suporte opcional
Por desenvolvedor Sim Sim
Componentes de interface do usuário Pacote (inchaço) com foco em PDF
Custo total em 3 anos US$ 5.750+ Muito menor

IronPDF vs TextControl: Comparação de Recursos

Compreender as diferenças arquitetônicas ajuda os responsáveis ​​pelas decisões técnicas a avaliar o investimento em migração:

Recurso Controle de texto TX IronPDF
Foco principal Edição de DOCX Geração de PDF
Custo da licença US$ 3.398/ano por incorporador US$ 749, pagamento único por desenvolvedor
Qualidade do PDF Recurso básico e adicional Funcionalidade essencial de alto nível
Compatibilidade de hardware Problemas conhecidos com o Intel Iris Estável em todos os dispositivos
Integração com a interface do usuário Requer componentes de interface do usuário Sem excesso de componentes de interface do usuário
Renderização HTML/CSS Com problemas de compatibilidade com HTML. HTML5/CSS3 moderno
HTML para PDF Sim (secundário) Sim (primário)
Suporte a CSS Limitado CSS3 completo
JavaScript Limitado ES2024 completo
URL para PDF Configuração complexa Nativo
Cabeçalhos/Rodapés API complexa HTML simples
Mala direta Proprietário Modelos HTML
PDF/A Sim Sim
Proteção por senha Sim Sim
Assinaturas digitais Sim Sim
Mesclar PDFs Limitado Sim
Dividir PDFs Limitado Sim
Gestão de Contexto Obrigatório Não é necessário
Multiplataforma Focado no Windows Sim

Guia rápido: Migração do TextControl para o IronPDF

A migração pode começar imediatamente com esses passos fundamentais.

Passo 1: Substituir pacotes NuGet

Remova todos os pacotes 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

Instale o IronPDF:

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

Etapa 2: Atualizar Namespaces

Substitua os namespaces TextControl pelo namespace 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

Etapa 3: Inicializar a licença

Adicionar inicialização de licença na inicialização do aplicativo:

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

Exemplos de migração de código

Converter HTML para PDF

O caso de uso mais comum demonstra a diferença arquitetônica entre essas bibliotecas PDF for .NET .

Abordagem 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

Abordagem 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

A versão TextControl requer a criação de uma instância ServerTextControl, a chamada de Create() para inicializar o contexto, o carregamento do HTML com StreamType.HTMLFormat e o salvamento com StreamType.AdobePDF. O bloco using é obrigatório para o descarte adequado de recursos.

O IronPDF elimina completamente o gerenciamento de contexto. O ChromePdfRenderer não requer nenhuma cerimônia de inicialização — crie-o, renderize o HTML e salve. Essa simplificação arquitetônica reduz a carga cognitiva e os potenciais problemas de gerenciamento de recursos.

Para cenários avançados de conversão de HTML para PDF, consulte o guia de conversão de HTML para PDF .

Unir vários PDFs

A fusão de PDFs revela outra diferença significativa de complexidade entre essas bibliotecas.

Abordagem 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

Abordagem 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

O TextControl requer a leitura de arquivos em matrizes de bytes, o gerenciamento do contexto e o uso de para mesclar documentos. O método PdfDocument.Merge() do IronPDF lida com tudo com uma única chamada explícita.

Para cenários avançados de mesclagem, incluindo extração seletiva de páginas, consulte o guia de mesclagem e divisão de PDFs .

Adicionando cabeçalhos e rodapés

Cabeçalhos e rodapés com numeração de páginas dinâmica demonstram a diferença na complexidade da API.

Abordagem 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

Abordagem 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

O TextControl requer a criação de objetos HeaderFooter com enums HeaderFooterType específicos, o acesso às seções do documento por meio de textControl.Sections[0] e a adição à coleção HeadersAndFooters. IronPDF fornece métodos diretos AddTextHeader e AddTextFooter com sintaxe de marcador de posição simples.

Para cabeçalhos baseados em HTML com controle total de estilo, o IronPDF também oferece suporte a 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

Saiba mais sobre as opções de cabeçalho e rodapé na documentação de cabeçalhos e rodapés .

Referência de mapeamento da API TextControl para IronPDF

Este mapeamento acelera a migração ao mostrar equivalentes diretos da API:

Controle 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 Modelos HTML + Razor
DocumentTarget.HeadersAndFooters HtmlHeaderFooter
LoadSettings RenderingOptions
StreamType.AdobePDF Saída padrão

Problemas e soluções comuns em migrações

Problema 1: Contexto do ServerTextControl

O TextControl requer os blocos Create() e using para cada operação.

Solução: O IronPDF não possui gerenciamento 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

Problema 2: Conversões de StreamType

O TextControl carrega diferentes formatos e converte para PDF através de enums StreamType.

Solução: O IronPDF renderiza HTML diretamente, sem conversão de formato intermediária:

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

Edição 3: Modelos DOCX

O TextControl utiliza arquivos DOCX para modelos com mala direta.

Solução: Converter para modelos HTML com interpolação de strings em C# ou 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

Problema 4: Bug na placa gráfica Intel Iris Xe

O TextControl possui problemas de renderização documentados com processadores Intel de 11ª geração, que exigem soluções alternativas no registro do sistema.

Solução: O IronPDF usa renderização Chromium — sem necessidade de correções de bugs de aceleração de hardware ou modificações no registro.

Lista de verificação para migração do TextControl

Tarefas pré-migração

Faça uma auditoria em seu código-fonte para identificar todos os usos do controle 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

Modelos de mala direta para conversão em HTML. Observe os requisitos de cabeçalho/rodapé para implementação com HtmlHeaderFooter. Identifique qualquer funcionalidade de edição de DOCX que possa exigir soluções alternativas.

Tarefas de atualização de código

  1. Remova os pacotes NuGet do TX Text Control.
  2. Instale o pacote NuGet IronPDF
  3. Remover o gerenciamento de contexto ServerTextControl (sem mais chamadas Create())
  4. Converter cargas StreamType.HTMLFormat para RenderHtmlAsPdf
  5. Converter mala direta em modelos HTML com interpolação de strings ou Razor
  6. Atualize os cabeçalhos/rodapés para usar HtmlHeaderFooter ou AddTextFooter
  7. Simplifique as configurações da página usando RenderingOptions
  8. Adicionar inicialização de licença na inicialização

Testes pós-migração

Após a migração, verifique os seguintes aspectos:

  • Teste se todos os modelos de documento são renderizados corretamente.
  • Verificar a conformidade com o padrão PDF/A, se necessário.
  • Testar a funcionalidade de proteção por senha
  • Verificar se os cabeçalhos/rodapés aparecem em todas as páginas.
  • Verifique o hardware Intel de 11ª geração — não são mais necessárias soluções alternativas no registro com o IronPDF.

Principais benefícios da migração para o IronPDF

A migração do TextControl para o IronPDF oferece diversas vantagens para equipes focadas na geração de PDFs:

Arquitetura PDF-First: O IronPDF foi desenvolvido especificamente para a geração de PDFs, oferecendo recursos robustos de criação e renderização de documentos, aproveitando os modernos padrões HTML5 e CSS3.

Relação custo-benefício: O preço único do IronPDF o torna significativamente mais barato a longo prazo, especialmente em comparação com o serviço por assinatura do TextControl, que exige renovações anuais de 40%.

Estabilidade comprovada: Confiabilidade documentada em diversos hardwares, evitando problemas como os enfrentados pelo TextControl com placas gráficas Intel.

Sem gerenciamento de contexto: Elimine a cerimônia de criação e os padrões de descarte de recursos. A renderização sem estado do IronPDF simplifica o código e reduz possíveis vazamentos de memória.

Mecanismo de renderização moderno: Com a crescente adoção do .NET 10 e do C# 14 até 2026, a renderização baseada no Chromium do IronPDF garante compatibilidade com os padrões da web atuais e futuros.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim