Passer au contenu du pied de page
GUIDES DE MIGRATION

Migration de Haukcode.DinkToPdf vers IronPDF

Migrer de Haukcode.DinkToPdf versIronPDF: Un guide complet du développeur C

Haukcode.DinkToPdf est un fork de la bibliothèque DinkToPdf précédemment populaire, qui enveloppe le binaire wkhtmltopdf pour fournir des capacités de conversion HTML vers PDF pour les applications .NET. Bien que Haukcode.DinkToPdf ait maintenu la compatibilité avec .NET Core après que le projet DinkToPdf original ait stagné, il hérite de vulnérabilités de sécurité critiques de sa dépendance en amont. Le projet wkhtmltopdf sous-jacent a été archivé en janvier 2023, ce qui signifie que ces vulnérabilités ne seront jamais corrigées.

Ce guide fournit un chemin de migration complet de Haukcode.DinkToPdf vers IronPDF, avec des instructions étape par étape, des comparaisons de code et des exemples pratiques pour les développeurs .NET professionnels qui ont besoin d'éliminer les risques de sécurité de leurs flux de travail de génération de PDF.

Avertissement de sécurité critique : CVE-2022-35583

Haukcode.DinkToPdf hérite d'une vulnérabilité de sécurité critique de wkhtmltopdf qui ne peut pas être corrigée :

CVE-2022-35583 - Vulnérabilité SSRF critique (CVSS 9.8)

La bibliothèque wkhtmltopdf (et tous les wrappers incluant Haukcode.DinkToPdf) est vulnérable au Server-Side Request Forgery (SSRF) :

  • Vecteur d'attaque : Un contenu HTML malveillant peut amener le serveur à rechercher des ressources internes
  • AWS Metadata Attack : Peut accéder à http://169.254.169.254 pour voler des informations d'identification AWS
  • Accès au réseau interne : Peut scanner et accéder aux services internes
  • Inclusion de fichiers locaux : Peut lire des fichiers locaux via le protocole file://
  • Impact : Prise en charge complète de l'infrastructure possible

<Il n'existe AUCUN correctif pour cette vulnérabilité car wkhtmltopdf a été abandonné et archivé en 2023. La dernière version était la version 0.12.6 en 2020.

IronPDFvs Haukcode.DinkToPdf : Comparaison des fonctionnalités

La compréhension des différences architecturales aide les décideurs techniques à évaluer l'investissement dans la migration :

Aspect Haukcode.DinkToPdf IronPDF
Moteur sous-jacent wkhtmltopdf (Qt WebKit ~2015) Chromium (régulièrement mis à jour)
État de la sécurité CVE-2022-35583 (CRITIQUE, non corrigeable) Activement patché
Statut du projet Fork d'un projet abandonné Développé activement
HTML5/CSS3 Limité Prise en charge complète
JavaScript Limité, peu sûr Moteur V8 complet
Binaires natifs Exigences (spécifiques à la plate-forme) Autonome
Sécurité des threads Requiert le modèle singleton Sécurité des threads dès la conception
Support Communauté uniquement Support professionnel
Mises à jour Aucune attente Publications régulières
Licence MIT (gratuit) Commercial avec essai gratuit

Démarrage rapide : Migration de Haukcode.DinkToPdf vers IronPDF

La migration peut commencer immédiatement grâce à ces étapes fondamentales.

Étape 1 : Supprimer DinkToPdf et les binaires natifs

Supprimer les paquets NuGet de Haukcode.DinkToPdf :

# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
SHELL

Supprimer les binaires natifs de votre projet:

  • libwkhtmltox.dll (Windows)
  • libwkhtmltox.so (Linux)
  • libwkhtmltox.dylib (macOS)

Étape 2 : Installer IronPDF

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Étape 3 : Mise à jour des espaces de noms

Remplacer les espaces de noms DinkToPdf par IronPdf :

// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

É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"
$vbLabelText   $csharpLabel

Exemples de migration de code

Conversion basique de HTML en PDF

L'opération la plus fondamentale révèle la différence de complexité entre ces bibliothèques PDF .NET.

<Approche de Haukcode.DinkToPdf:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Approche IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");

        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf nécessite la création d'un SynchronizedConverteravec PdfTools, la construction d'un HtmlToPdfDocumentavec des Paramètres globauxet des Objects imbriqués, l'ajout d'un ObjectSettingsavec HtmlContent, l'appel à converter.Convert() pour obtenir des octets bruts, et en écrivant manuellement dans un fichier avec File.WriteAllBytes().

