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

Como migrar de TallComponents para IronPDF em C#

Em 27 de maio de 2025, Apryse adquiriu a TallComponents. Novas licenças para TallPDF.NET e PDFKit.NET não são mais oferecidas, e a Apryse direciona novos compradores para o iText SDK (também de propriedade da Apryse). Clientes existentes continuam recebendo suporte, mas o motor está apenas em manutenção. Para equipes que atualmente utilizam o TallComponents, planejar uma migração agora evita uma troca forçada mais tarde.

Este guia fornece um caminho de migração do Componentes altos para o IronPDF, incluindo instruções passo a passo, mapeamentos de API e exemplos de código para desenvolvedores .NET planejando a transição.

Por Que Planejar uma Migração do TallComponents

A Componentes altos (fundada em 2001) lançou dois principais produtos PDF for .NET: PDFKit.NET para carregamento e manipulação de PDFs, e TallPDF.NET para geração de documentos orientados ao layout. Após a aquisição da Apryse, as vendas de novas licenças foram encerradas, o que altera o horizonte de planejamento para equipes que dependem da biblioteca.

Principais Limitações do Componentes altos Hoje

Fechado para novas licenças: A página da Componentes altos na Apryse afirma que não está mais oferecendo novas licenças para os produtos TallComponents, e direciona novos compradores para o iText SDK. Os detentores de licença existentes continuam sendo suportados.

Pipeline deHTMLapenas XHTML: TallPDF.NET fornece uma classe XhtmlParagraph que interpreta XHTML 1.0 Strict / XHTML 1.1 + CSS 2.1. PDFKit.NET por si só não possui um pipeline de HTML. Conteúdo moderno em HTML5 + CSS3 +JavaScriptnão é renderizado de forma confiável — não há um motor de navegador sem cabeça incluído.

Plataforma alvo congelada: TallComponents.PDFKit5 tem como alvo o .NET Standard 2.0; o antigo TallComponents.PDFKit (4.x) tem como alvo o .NET Framework 2.0. Não há um TFM for .NET 8/9 publicado.

Roteiro apenas de manutenção: Com a energia de desenvolvimento da Apryse focada no Apryse SDK e iText, os pacotes com marca Componentes altos recebem atualizações de manutenção, mas sem novo roteiro de recursos.

IronPDF: Uma alternativa moderna ao TallComponents

O IronPDF aborda as lacunas centrais que afetam os usuários do Componentes altos nas pilhas atuais do .NET:

Recurso Componentes altos IronPDF
Status de venda atual Fechado para novas licenças (Apryse adquiriu 2025-05-27) Ativamente vendido
Suporte HTML-para-PDF XHTML 1.0/1.1 +CSS 2.1via XhtmlParagraph (TallPDF.NET) Sim (HTML5/CSS3 com Chromium)
JavaScriptemHTML Não ES2024 completo
Instalação NuGet (TallComponents.PDFKit5, TallComponents.TallPDF5) NuGet (IronPdf)
Suporte ao cliente Apenas para clientes existentes; novos compradores direcionados para o iText Suporte ativo e comunidade
Investimento futuro Apenas manutenção Roteiro de longo prazo

TallComponents utiliza um modelo orientado a XML/layout enraizado em uma era anterior de geração de documentos .NET, enquanto o IronPDF fornece renderizaçãoHTMLalimentada por Chromium alinhada com a forma como as equipes constroem aplicativos front-end hoje.

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

Passo 1: Substituir pacotes NuGet

Remover os pacotes Componentes altos que seu projeto referencia. Os IDs reais dos pacotes no nuget.org são TallComponents.PDFKit5 (ou TallComponents.PDFKit para 4.x) e TallComponents.TallPDF5 / TallPDF6:

# Remove Componentes altos packages (whichever your project uses)
dotnet remove package TallComponents.PDFKit5
dotnet remove package TallComponents.TallPDF5
dotnet remove package TallComponents.PDFRasterizer4
# Remove Componentes altos packages (whichever your project uses)
dotnet remove package TallComponents.PDFKit5
dotnet remove package TallComponents.TallPDF5
dotnet remove package TallComponents.PDFRasterizer4
SHELL

Instale o IronPDF:

dotnet add package IronPdf

Para estruturas especializadas, o IronPDF oferece pacotes de extensão dedicados:

Servidor Blazor :

Install-Package IronPdf.Extensions.Blazor

