IRONSOFTWAREHOME
VIDÉOS

Comment convertir un PDF en HTML en C#

Curtis Chau
Curtis Chau
Updated: 19 juillet 2026

Migrer de QuestPDF à IronPDF déplace votre flux de travail de génération de PDF d'une API de mise en page fluente C# vers une approche standard basée sur HTML/CSS avec des capacités de manipulation de PDF plus larges. Ce guide fournit un chemin de migration étape par étape pour vous permettre de tirer parti des compétences Web existantes, de réutiliser les modèles HTML et de profiter des fonctionnalités que la bibliothèque de base de QuestPDF n'inclut pas.

Pourquoi migrer de QuestPDF à IronPDF

Comprendre QuestPDF

QuestPDF est une API moderne et fluide créée spécifiquement pour générer des PDF de manière programmatique en C#. Contrairement aux bibliothèques qui offrent une conversion complète de HTML en PDF, la bibliothèque de base de QuestPDF se limite à une API de mise en page programmatique. QuestPDF excelle dans les scénarios où les développeurs doivent générer des documents à partir de zéro en utilisant du code C#, sans s'appuyer sur le HTML.

Le niveau Communautaire est gratuit sous les termes MIT pour les individus, les organisations à but non lucratif, les projets FOSS et les organisations avec moins de 1 million USD de revenus bruts annuels. Au-delà de ce seuil, QuestPDF propose une licence Professional à partir de 999 $ (perpétuelle, jusqu'à 10 développeurs) et une licence Enterprise à 2 999 $ (perpétuelle, à l'échelle de l'organisation), qui doivent être pris en compte dans la planification à long terme.

Le Problème Fondamental : Pas de Moteur HTML dans la Bibliothèque de Base

QuestPDF est parfois recommandé pour la conversion HTML en PDF, mais la bibliothèque de base ne rend pas HTML. Une extension maintenue par la communauté QuestPDF.HTML couvre un sous-ensemble limité de HTML/CSS, mais le moteur principal est uniquement programmatique et n'exécute pas un véritable moteur de navigateur. Les équipes ayant déjà des modèles HTML/CSS doivent généralement les reconstruire dans l'API fluente.

FonctionQuestPDFIronPDF
HTML-en-PDF (noyau)Non pris en charge (API fluente uniquement)Prise en charge complète
HTML-to-PDF (extension)Partiellement via QuestPDF.HTML (sous-ensemble limité)Prise en charge complète
CSS StylingLimité via l'extensionCSS3 complet
Modèles existantsDoit être reconstruit à partir de zéroRéutiliser les actifs HTML/CSS
Compatibilité des outils de conceptionNoneTout outil de conception web
Courbe d'apprentissageNouvelle API fluente C#Transfert de compétences dans le domaine du web
Aperçu de la mise en pageApplication compagnonPrévisualisation dans n'importe quel navigateur
Manipulation de PDFFusion / extraction / superposition / cryptage (API des opérations de document, 2024.12.0+)Fusion, division, édition, signature

IronPDF fournit un rendu HTML-natif que la bibliothèque de base QuestPDF n'inclut pas, éliminant ainsi la nécessité de reconstruire manuellement les documents dans le code C#. Il couvre également les fonctionnalités de manipulation de PDF telles que la fusion, la division, l'édition, la sécurisation et la signature numérique - l'API des opérations sur les documents de QuestPDF (2024.12.0+) couvre la fusion, l'extraction de pages, la superposition/sous-couche, les pièces jointes et le chiffrement, mais pas l'édition du contenu des pages existantes, l'OCR ou les signatures numériques.

Le modèle de licence QuestPDF

La Licence Communautaire de QuestPDF (termes MIT) est gratuite pour les individus, les organisations à but non lucratif, les projets FOSS, et les organisations avec moins de 1 million USD de revenus bruts annuels. Au-delà de ce seuil, vous avez besoin d'une licence Professional à 999 $ (perpétuelle, jusqu'à 10 développeurs) ou Enterprise à 2 999 $ (perpétuelle, à l'échelle de l'organisation). Parce que le déclencheur est le revenu de votre organisation plutôt que le nombre de postes, cela peut changer les conversations en aval avec les clients et votre propre gestion des licences.

IronPDF propose une licence commerciale par développeur : pas d'audits de revenus, pas de exigences de licence client, et des coûts prévisibles.

Pour les équipes adoptant les versions modernes de .NET,IronPDF offre une concession de licence par développeur sans déclencheurs basés sur les revenus et une approche standard HTML/CSS qui tire parti des compétences de développement Web existantes.


Avant de commencer

Prérequis

  1. Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Accès à NuGet : possibilité d'installer des packages NuGet
  3. Licence IronPDF : Obtenez votre clé de licence sur IronPDF

Modifications du paquet NuGet

# Remove QuestPDF
dotnet remove package QuestPDF

