IRONSOFTWAREHOME
VÍDEOS

Como preencher e editar formulários PDF em C# | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 de julho de 2026

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: Uma única licença de desenvolvedor doTX Text Control .NET Serveré $4,198 perpétua com um ano de atualizações/suporte; uma licença de equipe de quatro desenvolvedores é $8,398 perpétua + 1 ano (segundo preços no textcontrol.com). Renovações de assinatura anual correm ~40% do preço de tabela (cerca de $1,698/ano/desenvolvedor), e a janela de renovação fecha 30 dias após o vencimento. A implantação de produção também requer licenças separadas de tempo de execução do servidor.

PDF como Caminho Secundário: A arquitetura central é um motor de processamento de palavras (DOCX/RTF primeiro), com PDF como uma rota de exportação ao invés da superfície principal.

Superfície de Editor Integrada: O Controle de texto TX é fornecido com componentes de UI de edição DOCX que podem ser desnecessários quando o requisito é puramente geração de PDF do lado do servidor.

Arquitetura de Processador de Palavras: A importação de HTML passa por um pipeline de processamento de palavras, ao invés de um renderizador baseado em Chromium, portanto, a fidelidade HTML5/CSS3 é tipicamente mais fraca do que uma biblioteca PDF de motor de navegador.

Compatibilidade STA em ASP.NET: O ServerTextControl tem suas raízes em um modelo de componente COM estilo STA e é mais confiável em threads compatíveis com STA, o que complica o hosting async/MTA em stacks ASP.NET Core modernos.

API Complexa: O gerenciamento de contexto ServerTextControl, além de enums StringStreamType / BinaryStreamType / StreamType separadas e um modelo de documento orientado por seleção, adicionam sobrecarga para tarefas simples de geração de PDF.

Comparação de custos

AspectoTX Text Control .NET ServerIronPDF
Desenvolvedor único$4,198 perpétua + 1 ano de suporteLicença única por desenvolvedor
Equipe de 4$8,398 perpétua + 1 ano de suporteMenor por assento
Renovação anual40% do preço de tabela ($1,698/desenvolvedor/ano)Suporte opcional
Runtime do servidorLicença de tempo de execução separada necessária para produçãoNão é necessário
Componentes de interface do usuárioSuperfície do editor DOCX integradacom foco em PDF

##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:

RecursoControle de texto TXIronPDF
Foco principalDOCX / processamento de palavrasGeração de PDF
Custo da licença (apenas um desenvolvedor)$4,198 perpétua + 1 ano; ~40%/ano renovaçãoLicença única por desenvolvedor
Geração de PDFCaminho de exportação em um motor de processamento de palavrasFuncionalidade principal
Licença de tempo de execução do servidorNecessário para produçãoNão é necessário
ThreadingCompatibilidade STA em ASP.NETSem requisito de STA
Renderização HTML/CSSImportação de HTML via pipeline de processamento de palavrasChromium HTML5/CSS3
HTML para PDFSim (secundário)Sim (primário)
Suporte a CSSLimitadoCSS3 completo
JavaScriptLimitadoES2024 completo
URL para PDFConfiguração complexaNativo
Cabeçalhos/RodapésAPI complexaHTML simples
Mala diretaProprietárioModelos HTML
PDF/ASimSim
Proteção por senhaSimSim
Assinaturas digitaisSimSim
Mesclar PDFsLimitadoSim
Dividir PDFsLimitadoSim
Gestão de ContextoObrigatórioNão é necessário
MultiplataformaFocado no WindowsWindows / Linux / macOS / Docker

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

O runtime sem interface do Controle de texto TX não é distribuído como um único pacote publico NuGet — o pacote publico é TXTextControl.Web (o editor companheiro), e o ServerTextControl runtime atual é entregue via o instalador licenciado do Windows/MSI ou pelo feed privado de NuGet do fornecedor. A remoção geralmente significa desinstalar aqueles pacotes enviados pelo instalador, além de TXTextControl.Web e desinstalar o MSI.

# Remove Controle de texto TX packages (names depend on which were installed
# from the licensed installer / private feed / public NuGet)
dotnet remove package TXTextControl.Web

# Then install IronPDF(single self-contained package)
dotnet add package IronPdf
SHELL

Etapa 2: Atualizar Namespaces

Substitua namespaces TextControl pelo namespace IronPDF:

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

// After (IronPDF)
using IronPdf;

Etapa 3: Inicializar a licença

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

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

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, StringStreamType.HTMLFormat);
                textControl.Save("output.pdf", StreamType.AdobePDF);
            }
        }
    }
}
C#

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

A versão TextControl requer criar uma instância ServerTextControl, chamar Create() para inicializar o contexto, carregar HTML com StreamType.HTMLFormat e salvar com StreamType.AdobePDF. O bloco using é obrigatório para o descarte correto dos recursos.