MAUI:

Install-Package IronPdf.Extensions.Maui

Framework MVC:

Install-Package IronPdf.Extensions.Mvc.Framework

Etapa 2: Atualizar Namespaces

Substituir namespaces do Componentes altos pelo namespace IronPDF:

// Before (TallComponents — real namespaces)
using TallComponents.PDF;                    // Document, Page (PDFKit.NET)
using TallComponents.PDF.Shapes;             // TextShape, ImageShape (PDFKit)
using TallComponents.PDF.Security;           // PasswordSecurity
using TallComponents.PDF.Layout;             // Document, Section (TallPDF.NET)
using TallComponents.PDF.Layout.Paragraphs;  // TextParagraph, XhtmlParagraph

// After (IronPDF)
using IronPdf;
// Before (TallComponents — real namespaces)
using TallComponents.PDF;                    // Document, Page (PDFKit.NET)
using TallComponents.PDF.Shapes;             // TextShape, ImageShape (PDFKit)
using TallComponents.PDF.Security;           // PasswordSecurity
using TallComponents.PDF.Layout;             // Document, Section (TallPDF.NET)
using TallComponents.PDF.Layout.Paragraphs;  // TextParagraph, XhtmlParagraph

// After (IronPDF)
using IronPdf;
Imports IronPdf

' Before (TallComponents — real namespaces)
' Imports TallComponents.PDF                    ' Document, Page (PDFKit.NET)
' Imports TallComponents.PDF.Shapes             ' TextShape, ImageShape (PDFKit)
' Imports TallComponents.PDF.Security           ' PasswordSecurity
' Imports TallComponents.PDF.Layout             ' Document, Section (TallPDF.NET)
' Imports TallComponents.PDF.Layout.Paragraphs  ' TextParagraph, XhtmlParagraph

' After (IronPDF)
Imports IronPdf
$vbLabelText   $csharpLabel

Etapa 3: Inicialize sua 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

Referência de mapeamento da API Componentes altos para IronPDF

Compreender como os conceitos do Componentes altos se relacionam com o IronPDF acelera o processo de migração:

Componentes altos IronPDF Notas
Document (TallPDF.NET: layout) ChromePdfRenderer Criar um renderizador para geração de PDFs
Document (PDFKit.NET: manipular) PdfDocument Carregar/editar PDFs existentes
Section Automático Seções derivadas da estruturaHTML
TextParagraph Elementos de textoHTML Use

,

,
, etc.

ImageParagraph tag ImagensHTMLpadrão
TableParagraph HTML
TabelasHTMLpadrão
XhtmlParagraph (XHTML 1.x + CSS 2.1) RenderHtmlAsPdf() (HTML5/CSS3 via Chromium) HTML moderno funciona
Font CSS font-family Fontes da web suportadas
document.Write(...) pdf.SaveAs() / pdf.BinaryData Saída em arquivo ou byte[]
page.Overlay.Add(shape) pdf.ApplyStamp(stamper) Marca d'água / sobreposição
outputDoc.Pages.Add(page.Clone()) PdfDocument.Merge(...) / pdf.AppendPdf(...) Mesclar vários PDFs
Document.Security = new PasswordSecurity { ... } pdf.SecuritySettings Configuração de segurança de PDF
PageLayout RenderingOptions Configurações de página e margens

Exemplos de migração de código

ConverterHTMLpara PDF

TallComponents lida comHTMLatravés de XhtmlParagraph do TallPDF.NET, que interpreta apenas XHTML 1.0/1.1 + CSS 2.1. HTML5 moderno, CSS3, flexbox, grid e conteúdo conduzido porJavaScriptestão fora dessa gramática:

Abordagem TallComponents:

// NuGet: Install-Package TallComponents.TallPDF5
// (HTML/XHTML conversion lives in TallPDF.NET, not in PDFKit.NET.)
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Paragraphs;
using System.IO;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Section section = document.Sections.Add();

        // XhtmlParagraph supports XHTML 1.0/1.1 +CSS 2.1only.
        XhtmlParagraph xhtml = new XhtmlParagraph();
        xhtml.Text = "<html><body><h1>Hello World</h1><p>This is a PDF from XHTML.</p></body></html>";
        section.Paragraphs.Add(xhtml);

        using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
        {
            document.Write(fs);
        }
    }
}
// NuGet: Install-Package TallComponents.TallPDF5
// (HTML/XHTML conversion lives in TallPDF.NET, not in PDFKit.NET.)
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Paragraphs;
using System.IO;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Section section = document.Sections.Add();

        // XhtmlParagraph supports XHTML 1.0/1.1 +CSS 2.1only.
        XhtmlParagraph xhtml = new XhtmlParagraph();
        xhtml.Text = "<html><body><h1>Hello World</h1><p>This is a PDF from XHTML.</p></body></html>";
        section.Paragraphs.Add(xhtml);

        using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
        {
            document.Write(fs);
        }
    }
}
Imports TallComponents.PDF.Layout
Imports TallComponents.PDF.Layout.Paragraphs
Imports System.IO