# Add IronPDF
dotnet add package IronPdf
SHELL

Configuration de la licence

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Trouver l'utilisation de QuestPDF

# Find all QuestPDF usages in your codebase
grep -r "QuestPDF\|Document.Create\|\.GeneratePdf" --include="*.cs" .
SHELL

Référence API complète

Modifications de l'espace de nommage

// Before: QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

// After: IronPDF
using IronPdf;

Mappages de l'API de base

Concept QuestPDFÉquivalent d'IronPDF
Document.Create()new ChromePdfRenderer()
.Page()RenderHtmlAsPdf()
.Text()HTML <p>, <h1>, <span>
.Bold()CSS font-weight: bold
.FontSize(24)CSS font-size: 24px
.Image()HTML <img src="...">
.Table()HTML <table>
.Column()CSS display : flex ; flex-direction : column
.Row()CSS display : flex ; flex-direction : row
PageSizes.A4RenderingOptions.PaperSize
.Margin()RenderingOptions.Margin*
.GeneratePdf()pdf.SaveAs()
N/APdfDocument.Merge()
N/APdfDocument.FromFile()
N/Apdf.SecuritySettings

Exemples de migration de code

Exemple 1 : Création d'un document de base (HTML vers PDF)

Avant (QuestPDF):

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;
        
        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("Hello World").FontSize(20).Bold();
                    column.Item().Text("This is a paragraph of text.");
                });
            });
        }).GeneratePdf("output.pdf");
    }
}

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a paragraph of text.</p>");
        pdf.SaveAs("output.pdf");
    }
}

Cet exemple montre la différence de paradigme. QuestPDF nécessite l'apprentissage de son API fluente : Document.Create(), container.Page(), page.Content().Column(), column.Item().Text(), avec le style via chaînage de méthodes comme .FontSize(20).Bold(). Vous devez également définir le type de licence avec QuestPDF.Settings.License = LicenseType.Community.

IronPDF utilise du HTML standard que tout développeur web connaît : <h1> pour les titres, <p> pour les paragraphes. Aucun nouveau DSL de mise en page à apprendre. L'approche d'IronPDF offre une syntaxe plus propre et s'intègre avec le reste d'une pile .NET web moderne. Consultez la documentation HTML vers PDF pour des exemples complets.

Exemple 2 : Génération de factures

Avant (QuestPDF):

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;
        
        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("INVOICE").FontSize(24).Bold();
                    column.Item().Text("Invoice #: 12345").FontSize(12);
                    column.Item().PaddingTop(20);
                    column.Item().Text("Customer: John Doe");
                    column.Item().Text("Total: $100.00").Bold();
                });
            });
        }).GeneratePdf("invoice.pdf");
    }
}

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = @"
            <h1>INVOICE</h1>
            <p>Invoice #: 12345</p>
            <br/>
            <p>Customer: John Doe</p>
            <p><strong>Total: $100.00</strong></p>
        ";
        
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("invoice.pdf");
    }
}

QuestPDF utilise .Column() et .Item() pour la mise en page, avec .PaddingTop(20) pour l'espacement.IronPDF utilise du HTML standard : <h1> pour le titre, <p> pour les paragraphes, <br/> pour l'espacement, et <strong> pour le texte en gras.

Le véritable avantage : avec IronPDF, les concepteurs peuvent créer et modifier des modèles HTML de manière autonome. Avec QuestPDF, chaque changement de conception nécessite qu'un développeur C# modifie le code. Pour en savoir plus, consultez nos tutoriels.

Exemple 3 : En-têtes et pieds de page avec numéros de page

Avant (QuestPDF):

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;
        
        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                
                page.Header().Text("Document Header").FontSize(14).Bold();
                
                page.Content().Text("Main content of the document.");
                
                page.Footer().AlignCenter().Text(text =>
                {
                    text.Span("Page ");
                    text.CurrentPageNumber();
                });
            });
        }).GeneratePdf("document.pdf");
    }
}

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = "<p>Main content of the document.</p>";
        
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        
        pdf.Header = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 14
        };
        
        pdf.Footer = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };
        
        pdf.SaveAs("document.pdf");
    }
}

QuestPDF utilise page.Header() et page.Footer() avec des méthodes fluentes comme .AlignCenter() et .CurrentPageNumber().IronPDF utilise des objets TextHeaderFooter avec des propriétés comme CenterText et FontSize. Le placeholder {page} insère automatiquement le numéro de page actuel.


Notes de migration essentielles

Le changement de paradigme

Le changement fondamental est de passer d'une API de mise en page fluente C# sur mesure à du HTML/CSS standard :

// QuestPDF: Fluent C# layout API
container.Page(page =>
{
    page.Content().Column(column =>
    {
        column.Item().Text("Invoice").Bold().FontSize(24);
        column.Item().Row(row =>
        {
            row.RelativeItem().Text("Customer:");
            row.RelativeItem().Text("Acme Corp");
        });
    });
});

