Passer au contenu du pied de page
VIDéOS

Comment utiliser le moteur IronPDF dans Docker | IronPDF

Le 27 mai 2025, Apryse a acquis TallComponents. Les nouvelles licences pour TallPDF.NET et PDFKit.NET ne sont plus proposées, et Apryse redirige les nouveaux acheteurs vers le SDK iText (également détenu par Apryse). Les clients existants continuent de recevoir de l'assistance, mais le moteur est uniquement en maintenance. Pour les équipes actuellement en cours de livraison sur TallComponents, planifier une migration maintenant évite une coupure forcée plus tard.

Ce guide fournit un chemin de migration de TallComponentsvers IronPDF, y compris des instructions étape par étape, des mappages d'API et des exemples de code pour les développeurs .NET planifiant la transition.

Pourquoi planifier une migration TallComponents

TallComponents (fondée en 2001) a livré deux principaux produits PDF .NET : PDFKit.NET pour charger et manipuler des PDFs, et TallPDF.NET pour la génération de documents orientée mise en page. Suite à l'acquisition par Apryse, les nouvelles ventes de licences ont cessé, ce qui change l'horizon de planification pour les équipes s'appuyant sur la bibliothèque.

Limites clés de TallComponentsaujourd'hui

Fermé aux nouvelles licences : La page TallComponentsd'Apryse indique qu'il ne propose plus de nouvelles licences pour les produits TallComponentset dirige les nouveaux acheteurs vers le SDK iText. Les détenteurs de licences existantes continuent d'être soutenus.

PipelineHTMLuniquement XHTML : TallPDF.NET envoie une classe XhtmlParagraph qui analyse XHTML 1.0 Strict / XHTML 1.1 + CSS 2.1. PDFKit.NET à lui seul n'a pas de pipeline HTML. Le contenu moderne HTML5 + CSS3 + JavaScriptne s'affiche pas de manière fiable — il n'y a pas de moteur de navigateur sans tête dans la boîte.

Plateforme cible figée : TallComponents.PDFKit5 cible .NET Standard 2.0 ; l'ancien TallComponents.PDFKit (4.x) cible .NET Framework 2.0. Il n'y a pas de TFM .NET 8/9 publié.

Feuille de route uniquement maintenance : Avec l'énergie de développement d'Apryse concentrée sur le SDK Apryse et iText, les packages de marque TallComponentsreçoivent des mises à jour de maintenance mais aucune nouvelle feuille de route fonctionnelle.

IronPDF: Une alternative moderne à TallComponents

IronPDF comble les lacunes principales qui affectent les utilisateurs de TallComponentssur les piles .NET actuelles :

Fonction TallComponents IronPDF
Statut de vente actuel Fermé aux nouvelles licences (Apryse acquis 2025-05-27) Vendu activement
Support HTML-vers-PDF XHTML 1.0/1.1 + CSS 2.1 via XhtmlParagraph (TallPDF.NET) Oui (HTML5/CSS3 avec Chromium)
JavaScripten HTML Non ES2024 complet
Installation NuGet (TallComponents.PDFKit5, TallComponents.TallPDF5) NuGet (IronPdf)
Support client Clients existants uniquement ; nouveaux acheteurs dirigés vers iText Support actif et communauté
Investissement futur Maintenance uniquement Feuille de route à long terme

TallComponents utilise un modèle orienté XML/mise en page enraciné dans une ère antérieure de génération de documents .NET, tandis qu'IronPDF fournit un renduHTMLalimenté par Chromium aligné sur la façon dont les équipes construisent les applications frontales aujourd'hui.

Démarrage rapide : Migration de TallComponentsvers IronPDF

Étape 1 : Remplacer les paquets NuGet

Supprimer les packages TallComponentsauxquels votre projet fait référence. Les véritables identifiants de package sur nuget.org sont TallComponents.PDFKit5 (ou TallComponents.PDFKit pour 4.x) et TallComponents.TallPDF5 / TallPDF6 :

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

Installez IronPDF:

dotnet add package IronPdf

Pour les frameworks spécialisés,IronPDF propose des packs d'extension dédiés :