IronPDF simplifie cela en trois lignes : créer un ChromePdfRenderer, appeler RenderHtmlAsPdf(), et utiliser la méthode intégrée SaveAs().

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 modèles similaires.

<Approche de Haukcode.DinkToPdf:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    Page = "https://www.example.com",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    Page = "https://www.example.com",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf utilise le même modèle de construction de document avec ObjectSettings.Page pour les URL.IronPDFfournit 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 page personnalisés

La configuration de l'orientation, de la taille du papier et des marges nécessite différentes approches.

<Approche de Haukcode.DinkToPdf:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Landscape,
                PaperSize = PaperKind.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.pdf", pdf);
    }
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Landscape,
                PaperSize = PaperKind.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Approche IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");

        pdf.SaveAs("landscape.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");

        pdf.SaveAs("landscape.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf niche les paramètres dans Paramètres globauxavec un objet MarginSettings séparé.IronPDFfournit directement des propriétés Options de renduavec des noms clairs comme PaperSize, PaperOrientation, et des propriétés de marges individuelles.

Haukcode.DinkToPdf API toIronPDFMapping Reference (Référence de mappage de l'API DinkToPdf vers IronPDF)

Cette cartographie accélère la migration en indiquant les équivalents directs des API :

Mise en correspondance des classes de convertisseurs

Haukcode.DinkToPdf IronPDF Notes
SynchronizedConverter ChromePdfRenderer Sûr pour les threads, aucun singleton n'est nécessaire
BasicConverter ChromePdfRenderer La même classe gère les deux
PdfTools N/A Pas nécessaire
IConverter N/A Utiliser directement le moteur de rendu

Mise en correspondance de la configuration des documents

Haukcode.DinkToPdf IronPDF Notes
HtmlToPdfDocument Appel de méthode Utiliser directement RenderHtmlAsPdf()
Paramètres globaux Options de rendu Définir avant de rendre
ObjectSettings Options de rendu Réunis en un seul
converter.Convert(doc) renderer.RenderHtmlAsPdf(html) Retourne PdfDocument

Mappage des propriétés de GlobalSettings

Propriété GlobalSettings Propriété d'IronPDF Notes
ColorMode RenderingOptions.GrayScale Booléen, définir true pour les niveaux de gris
Orientation RenderingOptions.PaperOrientation Portrait ou Paysage
Taille du papier RenderingOptions.PaperSize Utiliser l'énumération PdfPaperSize
Margines.Top RenderingOptions.MarginTop En millimètres
Margines.Bottom RenderingOptions.MarginBottom En millimètres
Margines.Left RenderingOptions.MarginLeft En millimètres
Margines.Right RenderingOptions.MarginRight En millimètres

Mappage des propriétés d'ObjectSettings

Propriété ObjectSettings Équivalent d'IronPDF Notes
HtmlContent Premier paramètre de RenderHtmlAsPdf() Paramètre direct
Page (URL) renderer.RenderUrlAsPdf(url) Méthode séparée
HeaderSettings.Right = "[page]" TextHeader.RightText = "{page}" Syntaxe différente pour les espaces réservés

Migration de la syntaxe des espaces réservés

Haukcode.DinkToPdf IronPDF Notes
[page] {page} Numéro de page actuel
[toPage] {total-pages} Nombre total de pages
[date] {date} Date actuelle

Problèmes de migration courants et solutions

Enjeu 1 : Exigence Singleton

Haukcode.DinkToPdf: Requiert SynchronizedConverteren tant que singleton en raison de problèmes de sécurité des threads avec le binaire natif wkhtmltopdf.

Solution:Le ChromePdfRendererd'IronPdf est à l'abri des threads de par sa conception - aucun singleton n'est nécessaire :

// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Édition 2 : Dépendances binaires natives

Haukcode.DinkToPdf: Requiert des bibliothèques natives spécifiques à la plateforme (libwkhtmltox.dll/so/dylib).

Solution:IronPDFest autonome et ne présente aucune dépendance binaire native. Supprimez ces fichiers après la migration :

  • libwkhtmltox.dll (Windows)
  • libwkhtmltox.so (Linux)
  • libwkhtmltox.dylib (macOS)

Édition 3 : Différences de type de retour

Haukcode.DinkToPdf: converter.Convert() renvoie byte[] directement.

Solution:IronPDFrenvoie un objet PdfDocument avec plusieurs options de sortie :

var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData;  // Get bytes
pdf.SaveAs("output.pdf");       // Or save directly
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData;  // Get bytes
pdf.SaveAs("output.pdf");       // Or save directly
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Edition 4 : Syntaxe des espaces réservés dans l'en-tête et le pied de page

Haukcode.DinkToPdf: Utilise la syntaxe des crochets comme [page]et [toPage].

Solution: Mise à jour des caractères de remplacement des accolades d'IronPDF :

// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}"
};
// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}"
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Liste de contrôle pour la migration vers DinkToPdf

Tâches préalables à la migration

Auditez votre base de code pour identifier toute utilisation de DinkToPdf :

# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .

# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .

# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .

# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .

# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .

# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .

# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
SHELL

Documenter les configurations Paramètres globauxet ObjectSettingsactuelles. Identifiez tout code de chargement de bibliothèque natif pouvant être supprimé.

Tâches de mise à jour du code

  1. Supprimer les paquets NuGet de DinkToPdf
  2. Installer le paquet NuGet IronPdf
  3. Mise à jour des importations de l'espace de noms de DinkToPdf vers IronPdf
  4. Remplacer SynchronizedConverterpar ChromePdfRenderer
  5. Convertir les modèles HtmlToPdfDocumenten appels de méthode directs
  6. Convertir Paramètres globauxen RenderingOptions
  7. Convertir ObjectSettingsen RenderingOptions
  8. Mise à jour de la syntaxe des espaces réservés ([page]{page}, [toPage]{total-pages})
  9. Ajouter l'initialisation de la licenceIronPDFau démarrage

Tâches de nettoyage de l'infrastructure

  1. Supprimer les binaires natifs (libwkhtmltox.*)
  2. Supprimer le code de chargement de la bibliothèque native
  3. Supprimer CustomAssemblyLoadContext s'il est présent
  4. Mise à jour de l'injection de dépendance (le singleton n'est plus nécessaire)
  5. Suppression du code de détection de plate-forme pour les binaires natifs