// IronPDF: Standard HTML/CSS
var html = @"
<div style='font-family: Arial; padding: 40px;'>
    <h1 style='font-weight: bold; font-size: 24px;'>Invoice</h1>
    <div style='display: flex; justify-content: space-between;'>
        <span>Customer:</span>
        <span>Acme Corp</span>
    </div>
</div>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);

Conversions de modèles de mise en page

Modèle QuestPDFÉquivalent HTML/CSS
.Column()display : flex ; flex-direction : column
.Row()display : flex ; flex-direction : row
.RelativeItem()flex: 1
.Table()<table> élément
.PaddingTop(20)padding-top: 20px ou <br/>
.AlignCenter()text-align: center
.FontSize(24)font-size: 24px
.Bold()font-weight: bold ou <strong>

Conversion des paramètres de page

// QuestPDF
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);

// IronPDF
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;    // mm (2cm = 20mm)
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

Nouvelles capacités après la migration

Après avoir migré vers IronPDF, vous bénéficiez de fonctionnalités que QuestPDF ne peut pas vous offrir :

Fusion de fichiers PDF

var cover = renderer.RenderHtmlAsPdf("<h1>Cover</h1>");
var content = renderer.RenderHtmlAsPdf(reportHtml);
var existing = PdfDocument.FromFile("appendix.pdf");

var merged = PdfDocument.Merge(cover, content, existing);
merged.SaveAs("complete.pdf");

Sécurité des PDF

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "reader";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");

URL en PDF

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderUrlAsPdf("https://example.com/report");
pdf.SaveAs("webpage.pdf");

Chargez et modifiez des PDF existants

var pdf = PdfDocument.FromFile("existing.pdf");
// Modify, merge, add security, etc.
pdf.SaveAs("modified.pdf");

Résumé de la comparaison des fonctionnalités

FonctionQuestPDFIronPDF
HTML-à-PDFCore : non pris en charge (limité via l'extension QuestPDF.HTML)Caractéristiques principales
Courbe d'apprentissageAPI fluente C#Compétences web standard
Aperçu du modèleApplication compagnonTout navigateur
Collaboration en matière de conceptionDéveloppeurs uniquementConcepteurs + développeurs
Actifs existantsDoit reconstruireRéutiliser HTML/CSS
Manipulation de PDFFusion / extraction / superposition (API des opérations de document, 2024.12.0+)Prise en charge
Sécurité/SignatureChiffrement + autorisations (pas de signature numérique)Chiffrement + signature numérique
Modèle de licenceBasé sur le revenu (seuil de 1M $)Par développeur
Impact sur le clientPeut nécessiter des licences au-dessus de 1M $ de revenusNone
Bootstrap/TailwindNon pris en chargePrise en charge
URL vers PDFNon pris en chargePrise en charge

Liste de contrôle de la migration

Pré-migration

  • Identifiez tous les modèles de documents QuestPDF (Document.Create, .GeneratePdf)
  • Documentez les modèles DSL utilisés (.Column(), .Row(), .Table(), .Text())
  • Associer les méthodes de style à leurs équivalents CSS
  • Obtenez votre clé de licence IronPDF sur IronPDF

Modifications du paquet

  • Supprimez le package NuGet QuestPDF
  • Installez le package NuGet IronPdf : dotnet add package IronPdf

Modifications du code

  • Mettre à jour les importations d'espace de noms
  • Supprimez QuestPDF.Settings.License = LicenseType.Community
  • Convertissez le modèle Document.Create() en ChromePdfRenderer + HTML
  • Remplacez .Column() / .Row() par Flexbox CSS
  • Remplacez .Table() par les éléments HTML <table>
  • Convertissez .Text().Bold().FontSize(24) en <h1 style='...'>
  • Remplacez page.Header() / page.Footer() par TextHeaderFooter
  • Remplacez .CurrentPageNumber() par le placeholder {page}
  • Convertissez .GeneratePdf() en pdf.SaveAs()
  • Ajouter l'initialisation de la licence au démarrage de l'application

Après la migration

  • Comparaison visuelle des fichiers PDF générés
  • Vérifier que les documents multipages comportent des sauts de page corrects.
  • Ajouter de nouvelles fonctionnalités (sécurité, fusion, conversion d'URL en PDF) selon les besoins

Veuillez noter: QuestPDF est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié, approuvé ou sponsorisé par Codeux Software ou les mainteneurs de QuestPDF. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.
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 et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

OR
bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez « IronPDF »
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

ou téléchargez l'installateur Windows ici.

  1. Téléchargez et décompressez IronPDF à un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans l'explorateur de solutions Visual Studio, faites un clic droit sur Références. Sélectionnez Parcourir, « IronPDF.dll »

Licences à partir de 999 $