Class Program
    Shared Sub Main()
        Dim document As New Document()
        Dim section As Section = document.Sections.Add()

        ' XhtmlParagraph supports XHTML 1.0/1.1 +CSS 2.1 only.
        Dim xhtml As New XhtmlParagraph()
        xhtml.Text = "<html><body><h1>Hello World</h1><p>This is a PDF from XHTML.</p></body></html>"
        section.Paragraphs.Add(xhtml)

        Using fs As New FileStream("output.pdf", FileMode.Create)
            document.Write(fs)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Abordagem IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        // Create a PDF fromHTMLstring
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

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

class Program
{
    static void Main()
    {
        // Create a PDF fromHTMLstring
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        ' Create a PDF from HTML string
        Dim renderer As New ChromePdfRenderer()
        Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"

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

A ChromePdfRenderer do IronPDF usa um motor Chromium genuíno, oferecendo suporte completo a HTML5 e CSS3. Isso significa que seus PDFs serão exibidos exatamente como apareceriam em um navegador moderno. Saiba mais no tutorial deHTMLpara PDF .

Unir vários PDFs

A fusão de PDFs demonstra a diferença de verbosidade entre Componentes altos e IronPDF.

Abordagem TallComponents:

// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using System.IO;

class Program
{
    static void Main()
    {
        // Create target document
        Document outputDoc = new Document();

        // Load first PDF and clone each page into the target
        using (FileStream fs1 = new FileStream("document1.pdf", FileMode.Open, FileAccess.Read))
        {
            Document doc1 = new Document(fs1);
            foreach (Page page in doc1.Pages)
            {
                outputDoc.Pages.Add(page.Clone()); // clone is required across documents
            }
        }

        // Load second PDF and append the whole page collection
        using (FileStream fs2 = new FileStream("document2.pdf", FileMode.Open, FileAccess.Read))
        {
            Document doc2 = new Document(fs2);
            outputDoc.Pages.AddRange(doc2.Pages.CloneToArray());
        }

        // Save merged document
        using (FileStream output = new FileStream("merged.pdf", FileMode.Create))
        {
            outputDoc.Write(output);
        }
    }
}
// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using System.IO;

class Program
{
    static void Main()
    {
        // Create target document
        Document outputDoc = new Document();

        // Load first PDF and clone each page into the target
        using (FileStream fs1 = new FileStream("document1.pdf", FileMode.Open, FileAccess.Read))
        {
            Document doc1 = new Document(fs1);
            foreach (Page page in doc1.Pages)
            {
                outputDoc.Pages.Add(page.Clone()); // clone is required across documents
            }
        }

        // Load second PDF and append the whole page collection
        using (FileStream fs2 = new FileStream("document2.pdf", FileMode.Open, FileAccess.Read))
        {
            Document doc2 = new Document(fs2);
            outputDoc.Pages.AddRange(doc2.Pages.CloneToArray());
        }

        // Save merged document
        using (FileStream output = new FileStream("merged.pdf", FileMode.Create))
        {
            outputDoc.Write(output);
        }
    }
}
Imports TallComponents.PDF
Imports System.IO

Class Program
    Shared Sub Main()
        ' Create target document
        Dim outputDoc As New Document()

        ' Load first PDF and clone each page into the target
        Using fs1 As New FileStream("document1.pdf", FileMode.Open, FileAccess.Read)
            Dim doc1 As New Document(fs1)
            For Each page As Page In doc1.Pages
                outputDoc.Pages.Add(page.Clone()) ' clone is required across documents
            Next
        End Using

        ' Load second PDF and append the whole page collection
        Using fs2 As New FileStream("document2.pdf", FileMode.Open, FileAccess.Read)
            Dim doc2 As New Document(fs2)
            outputDoc.Pages.AddRange(doc2.Pages.CloneToArray())
        End Using

        ' Save merged document
        Using output As New FileStream("merged.pdf", FileMode.Create)
            outputDoc.Write(output)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Abordagem IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        // Load PDFs
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        // Merge PDFs
        var merged = PdfDocument.Merge(pdf1, pdf2);

        // Save merged document
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        // Load PDFs
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        // Merge PDFs
        var merged = PdfDocument.Merge(pdf1, pdf2);

        // Save merged document
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        ' Load PDFs
        Dim pdf1 = PdfDocument.FromFile("document1.pdf")
        Dim pdf2 = PdfDocument.FromFile("document2.pdf")

        ' Merge PDFs
        Dim merged = PdfDocument.Merge(pdf1, pdf2)

        ' Save merged document
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

A versão Componentes altos requer iteração manual de páginas e clonagem.IronPDF reduz isso para uma única chamada PdfDocument.Merge(). Para cenários de mesclagem avançados, consulte a documentação de mesclagem em PDF .

Adicionando marcas d'água

A inclusão de marcas d'água em PDFs revela outra diferença significativa na experiência do desenvolvedor.

Abordagem TallComponents:

// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using TallComponents.PDF.Shapes;
using System.IO;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Load existing PDF
        using (FileStream fs = new FileStream("input.pdf", FileMode.Open, FileAccess.Read))
        {
            Document document = new Document(fs);

            foreach (Page page in document.Pages)
            {
                TextShape watermark = new TextShape();
                watermark.Text = "CONFIDENTIAL";
                watermark.Font = new Font("Arial", 60);
                watermark.Pen = new Pen(Color.FromArgb(128, 255, 0, 0));
                watermark.X = 200;
                watermark.Y = 400;
                // Rotation is applied via a transform on PDFKit.NET
                // (TextShape has no Rotate property in the PDFKit API).
                watermark.Transform = new RotateTransform(45);

                page.Overlay.Add(watermark);
            }

            using (FileStream output = new FileStream("watermarked.pdf", FileMode.Create))
            {
                document.Write(output);
            }
        }
    }
}
// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using TallComponents.PDF.Shapes;
using System.IO;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Load existing PDF
        using (FileStream fs = new FileStream("input.pdf", FileMode.Open, FileAccess.Read))
        {
            Document document = new Document(fs);

            foreach (Page page in document.Pages)
            {
                TextShape watermark = new TextShape();
                watermark.Text = "CONFIDENTIAL";
                watermark.Font = new Font("Arial", 60);
                watermark.Pen = new Pen(Color.FromArgb(128, 255, 0, 0));
                watermark.X = 200;
                watermark.Y = 400;
                // Rotation is applied via a transform on PDFKit.NET
                // (TextShape has no Rotate property in the PDFKit API).
                watermark.Transform = new RotateTransform(45);

                page.Overlay.Add(watermark);
            }

            using (FileStream output = new FileStream("watermarked.pdf", FileMode.Create))
            {
                document.Write(output);
            }
        }
    }
}
Imports TallComponents.PDF
Imports TallComponents.PDF.Shapes
Imports System.IO
Imports System.Drawing