Test de post-migration

Après la migration, vérifiez ces aspects :

  • Tester la conversion de HTML en PDF
  • Test de conversion d'URL en PDF
  • Vérifier les paramètres de la page (taille, orientation, marges)
  • Vérifier les en-têtes et les pieds de page avec des espaces réservés
  • Test avec des modèles HTML réels
  • Test de performance sous charge

Avantages clés de la migration vers IronPDF

Le passage de Haukcode.DinkToPdf àIronPDFprésente plusieurs avantages décisifs :

Sécurité : Élimination de CVE-2022-35583 (SSRF) et d'autres vulnérabilités de wkhtmltopdf qui ne seront jamais corrigées.

Moteur de rendu moderne : Utilise Chromium, activement mis à jour, au lieu de Qt WebKit, abandonné en 2015. Prise en charge complète de HTML5, CSS3 et JavaScript.

Pas de binaires natifs : bibliothèque autonome sans DLL spécifique à la plateforme à gérer. Simplifie le déploiement sur Windows, Linux et macOS.

Thread Safety : aucune exigence de singleton - utilisez ChromePdfRendererlibrement dans n'importe quel modèle, y compris l'instanciation par demande.

Une API plus simple : Appels directs de méthodes (RenderHtmlAsPdf(), RenderUrlAsPdf()) au lieu d'une construction complexe d'objets de document.

Développement actif : Alors que l'adoption de .NET 10 et C# 14 augmente jusqu'en 2026, les mises à jour régulières d'IronPDF garantissent la compatibilité avec les versions .NET actuelles et futures.

Conclusion

Haukcode.DinkToPdf a servi de suite au projet DinkToPdf, en maintenant la compatibilité avec .NET Core pour la génération de PDF basée sur wkhtmltopdf. Cependant, le binaire wkhtmltopdf sous-jacent a été archivé en 2023, laissant des vulnérabilités de sécurité critiques comme CVE-2022-35583 non corrigées de façon permanente. Chaque jour, des applications continuent d'utiliser Haukcode.DinkToPdf, l'infrastructure reste menacée par les attaques SSRF.

IronPDF offre une alternative moderne et sécurisée avec un moteur de rendu Chromium qui gère les normes web contemporaines. Le chemin de migration est simple : supprimer les paquets DinkToPdf et les binaires natifs, remplacer la construction de documents par des méthodes de rendu directes et mettre à jour la syntaxe des espaces réservés.

Commencez votre migration dès aujourd'hui avec un essai gratuit d'IronPDF et éliminez les failles de sécurité inhérentes aux solutions basées sur le format wkhtmltopdf.

Pour des conseils de mise en œuvre complets, explorez la documentation IronPDF et les tutoriels.

Curtis Chau
Rédacteur technique

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

Lire la suite