O IronPDF elimina completamente o gerenciamento de contexto. O ChromePdfRenderer não requer 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, BinaryStreamType.AdobePDF);

                byte[] pdf2 = File.ReadAllBytes("document2.pdf");
                textControl.Append(pdf2, BinaryStreamType.AdobePDF, AppendSettings.StartWithNewSection);

                textControl.Save("merged.pdf", StreamType.AdobePDF);
            }
        }
    }
}
C#

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

TextControl requer leitura de arquivos em arrays de bytes, gerenciamento do contexto ServerTextControl e chamar Append com BinaryStreamType.AdobePDF e AppendSettings.StartWithNewSection para concatenar documentos. O método PdfDocument.Merge() do IronPDF lida com tudo em 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, StringStreamType.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);
            }
        }
    }
}
C#

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

TextControl requer a criação de objetos HeaderFooter com enums HeaderFooterType específicos, acessando seções de documentos através de textControl.Sections[0] e adicionando à coleção HeadersAndFooters.IronPDF fornece métodos diretos AddTextHeader e AddTextFooter (via TextHeaderFooter) com sintaxe simples de placeholder.

Para cabeçalhos baseados em HTML com controle completo de estilo,IronPDF também suporta 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
};

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 TXIronPDF
ServerTextControl.Create()new ChromePdfRenderer()
tx.Load(html, StringStreamType.HTMLFormat)renderer.RenderHtmlAsPdf(html)
tx.Load(bytes, BinaryStreamType.AdobePDF)PdfDocument.FromFile(...) / FromBinaryData(...)
tx.Save(path, StreamType.AdobePDF)pdf.SaveAs(path)
tx.Append(bytes, BinaryStreamType.AdobePDF, AppendSettings.StartWithNewSection)PdfDocument.Merge(a, b)
SaveSettings.PDFAConformanceRenderingOptions.PdfAFormat
DocumentServer.MailMergeModelos HTML + Razor
HeaderFooter + Sections[i].HeadersAndFootersHtmlHeaderFooter / TextHeaderFooter
LoadSettingsRenderingOptions
StreamType.AdobePDFSaída padrão

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

Problema 1: Contexto do ServerTextControl

TextControl requer Create() e bloco 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);

Problema 2: Conversões de StreamType

TextControl lida com três enums diferentes — StringStreamType para sobrecargas de string, BinaryStreamType para sobrecargas de byte[] e StreamType para Save do caminho do arquivo — para carregar diferentes formatos e exportar para PDF.

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

// No format conversion needed
var pdf = renderer.RenderHtmlAsPdf(html);

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");
C#

Questão 4: Compatibilidade STA em ASP.NET

TextControl ServerTextControl historicamente remonta a um modelo de componente estilo STA COM e é mais confiável quando hospedado em threads compatíveis com STA (por exemplo, [ASPCOMPAT] em Web Forms clássicos, ou empacotando chamadas em um thread/fila STA dedicado no ASP.NET Core). Misturar isso livremente com threads de trabalho MTA pode produzir erros de afinidade de thread ocasionais sob carga.

**Solução:**IronPDF não tem requisito de STA e roda sem modificação em threads de trabalho MTA, em controladores async e dentro de contêineres Linux sob .NET 6/7/8/9.

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" .
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 do IronPDF
  3. Remova o gerenciamento de contexto ServerTextControl (sem mais chamadas de Create())
  4. Converta carregamentos StringStreamType.HTMLFormat para RenderHtmlAsPdf
  5. Converter mala direta em modelos HTML com interpolação de strings ou Razor
  6. Atualize cabeçalhos/rodapés para usar HtmlHeaderFooter ou AddTextFooter
  7. Simplifique as configurações de 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 hosting ASP.NET Core em threads de trabalho MTA e contêineres Linux —IronPDF não tem requisito de afinidade STA

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 Primeiro para PDF: O IronPDF é adaptado especificamente para geração de PDFs, oferecendo capacidades de criação e renderização de documentos aproveitando os padrões modernos de HTML5 e CSS3.

Eficiência de Custo: O preço único por desenvolvedor do IronPDF é comparativamente favorável ao doTX Text Control .NET Serverde $4,198 perpétua + 1 ano no nível de entrada e modelo de renovação ~40%/ano, particularmente uma vez que o licenciamento de tempo de execução do servidor separado é levado em consideração.

Sem Compatibilidade de STA: O IronPDF roda em threads de trabalho MTA padrão no ASP.NET Core, controladores async, e contêineres Linux sem as considerações de hosting compatível com STA que o ServerTextControl herda de seu modelo de threading estilo COM.

Sem Gerenciamento de Contexto: Elimine a cerimônia de criação do ServerTextControl e a dança de carga/salvamento de três enums (StringStreamType / BinaryStreamType / StreamType) — ChromePdfRenderer é sem estado.

Motor de Renderização Moderno: O motor baseado em Chromium do IronPDF visa padrões atuais de HTML5/CSS3/JavaScript ao invés de um caminho de importação HTML de motor de processamento de palavras.

Observe: Text Control é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pela Text Control. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.
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 bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.