Comment migrer de C# à IronPDF en C#
TuesPechkin a servi d'enveloppe thread-safe autour de la bibliothèque wkhtmltopdf, aidant les développeurs .NET à convertir HTML en PDF depuis des années. Cependant, la technologie wkhtmltopdf sous-jacente a été mise à jour pour la dernière fois en 2015 et officiellement abandonnée en décembre 2022. Cela crée des limitations critiques en matière de sécurité, de stabilité et de rendu que les équipes de développement ne peuvent plus ignorer.
Ce guide fournit un chemin de migration complet de TuesPechkinà 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 TuesPechkinmaintenant
La décision de migrer de TuesPechkinn'est plus facultative pour les équipes de développement soucieuses de la sécurité. La bibliothèque wkhtmltopdf sous-jacente comporte des vulnérabilités critiques non corrigées qui ne le seront jamais.
Vulnérabilité de sécurité critique : CVE-2022-35583
| Attribut | Valeur |
|---|---|
| CVE ID | CVE-2022-35583 |
| Sévérité | CRITIQUE (9.8/10) |
| Vecteur d'attaque | Réseau |
| Statut | NE SERONT JAMAIS PATCHÉS |
| Affectés | TOUTES les versions de TuesPechkin |
Les responsables de wkhtmltopdf ont explicitement déclaré qu'ils ne corrigeraient PAS les failles de sécurité. Toute application utilisant TuesPechkinest en permanence exposée aux attaques de type SSRF (Server-Side Request Forgery).
Comment fonctionne l'attaque
Lors du traitement du code HTML fourni par l'utilisateur, les attaquants peuvent injecter du contenu malveillant :
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
Cela permet aux attaquants d'accéder aux points d'extrémité des métadonnées AWS/Azure/GCP, de voler des données API internes, de scanner les ports des réseaux internes et d'exfiltrer des configurations sensibles.
La crise technologique
TuesPechkin intègre wkhtmltopdf, qui utilise Qt WebKit 4.8 - une technologie ancienne, antérieure à l'ère Chrome. Cela signifie :
- Pas de prise en charge de Flexbox
- Pas de prise en charge de la grille CSS
- Exécution JavaScript interrompue
- Pas de prise en charge d'ES6
La crise de la stabilité
Même avec le code ThreadSafeConverter annoncé, TuesPechkinplante en cas de forte charge :
// ❌ TuesPechkin- "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
// ❌ TuesPechkin- "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
' ❌ TuesPechkin- "ThreadSafeConverter" still crashes
Dim converter = New TuesPechkin.ThreadSafeConverter(
New TuesPechkin.RemotingToolset(Of PechkinBindings)())
' Under high load, you'll see:
' System.AccessViolationException: Attempted to read or write protected memory
' Process terminated unexpectedly
' Converter hangs indefinitely
IronPDF vs TuesPechkin: Comparaison des fonctionnalités
La compréhension des différences architecturales aide les décideurs techniques à évaluer l'investissement dans la migration :
| Fonction | TuesPechkin | IronPDF |
|---|---|---|
| Licence | Gratuit (Licence MIT) | Commercial |
| Sécurité des threads | Nécessite une gestion manuelle | Support natif |
| Simultanéité | Limité, peut se bloquer sous charge | Robustesse, gestion d'une forte concurrence |
| Développement | Inactif, dernière mise à jour en 2015 | Améliorations actives et continues |
| Facilité d'utilisation | Configuration complexe | Convivialité des guides |
| Documentation | Basique | Nombreux exemples |
| Sécurité | ❌ CVE critiques | ✅ Aucune vulnérabilité connue |
| HTML à PDF | ⚠️ WebKit obsolète | ✅ Chrome moderne |
| CSS3 | ❌ Partiel | ✅ Pris en charge |
| Flexbox/Grid | ❌ Non pris en charge | ✅ Pris en charge |
| JavaScript | ⚠️ Non fiable | ES6+ complet |
| Manipulation de PDF | ❌ Non disponible | ✅ Complet |
| Signatures numériques | ❌ Non disponible | ✅ Complet |
| Conformité PDF/A | ❌ Non disponible | ✅ Complet |
| Remplissage de formulaires | ❌ Non disponible | ✅ Complet |
| Marqueurs d'eau | ❌ Non disponible | ✅ Complet |
| Fusion/Fractionnement | ❌ Non disponible | ✅ Complet |
Démarrage rapide : Migration de TuesPechkin vers IronPDF
La migration peut commencer immédiatement grâce à ces étapes fondamentales.
Étape 1 : Remplacer les paquets NuGet
Supprimez tous les paquets TuesPechkin:
# Remove TuesPechkinand all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
# Remove TuesPechkinand all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
InstallezIronPDF:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Étape 2 : suppression des binaires natifs
Supprimez ces fichiers et dossiers de votre projet :
wkhtmltox.dllwkhtmltopdf.exe- Tous les fichiers
wkhtmlto* TuesPechkin.Wkhtmltoxdossier
Étape 3 : Mise à jour des espaces de noms
Remplacer les espaces de noms TuesPechkinpar l'espace de nomsIronPDF:
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
' Before (TuesPechkin)
Imports TuesPechkin
Imports TuesPechkin.Wkhtmltox.Win64
' After (IronPDF)
Imports IronPdf
Étape 4 : 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 de complexité entre ces bibliothèques PDF .NET.
Approche TuesPechkin:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {New ObjectSettings With {.HtmlText = html}}
})
File.WriteAllBytes("output.pdf", pdfBytes)
End Sub
End Class
Approche IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
La version TuesPechkinnécessite la création d'un StandardConverter avec une chaîne d'initialisation complexe : RemotingToolset, Win64EmbeddedDeployment et TempFolderDeployment. Vous devez également écrire manuellement des octets dans un fichier.
IronPDF élimine totalement cette cérémonie. Créez un ChromePdfRenderer, générez du HTML et enregistrez. Le code est auto-documenté et ne nécessite aucune compréhension des outils de déploiement ou de la gestion des binaires spécifiques à la plateforme.
Pour les scénarios avancés de conversion de HTML en PDF, voir le guide de conversion de HTML en PDF.
Conversion des URL en PDF
La conversion d'URL en PDF présente des différences de complexité similaires.
Approche TuesPechkin:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {
New ObjectSettings With {
.PageUrl = "https://www.example.com"
}
}
})
File.WriteAllBytes("webpage.pdf", pdfBytes)
End Sub
End Class
Approche IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
TuesPechkin utilise ObjectSettings.PageUrl imbriqué dans un HtmlToPdfDocument.IronPDFfournit une méthode dédiée RenderUrlAsPdf qui exprime clairement l'intention.
Explorez la URL vers la documentation PDF pour l'authentification et les options d'en-tête personnalisées.
Paramètres de rendu personnalisés
L'orientation des pages, la taille du papier et les marges nécessitent des approches de configuration différentes.
Approche TuesPechkin:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Module Program
Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim document = New HtmlToPdfDocument With {
.GlobalSettings = New GlobalSettings With {
.Orientation = GlobalSettings.PdfOrientation.Landscape,
.PaperSize = GlobalSettings.PdfPaperSize.A4,
.Margins = New MarginSettings With {.Unit = Unit.Millimeters, .Top = 10, .Bottom = 10}
},
.Objects = {
New ObjectSettings With {.HtmlText = html}
}
}
Dim pdfBytes As Byte() = converter.Convert(document)
File.WriteAllBytes("custom.pdf", pdfBytes)
End Sub
End Module
Approche IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom.pdf")
End Sub
End Module
TuesPechkin sépare les paramètres en GlobalSettings pour les options globales du document et ObjectSettings pour le contenu.IronPDFconsolide tout dans RenderingOptions avec des noms de propriétés clairs et faciles à trouver.
TuesPechkinAPI toIronPDFMapping Reference (Référence de mappage de l'API à IronPDF)
Cette cartographie accélère la migration en indiquant les équivalents directs des API :
| TuesPechkin | IronPDF |
|---|---|
StandardConverter |
ChromePdfRenderer |
ThreadSafeConverter |
ChromePdfRenderer |
HtmlToPdfDocument |
Paramètres de la méthode |
GlobalSettings |
RenderingOptions |
ObjectSettings.HtmlText |
RenderHtmlAsPdf(html) |
ObjectSettings.PageUrl |
RenderUrlAsPdf(url) |
GlobalSettings.PaperSize |
RenderingOptions.PaperSize |
GlobalSettings.Orientation |
RenderingOptions.PaperOrientation |
MarginSettings |
MarginTop, MarginBottom, etc. |
[page] espace réservé |
{page} espace réservé |
[toPage] espace réservé |
{total-pages} espace réservé |
RemotingToolset |
Pas nécessaire |
Win64EmbeddedDeployment |
Pas nécessaire |
TempFolderDeployment |
Pas nécessaire |
Problèmes de migration courants et solutions
Enjeu 1 : Code d'initialisation complexe
Problème: TuesPechkinnécessite une configuration complexe du convertisseur avec des ensembles d'outils de déploiement.
Solution:IronPDFest simple :
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
' Before (TuesPechkin)
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
' After (IronPDF)
Dim renderer = New ChromePdfRenderer()
' That's it!
Édition 2 : Crashs liés à la sécurité des threads
Problème : TuesPechkin's ThreadSafeConverter plante toujours sous une charge élevée avec AccessViolationException.
Solution:IronPDFdispose d'une sécurité thread native - aucune configuration spéciale n'est requise :
//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
'IronPDF is inherently thread-safe
Dim renderer As New ChromePdfRenderer()
' Use from any thread without crashes
Sujet 3 : Syntaxe de l'espace réservé au numéro de page
Problème : TuesPechkinutilise des espaces réservés [page] et [toPage].
Solution:Mise à jour de la syntaxe des espaces réservés d'IronPDF :
// Before (TuesPechkin)
"Page [page] of [toPage]"
// After (IronPDF)
"Page {page} of {total-pages}"
// Before (TuesPechkin)
"Page [page] of [toPage]"
// After (IronPDF)
"Page {page} of {total-pages}"
Edition 4 : Mise en page CSS cassée
Problème: Les mises en page Flexbox et Grid ne fonctionnent pas dans TuesPechkinparce que wkhtmltopdf utilise Qt WebKit 4.8.
Solution: Utilisez des feuilles de style CSS modernes et appropriées avecIronPDF:
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
' Remove table-based workarounds, use modern CSS
Dim html As String = "
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Works correctly with Chromium!
Edition 5 : Gestion des binaires natifs
Problème: TuesPechkinnécessite des binaires wkhtmltopdf spécifiques à la plateforme et une configuration du chemin d'accès.
Solution:IronPDFgère toutes les dépendances par le biais de NuGet - pas de binaires natifs à gérer :
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
Liste de contrôle pour la migration vers TuesPechkin
Tâches préalables à la migration
Auditez votre base de code pour identifier toutes les utilisations de TuesPechkin:
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
Configurations actuelles du document GlobalSettings (format de papier, orientation, marges). Document ObjectSettings configurations (contenu HTML, URL). Identifier les implémentations d'en-tête/pied de page pour la conversion. Localisez tous les binaires de wkhtmltopdf pour les supprimer.
Tâches de mise à jour du code
- Supprimer les paquets NuGet de TuesPechkin
- Supprimer les binaires natifs de wkhtmltopdf
- Installer le paquet NuGet IronPDF
- Mettre à jour les instructions d'utilisation de
TuesPechkinàIronPdf - Ajouter l'initialisation de la clé de licence au démarrage
- Remplacez les convertisseurs par
ChromePdfRenderer - Convertir
GlobalSettingsenRenderingOptions - Convertir
ObjectSettingsen paramètres de méthode - Mise à jour de la configuration des marges pour les propriétés individuelles
- Mettre à jour la syntaxe de l'en-tête/du pied de page en HTML
HtmlHeaderFooter - Corriger la syntaxe des espaces réservés de page (
[page]→{page}) - Supprimer tout le code de déploiement/outil
Test de post-migration
Après la migration, vérifiez ces aspects :
- Exécuter tous les tests unitaires
- Tester des scénarios à sécurité thread (IronPDF gère le multithreading sans plantage)
- Comparer la qualité de sortie des PDF (Chromium rend plus précisément)
- Vérification du rendu CSS (Flexbox et Grid fonctionnent désormais)
- Test de l'exécution JavaScript (ES6+ désormais pris en charge)
- Test du rendu de l'en-tête/du pied de page
- Test de performance des opérations par lots
- Analyse de sécurité pour vérifier qu'il ne reste pas de binaires wkhtmltopdf
Avantages clés de la migration vers IronPDF
Le passage de TuesPechkinàIronPDFprésente plusieurs avantages décisifs :
Sécurité : Les vulnérabilités CVE-2022-35583et autres vulnérabilités wkhtmltopdf ont été éliminées. Le moteur Chromium d'IronPDF reçoit régulièrement des mises à jour de sécurité.
Sécurité native des threads : plus de configurations complexes ThreadSafeConverter. Plus de plantages AccessViolationException sous charge.IronPDFgère automatiquement la concurrence.
Moteur de rendu moderne : prise en charge complète de CSS3, Flexbox, Grid et JavaScript ES6+. Vos PDF sont restitués exactement comme le contenu apparaît dans les navigateurs modernes.
Déploiement simplifié : aucun fichier binaire spécifique à la plateforme à gérer. Pas de cérémonie RemotingToolset, Win64EmbeddedDeployment, ou TempFolderDeployment. Il suffit d'installer le package NuGet.
Développement actif : Avec l'adoption croissante de .NET 10 et C# 14 jusqu'en 2026, les mises à jour régulières d'IronPDF garantissent la compatibilité avec les versions actuelles et futures de .NET .
Fonctionnalités étendues : TuesPechkinconvertit uniquement le HTML en PDF.IronPDFajoute la manipulation de PDF, les signatures numériques, la conformité PDF/A, le remplissage de formulaires, les filigranes et les opérations de fusion/séparation.