Class Program
    Shared Sub Main()
        ' Load existing PDF
        Using fs As New FileStream("input.pdf", FileMode.Open, FileAccess.Read)
            Dim document As New Document(fs)

            For Each page As Page In document.Pages
                Dim watermark As New TextShape()
                watermark.Text = "CONFIDENTIAL"
                watermark.Font = New Font("Arial", 60)
                watermark.Pen = New Pen(Color.FromArgb(128, 255, 0, 0))
                watermark.X = 200
                watermark.Y = 400
                ' Rotation is applied via a transform on PDFKit.NET
                ' (TextShape has no Rotate property in the PDFKit API).
                watermark.Transform = New RotateTransform(45)

                page.Overlay.Add(watermark)
            Next

            Using output As New FileStream("watermarked.pdf", FileMode.Create)
                document.Write(output)
            End Using
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Abordagem IronPDF:

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

class Program
{
    static void Main()
    {
        // Load existing PDF
        var pdf = PdfDocument.FromFile("input.pdf");

        // Create watermark
        var watermark = new TextStamper()
        {
            Text = "CONFIDENTIAL",
            FontSize = 60,
            Opacity = 50,
            Rotation = 45,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        // Apply watermark to all pages
        pdf.ApplyStamp(watermark);

        // Save watermarked PDF
        pdf.SaveAs("watermarked.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        // Load existing PDF
        var pdf = PdfDocument.FromFile("input.pdf");

        // Create watermark
        var watermark = new TextStamper()
        {
            Text = "CONFIDENTIAL",
            FontSize = 60,
            Opacity = 50,
            Rotation = 45,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        // Apply watermark to all pages
        pdf.ApplyStamp(watermark);

        // Save watermarked PDF
        pdf.SaveAs("watermarked.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing

Class Program
    Shared Sub Main()
        ' Load existing PDF
        Dim pdf = PdfDocument.FromFile("input.pdf")

        ' Create watermark
        Dim watermark = New TextStamper() With {
            .Text = "CONFIDENTIAL",
            .FontSize = 60,
            .Opacity = 50,
            .Rotation = 45,
            .VerticalAlignment = VerticalAlignment.Middle,
            .HorizontalAlignment = HorizontalAlignment.Center
        }

        ' Apply watermark to all pages
        pdf.ApplyStamp(watermark)

        ' Save watermarked PDF
        pdf.SaveAs("watermarked.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

A classe TextStamper do IronPDF fornece opções intuitivas de alinhamento e iteração automática de páginas. O guia de carimbos e marcas d'água abrange opções adicionais de personalização.

Assinaturas digitais

A assinatura de documentos é fundamental para aplicações empresariais.

Abordagem TallComponents:

using TallComponents.PDF;
using TallComponents.PDF.Signing;
using System.IO;
using System.Security.Cryptography.X509Certificates;

using (FileStream fs = new FileStream("unsigned.pdf", FileMode.Open, FileAccess.Read))
{
    Document document = new Document(fs);

    X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");
    SignatureField field = new SignatureField("Signature1");
    field.Sign(cert);
    document.Fields.Add(field);

    using (FileStream output = new FileStream("signed.pdf", FileMode.Create))
    {
        document.Write(output);
    }
}
using TallComponents.PDF;
using TallComponents.PDF.Signing;
using System.IO;
using System.Security.Cryptography.X509Certificates;

using (FileStream fs = new FileStream("unsigned.pdf", FileMode.Open, FileAccess.Read))
{
    Document document = new Document(fs);

    X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");
    SignatureField field = new SignatureField("Signature1");
    field.Sign(cert);
    document.Fields.Add(field);

    using (FileStream output = new FileStream("signed.pdf", FileMode.Create))
    {
        document.Write(output);
    }
}
Imports TallComponents.PDF
Imports TallComponents.PDF.Signing
Imports System.IO
Imports System.Security.Cryptography.X509Certificates

Using fs As New FileStream("unsigned.pdf", FileMode.Open, FileAccess.Read)
    Dim document As New Document(fs)

    Dim cert As New X509Certificate2("certificate.pfx", "password")
    Dim field As New SignatureField("Signature1")
    field.Sign(cert)
    document.Fields.Add(field)

    Using output As New FileStream("signed.pdf", FileMode.Create)
        document.Write(output)
    End Using
End Using
$vbLabelText   $csharpLabel

Abordagem IronPDF:

using IronPdf;
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("unsigned.pdf");

// Sign with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningLocation = "New York",
    SigningReason = "Document Approval"
};

pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("unsigned.pdf");

// Sign with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningLocation = "New York",
    SigningReason = "Document Approval"
};

pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing

Dim pdf = PdfDocument.FromFile("unsigned.pdf")

' Sign with certificate
Dim signature = New PdfSignature("certificate.pfx", "password") With {
    .SigningContact = "support@company.com",
    .SigningLocation = "New York",
    .SigningReason = "Document Approval"
}

pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

A API de assinatura do IronPDF inclui propriedades de metadados adicionais para informações de contato, localização e motivo da assinatura — importantes para registros de auditoria. Consulte a documentação sobre assinatura digital para obter detalhes completos sobre a implementação.

Comparação de recursos: Componentes altos vs IronPDF

Recurso Componentes altos IronPDF
Status Fechado para novas licenças (Apryse adquiriu 2025-05-27) Ativo
Apoiar Apenas para clientes existentes Completo
Atualizações Apenas manutenção Lançamentos regulares de recursos
Criação de Conteúdo
HTMLpara PDF XHTML 1.0/1.1 +CSS 2.1(XhtmlParagraph) HTML5/CSS3 completo via Chromium
URL para PDF Sim para URLs XHTML (XhtmlParagraph.Path) Sim
Suporte a CSS CSS 2.1 CSS3 completo
JavaScript Não ES2024 completo
XML / Modelos de Layout DOM Sim (TallPDF.NET) Não necessário (HTML)
Operações PDF
Mesclar PDFs Sim (Pages.Add(page.Clone())) Sim (PdfDocument.Merge)
Dividir PDFs Sim Sim
Marcas d'água page.Overlay.Add(TextShape) pdf.ApplyStamp(...)
Cabeçalhos/Rodapés Layout DOM HTML/CSS
Segurança
Proteção por senha Sim (PasswordSecurity) Sim
Assinaturas digitais Sim (SignatureField.Sign) Sim
Criptografia RC4 / AES-128 / AES-256 AES-128 / AES-256
PDF/A PDF/A-1, PDF/A-2, PDF/A-3 Sim
Plataforma
Frameworks Alvo PDFKit5: .NET Standard 2.0; PDFKit (4.x): .NET Framework 2.0 .NET Framework 4.6.2+, .NET 6/7/8/9
Desenvolvimento
Curva de Aprendizagem XML / layout DOM HTML
Documentação Congelado na aquisição; novas documentações direcionadas para Apryse / iText Mantido
Comunidade Silencioso (sem novas vendas) Ativo

Lista de verificação para migração de componentes altos

Tarefas pré-migração

Faça uma auditoria em sua base de código para identificar todos os usos de TallComponents:

grep -r "using TallComponents" --include="*.cs" .
grep -rE "XhtmlParagraph|TextParagraph|PasswordSecurity|page\.Overlay" --include="*.cs" .
grep -r "using TallComponents" --include="*.cs" .
grep -rE "XhtmlParagraph|TextParagraph|PasswordSecurity|page\.Overlay" --include="*.cs" .
SHELL

Documentar modelos de XML/layout existentes - esses serão convertidos para HTML. Identificar as configurações de segurança atualmente em uso, observando as configurações de senha e as implementações de assinatura digital.

Tarefas de atualização de código

  1. Remova os pacotes Componentes altos via NuGet.
  2. Instale o pacote IronPDF
  3. Converta modelos XHTML / layout DOM para HTML5
  4. Substitua o modelo de seção/parágrafo por elementos HTML.
  5. Atualize o código da tabela para usar tabelasHTMLpadrão.
  6. Converta cabeçalhos/rodapés paraHTMLcom HtmlHeaderFooter
  7. Atualize as configurações de segurança para usar pdf.SecuritySettings
  8. Adicionar inicialização de licença na inicialização

Migração de cabeçalhos e rodapés

TallPDF.NET usa um DOM de layout (Section.Header / Section.Footer) para cabeçalhos de página. O IronPDF fornece cabeçalhos baseados emHTMLcom espaços reservados dinâmicos:

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
    MaxHeight = 25
};
Imports System

renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
    .MaxHeight = 25
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
    .MaxHeight = 25
}
$vbLabelText   $csharpLabel

Saiba mais sobre cabeçalhos e rodapés no IronPDF .

Fase de Testes

  1. Compare a saída visual entre as versões Componentes altos e IronPDF.
  2. Teste todos os modelos de documentos
  3. Valide a funcionalidade de mesclagem de PDFs
  4. Teste assinaturas digitais
  5. Confirme que as configurações de segurança são aplicadas corretamente

Cronograma de migração recomendado

Como Componentes altos está fechado para novas licenças e com suporte apenas de manutenção, planeje a transição no seu próprio ritmo, mas não adie:

Semana 1: Auditar a base de código e identificar todos os usos de TallComponents.
Semana 2: Converta modelos XHTML / layout para HTML5 Semana 3: Atualização de segurança, fusão e assinatura de código
Semana 4: Testes e implantação em produção

Quanto mais tempo uma stack permanecer no TallComponents, mais ela se afastará dos atuais alvos .NET e HTML.

[{i: (Apryse, PDFKit, Tall Components, e iText são marcas registradas de seus respectivos proprietários. Este site não é afiliado, endossado ou patrocinado por Apryse, PDFKit, PDFTron, Componentes altos ou iText Group. 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 ...

Leia mais

Equipe de Suporte Iron

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