Comment remplacer du texte dans un PDF | IronPDF
TuesPechkin a servi de wrapper sécurisé aux threads autour du binaire natif wkhtmltopdf, aidant les développeurs .NET à convertir le HTML en PDF pendant des années. Cependant, le projet wkhtmltopdf sous-jacent a été archivé sur GitHub en janvier 2023, et le fork WebKit sur lequel il repose date d'environ 2015. Cela crée des limitations 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 ThreadSafeConverter annoncé, TuesPechkinplante sous une charge élevée :
// ❌ 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, open-source | Commercial |
| Sécurité des threads | Nécessite une gestion manuelle | Support natif |
| Monnaie fiduciaire | 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 | ⚠ Peu 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 IronPDF 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
Installez IronPDF:
# 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- Tout fichier
wkhtmlto* - Dossier
TuesPechkin.Wkhtmltox
Étape 3 : Mise à jour des espaces de noms
Remplacer les espaces de noms TuesPechkinpar l'espace de nom IronPDF :
// 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 de 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, rendez 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.IronPDF fournit une méthode RenderUrlAsPdf dédiée 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
// NuGet: Install-Package TuesPechkin.Wkhtmltox.Win64
using TuesPechkin;
using System.Drawing.Printing;
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.PaperOrientation.Landscape,
PaperSize = PaperKind.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
// NuGet: Install-Package TuesPechkin.Wkhtmltox.Win64
using TuesPechkin;
using System.Drawing.Printing;
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.PaperOrientation.Landscape,
PaperSize = PaperKind.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.Drawing.Printing
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.PaperOrientation.Landscape,
.PaperSize = PaperKind.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 de document globales et ObjectSettings pour le contenu.IronPDF consolide tout en RenderingOptions avec des noms de propriétés clairs et faciles à découvrir.
TuesPechkinAPI to IronPDF Mapping 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] placeholder |
{page} placeholder |
[topage] placeholder |
{total-pages} placeholder |
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:IronPDF est 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 : Le ThreadSafeConverter de TuesPechkinplante toujours sous une charge élevée avec AccessViolationException.
Solution:IronPDF dispose d'une sécurité thread native - aucune configuration spéciale n'est requise :
//IronPDF is inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
//IronPDF is 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
Problem: TuesPechkinuses [page] and [topage] placeholders.
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}"
' 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 avec IronPDF:
// 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:IronPDF gè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" .
Documenter les configurations actuelles de GlobalSettings (taille du papier, orientation, marges). Documenter les configurations de ObjectSettings (contenu HTML, URLs). 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
- Installez le package NuGet IronPDF
- Mettre à jour les déclarations using 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 des en-têtes/pieds de page à
HtmlHeaderFooterbasé sur HTML - Corriger la syntaxe du placeholder 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à IronPDF pré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é des threads natifs : Plus de configurations ThreadSafeConverter complexes. Plus de plantages AccessViolationException sous charge.IronPDF gè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 RemotingToolset, Win64EmbeddedDeployment, ou TempFolderDeployment cérémonie. Il suffit d'installer le package NuGet.
Développement Actif : Les mises à jour régulières d'IronPDF garantissent la compatibilité avec les versions actuelles et à venir de .NET.
Fonctionnalités étendues : TuesPechkinconvertit uniquement le HTML en PDF.IronPDF ajoute 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.

