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
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
É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"
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
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
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
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
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
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
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
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")
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" .
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
- Supprimer les paquets TallComponentsvia NuGet
- Installer le package IronPDF
- Convertir les modèles XHTML / DOM de mise en page en HTML5
- Remplacer le modèle Section/Paragraphe par des éléments HTML
- Mise à jour du code des tableaux pour utiliser les tableauxHTMLstandard
- Convertissez les en-têtes/pieds de page enHTMLavec
HtmlHeaderFooter - Mettez à jour les paramètres de sécurité pour utiliser
pdf.SecuritySettings - 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
}
En savoir plus sur les en-têtes et pieds de page dans IronPDF.
Phase de test
- Comparer la sortie visuelle entre les versions de TallComponentset d'IronPDF
- Tester tous les modèles de documents
- Valider la fonctionnalité de fusion des PDF
- Tester les signatures numériques
- 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.

