Comment migrer de TextControl à IronPDF en C#
TX Text Control s'est imposé comme un composant d'édition de documents complet dans l'écosystème .NET, offrant de solides capacités d'édition DOCX avec des contrôles d'interface utilisateur intégrés. Cependant, pour les équipes de développement dont le besoin principal est la génération de PDF plutôt que l'édition complète de documents, l'architecture de TextControl présente des frais généraux importants en termes de coûts de licence, de complexité et de dépendances d'exécution.
Ce guide fournit un chemin de migration complet de TextControl à IronPDF, avec des instructions étape par étape, des comparaisons de code et des exemples pratiques pour les développeurs .NET professionnels qui évaluent cette transition.
Pourquoi migrer de TextControl
La décision de migrer à partir de TextControl est généralement centrée sur l'adaptation de votre outil à vos besoins réels. Contrôle de texte TXest fondamentalement un éditeur de documents qui traite la génération de PDF comme une fonctionnalité secondaire. Les principales raisons pour lesquelles les équipes de développement envisagent la migration sont les suivantes
Licence coûteuse : TextControl fonctionne sous une licence commerciale à un prix minimum de 3 398 $ par an et par développeur. Une équipe de quatre personnes peut s'attendre à investir environ 6 749 $ par an, avec des coûts supplémentaires pour les licences d'exécution de déploiement de serveur. Les coûts de renouvellement s'élèvent à 40 % par an, ce qui est obligatoire pour conserver l'accès aux mises à jour.
Le PDF comme une solution de dernier recours : l'architecture de base est le traitement de texte, pas le PDF. Bien que la génération de PDF soit disponible, il s'agit davantage d'une fonctionnalité supplémentaire que d'un objectif principal, ce qui se traduit par une qualité de sortie qui n'est pas optimale.
Bugs matériels : Le bug des graphiques Intel Iris Xe affecte le rendu des documents sur les processeurs Intel plus récents (11e génération), nécessitant une solution de contournement du registre pour être résolu.
Dépendances superflues : TextControl inclut des composants d'interface utilisateur pour l'édition de documents dont vous n'aurez peut-être pas besoin si votre objectif principal est la génération de PDF.
Architecture du traitement de texte : non optimisée pour les flux de travail HTML vers PDF exigés par les applications Web modernes.
API complexe : Le modèle de gestion et de sélection du contexte ServerTextControl ajoute une complexité inutile aux tâches de génération de PDF simples.
Comparaison des coûts
| Aspect | Contrôle de texte TX | IronPDF |
|---|---|---|
| Licence de base | $3,398+ | Une baisse significative |
| Renouvellement annuel | 40% obligatoire | Support optionnel |
| Par développeur | Oui | Oui |
| Composants de l'interface utilisateur | Ensembles (bloat) | Axé sur le PDF |
| Coût total sur 3 ans | $5,750+ | Beaucoup plus bas |
IronPDF vs TextControl : Comparaison des fonctionnalités
La compréhension des différences architecturales aide les décideurs techniques à évaluer l'investissement dans la migration :
| Fonction | Contrôle de texte TX | IronPDF |
|---|---|---|
| Objectif principal | Edition DOCX | Génération PDF |
| Coût de la licence | 3 398 $/an par développeur | 749 $ par développeur |
| Qualité PDF | Fonctionnalité de base, complémentaire | Fonctionnalité de base élevée |
| Compatibilité matérielle | Problèmes connus avec Intel Iris | Stabilité sur tous les appareils |
| Intégration à l'interface utilisateur | Composants d'interface utilisateur requis | Pas de composants gonflés dans l'interface utilisateur |
| Rendu HTML/CSS | Buggy avec HTML | HTML5/CSS3 moderne |
| HTML vers PDF | Oui (secondaire) | Oui (principal) |
| Support CSS | Limité | CSS3 complet |
| JavaScript | Limité | ES2024 complet |
| URL vers PDF | Configuration complexe | Natif |
| En-têtes/Pieds de page | API complexe | HTML simple |
| Fusion de courriers | Propriétaire | Modèles HTML |
| PDF/A | Oui | Oui |
| Protection par mot de passe | Oui | Oui |
| Signatures numériques | Oui | Oui |
| Fusionner des PDF | Limité | Oui |
| Diviser les PDF | Limité | Oui |
| Gestion du contexte | Les exigences sont les suivantes | Pas nécessaire |
| Multiplateforme | Axé sur Windows | Oui |
Démarrage rapide : Migration de TextControl vers IronPDF
La migration peut commencer immédiatement grâce à ces étapes fondamentales.
Étape 1 : Remplacer les paquets NuGet
Supprimez tous les paquets TextControl :
# Remove TX Text Control
dotnet remove package TXTextControl.TextControl
dotnet remove package TXTextControl.DocumentServer
# Remove TX Text Control
dotnet remove package TXTextControl.TextControl
dotnet remove package TXTextControl.DocumentServer
InstallezIronPDF:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Étape 2 : Mise à jour des espaces de noms
Remplacer les espaces de noms TextControl par l'espace de nomsIronPDF:
// Before (TextControl)
using TXTextControl;
using TXTextControl.DocumentServer;
// After (IronPDF)
using IronPdf;
// Before (TextControl)
using TXTextControl;
using TXTextControl.DocumentServer;
// After (IronPDF)
using IronPdf;
Imports TXTextControl
Imports TXTextControl.DocumentServer
' After (IronPDF)
Imports IronPdf
Étape 3 : initialisation de la 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"
Exemples de migration de code
Conversion de HTML en PDF
Le cas d'utilisation le plus courant démontre la différence architecturale entre ces bibliothèques PDF .NET.
Approche de TextControl:
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
textControl.Load(html, StreamType.HTMLFormat);
textControl.Save("output.pdf", StreamType.AdobePDF);
}
}
}
}
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
textControl.Load(html, StreamType.HTMLFormat);
textControl.Save("output.pdf", StreamType.AdobePDF);
}
}
}
}
Imports TXTextControl
Imports System.IO
Namespace TextControlExample
Class Program
Shared Sub Main(ByVal args As String())
Using textControl As New ServerTextControl()
textControl.Create()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
textControl.Load(html, StreamType.HTMLFormat)
textControl.Save("output.pdf", StreamType.AdobePDF)
End Using
End Sub
End Class
End Namespace
Approche IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
}
Imports IronPdf
Namespace IronPdfExample
Class Program
Shared Sub Main(ByVal args As String())
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
End Namespace
La version TextControl nécessite la création d'une instance ServerTextControl, l'appel de Create() pour initialiser le contexte, le chargement du HTML avec StreamType.HTMLFormat et l'enregistrement avec StreamType.AdobePDF. Le bloc using est obligatoire pour une élimination correcte des ressources.
IronPDF élimine totalement la gestion du contexte. Le ChromePdfRenderer ne nécessite aucune cérémonie d'initialisation : créez-le, générez du HTML et enregistrez. Cette simplification architecturale réduit la charge cognitive et les bogues potentiels liés à la gestion des ressources.
Pour les scénarios avancés de conversion de HTML en PDF, voir le guide de conversion de HTML en PDF.
Fusionner plusieurs fichiers PDF
La fusion des PDF révèle une autre différence de complexité importante entre ces bibliothèques.
Approche de TextControl:
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
byte[] pdf1 = File.ReadAllBytes("document1.pdf");
textControl.Load(pdf1, StreamType.AdobePDF);
byte[] pdf2 = File.ReadAllBytes("document2.pdf");
textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append);
textControl.Save("merged.pdf", StreamType.AdobePDF);
}
}
}
}
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
byte[] pdf1 = File.ReadAllBytes("document1.pdf");
textControl.Load(pdf1, StreamType.AdobePDF);
byte[] pdf2 = File.ReadAllBytes("document2.pdf");
textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append);
textControl.Save("merged.pdf", StreamType.AdobePDF);
}
}
}
}
Imports TXTextControl
Imports System.IO
Namespace TextControlExample
Class Program
Shared Sub Main(ByVal args As String())
Using textControl As New ServerTextControl()
textControl.Create()
Dim pdf1 As Byte() = File.ReadAllBytes("document1.pdf")
textControl.Load(pdf1, StreamType.AdobePDF)
Dim pdf2 As Byte() = File.ReadAllBytes("document2.pdf")
textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append)
textControl.Save("merged.pdf", StreamType.AdobePDF)
End Using
End Sub
End Class
End Namespace
Approche IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
}
Imports IronPdf
Namespace IronPdfExample
Class Program
Shared Sub Main(ByVal args As String())
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Class
End Namespace
TextControl nécessite de lire les fichiers dans des tableaux d'octets, de gérer le contexte ServerTextControl et d'utiliser LoadAppendMode.Append pour fusionner les documents. La méthode PdfDocument.Merge() d'IronPDF gère tout avec un seul appel explicite.
Pour des scénarios de fusion avancés, notamment l'extraction sélective de pages, voir le guide de fusion et de division de PDF.
Ajouter des en-têtes et des pieds de page
Des en-têtes et des pieds de page avec des numéros de page dynamiques illustrent la différence de complexité des API.
Approche de TextControl:
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";
textControl.Load(html, StreamType.HTMLFormat);
HeaderFooter header = new HeaderFooter(HeaderFooterType.Header);
header.Text = "Document Header";
textControl.Sections[0].HeadersAndFooters.Add(header);
HeaderFooter footer = new HeaderFooter(HeaderFooterType.Footer);
footer.Text = "Page {page} of {numpages}";
textControl.Sections[0].HeadersAndFooters.Add(footer);
textControl.Save("output.pdf", StreamType.AdobePDF);
}
}
}
}
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";
textControl.Load(html, StreamType.HTMLFormat);
HeaderFooter header = new HeaderFooter(HeaderFooterType.Header);
header.Text = "Document Header";
textControl.Sections[0].HeadersAndFooters.Add(header);
HeaderFooter footer = new HeaderFooter(HeaderFooterType.Footer);
footer.Text = "Page {page} of {numpages}";
textControl.Sections[0].HeadersAndFooters.Add(footer);
textControl.Save("output.pdf", StreamType.AdobePDF);
}
}
}
}
Imports TXTextControl
Imports System.IO
Namespace TextControlExample
Class Program
Shared Sub Main(ByVal args As String())
Using textControl As New ServerTextControl()
textControl.Create()
Dim html As String = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>"
textControl.Load(html, StreamType.HTMLFormat)
Dim header As New HeaderFooter(HeaderFooterType.Header)
header.Text = "Document Header"
textControl.Sections(0).HeadersAndFooters.Add(header)
Dim footer As New HeaderFooter(HeaderFooterType.Footer)
footer.Text = "Page {page} of {numpages}"
textControl.Sections(0).HeadersAndFooters.Add(footer)
textControl.Save("output.pdf", StreamType.AdobePDF)
End Using
End Sub
End Class
End Namespace
Approche IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.AddTextHeader("Document Header");
pdf.AddTextFooter("Page {page} of {total-pages}");
pdf.SaveAs("output.pdf");
}
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.AddTextHeader("Document Header");
pdf.AddTextFooter("Page {page} of {total-pages}");
pdf.SaveAs("output.pdf");
}
}
}
Imports IronPdf
Imports IronPdf.Rendering
Namespace IronPdfExample
Class Program
Shared Sub Main(args As String())
Dim renderer As New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.AddTextHeader("Document Header")
pdf.AddTextFooter("Page {page} of {total-pages}")
pdf.SaveAs("output.pdf")
End Sub
End Class
End Namespace
TextControl nécessite la création d'objets HeaderFooter avec des énumérations spécifiques HeaderFooterType, l'accès aux sections du document via textControl.Sections[0] et l'ajout à la collection HeadersAndFooters.IronPDFfournit des méthodes directes AddTextHeader et AddTextFooter avec une syntaxe d'espace réservé simple.
Pour les en-têtes HTML avec contrôle total du style,IronPDFprend également en charge HtmlHeaderFooter :
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: center; font-size: 12pt;'>
Company Report
</div>",
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: right; font-size: 10pt;'>
Page {page} of {total-pages}
</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: center; font-size: 12pt;'>
Company Report
</div>",
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: right; font-size: 10pt;'>
Page {page} of {total-pages}
</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='width: 100%; text-align: center; font-size: 12pt;'>
Company Report
</div>",
.MaxHeight = 30
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='width: 100%; text-align: right; font-size: 10pt;'>
Page {page} of {total-pages}
</div>",
.MaxHeight = 25
}
Pour en savoir plus sur les options d'en-tête et de pied de page, consultez la documentation sur les en-têtes et les pieds de page.
Référence de mappage de l'API TextControl vers IronPDF
Cette cartographie accélère la migration en indiquant les équivalents directs des API :
| Contrôle de texte TX | IronPDF |
|---|---|
ServerTextControl.Create() |
new ChromePdfRenderer() |
tx.Load(html, StreamType.HTMLFormat) |
renderer.RenderHtmlAsPdf(html) |
tx.Load(url, StreamType.HTMLFormat) |
renderer.RenderUrlAsPdf(url) |
tx.Save(path, StreamType.AdobePDF) |
pdf.SaveAs(path) |
SaveSettings.PDFAConformance |
RenderingOptions.PdfAFormat |
DocumentServer.MailMerge |
Modèles HTML + Razor |
DocumentTarget.HeadersAndFooters |
HtmlHeaderFooter |
LoadSettings |
RenderingOptions |
StreamType.AdobePDF |
Résultat par défaut |
Problèmes de migration courants et solutions
Enjeu 1 : Contexte du ServerTextControl
TextControl nécessite les blocs Create() et using pour chaque opération.
Solution:IronPDFne dispose pas de gestion du contexte :
// Just create and use
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Just create and use
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
' Just create and use
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
Édition 2 : Conversions de types de flux
TextControl charge différents formats et convertit en PDF via les énumérations StreamType.
Solution:IronPDFrend le HTML directement sans conversion de format intermédiaire :
// No format conversion needed
var pdf = renderer.RenderHtmlAsPdf(html);
// No format conversion needed
var pdf = renderer.RenderHtmlAsPdf(html);
Dim pdf = renderer.RenderHtmlAsPdf(html)
Édition 3 : Modèles DOCX
TextControl utilise des fichiers DOCX pour les modèles avec fusion de courrier.
Solution: Convertir en modèles HTML avec l'interpolation de chaînes de caractères C# ou Razor :
var data = new { CustomerName = "John Doe", InvoiceNumber = "12345", Total = "$1,500.00" };
var html = $@"
<html>
<head>
<style>
body {{ font-family: Arial; padding: 40px; }}
h1 {{ color: #333; }}
.total {{ font-size: 24px; color: green; }}
</style>
</head>
<body>
<h1>Invoice #{data.InvoiceNumber}</h1>
<p>Customer: {data.CustomerName}</p>
<p class='total'>Total: {data.Total}</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
var data = new { CustomerName = "John Doe", InvoiceNumber = "12345", Total = "$1,500.00" };
var html = $@"
<html>
<head>
<style>
body {{ font-family: Arial; padding: 40px; }}
h1 {{ color: #333; }}
.total {{ font-size: 24px; color: green; }}
</style>
</head>
<body>
<h1>Invoice #{data.InvoiceNumber}</h1>
<p>Customer: {data.CustomerName}</p>
<p class='total'>Total: {data.Total}</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
Option Strict On
Dim data = New With {Key .CustomerName = "John Doe", Key .InvoiceNumber = "12345", Key .Total = "$1,500.00"}
Dim html = $"
<html>
<head>
<style>
body {{ font-family: Arial; padding: 40px; }}
h1 {{ color: #333; }}
.total {{ font-size: 24px; color: green; }}
</style>
</head>
<body>
<h1>Invoice #{data.InvoiceNumber}</h1>
<p>Customer: {data.CustomerName}</p>
<p class='total'>Total: {data.Total}</p>
</body>
</html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
Edition 4 : Intel Iris Xe Graphics Bug (en anglais)
TextControl a documenté des problèmes de rendu avec les processeurs Intel de 11e génération, nécessitant des solutions de contournement du registre.
Solution:IronPDFutilise le rendu Chromium - aucun bug d'accélération matérielle ni aucune modification de registre n'est nécessaire.
Liste de contrôle de la migration vers TextControl
Tâches préalables à la migration
Auditez votre base de code pour identifier toutes les utilisations de TextControl :
grep -r "using TXTextControl" --include="*.cs" .
grep -r "ServerTextControl\|Load\|Save" --include="*.cs" .
grep -r "using TXTextControl" --include="*.cs" .
grep -r "ServerTextControl\|Load\|Save" --include="*.cs" .
Modèles de publipostage pour la conversion en HTML. Remarquez les exigences d'en-tête/pied de page pour la mise en œuvre avec HtmlHeaderFooter. Identifiez toute fonctionnalité d'édition DOCX qui pourrait nécessiter des solutions alternatives.
Tâches de mise à jour du code
- Supprimer les paquets NuGet de TX Text Control
- Installer le paquet NuGet IronPDF
- Supprimer la gestion du contexte
ServerTextControl(plus d'appelsCreate()) - Convertir les charges
StreamType.HTMLFormatenRenderHtmlAsPdf - Convertir les modèles de fusion de courrier en modèles HTML avec l'interpolation de chaînes de caractères ou Razor
- Mettez à jour les en-têtes/pieds de page pour utiliser
HtmlHeaderFooterouAddTextFooter - Simplifiez les paramètres de page en utilisant
RenderingOptions - Ajouter l'initialisation de la licence au démarrage
Test de post-migration
Après la migration, vérifiez ces aspects :
- Testez l'affichage correct de tous les modèles de documents
- Vérifier la conformité PDF/Asi nécessaire
- Tester la fonctionnalité de la protection par mot de passe
- Vérifier que les en-têtes/pieds de page apparaissent sur toutes les pages
- Vérification sur le matériel Intel 11e génération - plus besoin de contourner le registre avec IronPDF
Avantages clés de la migration vers IronPDF
Le passage de TextControl àIronPDFprésente plusieurs avantages pour les équipes axées sur la génération de PDF :
Architecture axée sur le PDF :IronPDFest spécifiquement conçu pour la génération de PDF, offrant des capacités robustes de création et de rendu de documents grâce à l'utilisation des normes modernes HTML5 et CSS3.
Rentabilité : Le prix unique d'IronPDF le rend nettement moins cher sur le long terme, surtout comparé au service par abonnement de TextControl avec des renouvellements annuels obligatoires de 40 %.
Stabilité éprouvée : fiabilité documentée sur différents matériels, évitant les problèmes tels que ceux rencontrés par TextControl avec les cartes graphiques Intel.
Gestion du contexte inexistante : Éliminez la cérémonie de création ServerTextControl et les modèles d'élimination des ressources. Le rendu sans état d'IronPDF simplifie le code et réduit les fuites de mémoire potentielles.
Moteur de rendu moderne : Avec l'adoption croissante de .NET 10 et C# 14 jusqu'en 2026, le rendu basé sur Chromium d'IronPDF garantit la compatibilité avec les normes web actuelles et futures.