Serveur Blazor:

Install-Package IronPdf.Extensions.Blazor

MAUI :

Install-Package IronPdf.Extensions.Maui

Cadre MVC:

Install-Package IronPdf.Extensions.Mvc.Framework

Étape 2 : Mise à jour des espaces de noms

Remplacer les espaces de noms TallComponentspar l'espace de noms 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

Étape 3 : initialisation de votre licence

Ajouter l'initialisation de la licence au démarrage de l'application :

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

TallComponentsto IronPDF API Mapping Reference (Référence de mappage de l'API de TallComponentsvers IronPDF)

Comprendre comment les concepts de TallComponentss'adaptent à IronPDF accélère le processus de migration :

TallComponents IronPDF Notes
Document (TallPDF.NET: layout) ChromePdfRenderer Créer un moteur de rendu pour la génération de PDF
Document (PDFKit.NET: manipulate) PdfDocument Charger/éditer des PDFs existants
Section Automatique Sections dérivées de la structure HTML
TextParagraph Éléments de texte HTML Utilisez <p>, <h1>, <div>, etc.
ImageParagraph <img> balise ImagesHTMLstandard
TableParagraph HTML<table> TableauxHTMLstandard
XhtmlParagraph (XHTML 1.x + CSS 2.1) RenderHtmlAsPdf() (HTML5/CSS3 via Chromium) LeHTMLmoderne fonctionne
Font CSS font-family Polices Web prises en charge
document.Write(...) pdf.SaveAs() / pdf.BinaryData Fichier ou byte[] en sortie
page.Overlay.Add(shape) pdf.ApplyStamp(stamper) Filigrane/superposition
outputDoc.Pages.Add(page.Clone()) PdfDocument.Merge(...) / pdf.AppendPdf(...) Fusionner plusieurs PDF
Document.Security = new PasswordSecurity { ... } pdf.SecuritySettings Configuration de la sécurité des PDF
PageLayout RenderingOptions Mise en page et marges

Exemples de migration de code

Conversion deHTMLen PDF

TallComponents gère leHTMLvia XhtmlParagraph de TallPDF.NET, qui analyse uniquement XHTML 1.0/1.1 + CSS 2.1. Le HTML5 moderne, CSS3, flexbox, grille et contenu piloté par JavaScriptne rentrent pas dans cette grammaire :

Approche de 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.1 only.
        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.1 only.
        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

Approche 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

Le ChromePdfRenderer de IronPDF utilise un véritable moteur Chromium, offrant un support complet pour HTML5 et CSS3. Cela signifie que vos PDF s'affichent exactement comme ils le feraient dans un navigateur moderne. Pour en savoir plus, consultez le tutoriel HTML to PDF tutorial.

Fusionner plusieurs fichiers PDF

La fusion de PDF démontre la différence de verbosité entre TallComponentset IronPDF.

Approche de 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

Approche 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

La version TallComponentsnécessite une itération et un clonage manuels des pages.IronPDF réduit cela à un simple appel PdfDocument.Merge(). Pour les scénarios de fusion avancés, voir la documentation sur la fusion de fichiers PDF.

Ajouter des filigranes

Le filigrane des PDF révèle une autre différence significative dans l'expérience des développeurs.

Approche de 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

Approche 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

La classe TextStamper de IronPDF offre des options d'alignement intuitives et une itération automatique des pages. Le guide de l'estampillage et des filigranes couvre des options de personnalisation supplémentaires.

Signatures numériques

La signature des documents est essentielle pour les applications d'entreprise.

Approche de 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

Approche 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

L'API de signature d'IronPDF comprend des propriétés de métadonnées supplémentaires pour les informations de contact, l'emplacement et la raison de la signature - important pour les pistes d'audit. Explorez la documentation sur la signature numérique pour obtenir des détails complets sur la mise en œuvre.

Comparaison des fonctionnalités : TallComponentsvs IronPDF

Fonction TallComponents IronPDF
Statut Fermé aux nouvelles licences (Apryse acquis 2025-05-27) Actif
Support Clients existants uniquement Complet
Mises à jour Maintenance uniquement Mises à jour de fonctionnalités régulières
Création de contenu
HTMLvers PDF XHTML 1.0/1.1 + CSS 2.1 (XhtmlParagraph) Plein HTML5/CSS3 via Chromium
URL vers PDF Oui pour les URL XHTML (XhtmlParagraph.Path) Oui
Support CSS CSS 2.1 CSS3 complet
JavaScript Non ES2024 complet
Modèles DOM XML/mise en page Oui (TallPDF.NET) Non nécessaire (HTML)
Opérations PDF
Fusionner des PDF Oui (Pages.Add(page.Clone())) Oui (PdfDocument.Merge)
Diviser les PDF Oui Oui
Filigranes page.Overlay.Add(TextShape) pdf.ApplyStamp(...)
En-têtes/Pieds de page DOM de mise en page HTML/CSS
Sécurité
Protection par mot de passe Oui (PasswordSecurity) Oui
Signatures numériques Oui (SignatureField.Sign) Oui
Chiffrement RC4 / AES-128 / AES-256 AES-128 / AES-256
PDF/A PDF/A-1, PDF/A-2, PDF/A-3 Oui
Plateforme
Cibles Frameworks PDFKit5: .NET Standard 2.0; PDFKit (4.x): .NET Framework 2.0 .NET Framework 4.6.2+, .NET 6/7/8/9
Développement
Courbe d'apprentissage XML / DOM de mise en page HTML
Documentation Gelé à l'acquisition; nouveaux documents redirigés vers Apryse / iText Maintenu
Communauté Calme (pas de nouvelles ventes) Actif

Liste de contrôle pour la migration vers TallComponents

Tâches préalables à la migration

Auditez votre base de code pour identifier toutes les utilisations 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

Documenter les modèles XML/de mise en page existants—ceux-ci seront convertis en HTML. Identifier les paramètres de sécurité actuellement utilisés, en notant les configurations de mots de passe et les implémentations de signatures numériques.

Tâches de mise à jour du code

  1. Supprimer les paquets TallComponentsvia NuGet
  2. Installer le package IronPDF
  3. Convertir les modèles XHTML / DOM de mise en page en HTML5
  4. Remplacer le modèle Section/Paragraphe par des éléments HTML
  5. Mise à jour du code des tableaux pour utiliser les tableauxHTMLstandard
  6. Convertissez les en-têtes/pieds de page enHTMLavec HtmlHeaderFooter
  7. Mettez à jour les paramètres de sécurité pour utiliser pdf.SecuritySettings
  8. Ajouter l'initialisation de la licence au démarrage

Migration des en-têtes et des pieds de page

TallPDF.NET utilise un DOM de mise en page (Section.Header / Section.Footer) pour les en-têtes de page.IronPDF fournit des en-têtes basés surHTMLavec des espaces réservés dynamiques :

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

En savoir plus sur les en-têtes et pieds de page dans IronPDF.

Phase de test

  1. Comparer la sortie visuelle entre les versions de TallComponentset d'IronPDF
  2. Tester tous les modèles de documents
  3. Valider la fonctionnalité de fusion des PDF
  4. Tester les signatures numériques
  5. Confirmer que les paramètres de sécurité s'appliquent correctement

Temps de migration recommandé

Comme TallComponentsest fermé aux nouvelles licences et ne supporte que la maintenance, planifiez le déménagement à votre propre rythme mais ne tardez pas :

Semaine 1 : Auditer le code source et identifier toutes les utilisations de TallComponents Semaine 2 : Convertir les modèles XHTML / de mise en page en HTML5 Semaine 3 : Mise à jour du code de sécurité, de fusion et de signature
Semaine 4 : Tests et déploiement en production

Plus une pile reste sur TallComponents, plus elle s'éloigne des cibles actuelles de .NET et duHTMLactuel.

Veuillez noterApryse, PDFKit, Tall Components, et iText sont des marques déposées de leurs propriétaires respectifs. Ce site n'est ni affilié à, ni approuvé par, ni sponsorisé par Apryse, PDFKit, PDFTron, TallComponentsou iText Group. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi