Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de QuestPDF à IronPDF en C#

Migrer de QuestPDF àIronPDF: Guide de migration complet en C

La migration de QuestPDF versIronPDFtransforme votre flux de production de PDF, passant d'une API propriétaire fluide en C# à une approche standard basée sur HTML/CSS avec des fonctionnalités complètes de manipulation de PDF. Ce guide fournit un chemin de migration complet, étape par étape, qui vous permet d'exploiter vos compétences web existantes, de réutiliser les modèles HTML et d'obtenir des fonctionnalités que QuestPDF ne peut tout simplement pas fournir.

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 à certains de ses homologues qui offrent une capacité complète de conversion de HTML en PDF, QuestPDF est limité aux fonctionnalités programmatiques de l'API de mise en page. 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.

La bibliothèque est gratuite pour les entreprises dont le chiffre d'affaires est inférieur à 1 million de dollars, mais il est nécessaire de prouver ce niveau de chiffre d'affaires, ce qui pourrait constituer une contrainte de conformité pour certaines d'entre elles. Les utilisateurs qui dépassent ce seuil doivent acheter une licence, ce qui doit être pris en compte dans la planification à long terme lors de l'évaluation de QuestPDF en tant que solution potentielle.

Le problème principal : pas de prise en charge HTML

QuestPDF est souvent recommandé pour la conversion de HTML en PDF, mais il ne prend pas du tout en charge le HTML. Bien que fortement promu sur les forums de développeurs, QuestPDF utilise son propre langage de mise en page qui nécessite l'apprentissage d'un DSL entièrement nouveau au lieu d'exploiter les compétences web existantes.

Fonction QuestPDF IronPDF
HTML-à-PDF NON SUPPORTÉ Prise en charge complète
CSS Styling NON SUPPORTÉ CSS3 complet
Modèles existants Doit être reconstruit à partir de zéro Réutiliser les actifs HTML/CSS
Compatibilité des outils de conception Aucun Tout outil de conception web
Courbe d'apprentissage Nouveau DSL propriétaire Transfert de compétences dans le domaine du web
Aperçu de la mise en page Nécessite un plugin IDE Prévisualisation dans n'importe quel navigateur
Manipulation de PDF Aucun Fusion, division, édition

IronPDF offre un rendu HTML vers PDF en natif qui fait totalement défaut à QuestPDF, éliminant ainsi la nécessité de reconstruire manuellement les documents en code C#. Elle inclut des fonctionnalités complètes de manipulation de PDF (fusion, division, édition, sécurisation) que QuestPDF ne peut pas réaliser.

Le modèle de licence QuestPDF

La "Community License" de QuestPDF n'est gratuite que si votre entreprise a un chiffre d'affaires annuel brut inférieur à 1 million de dollars. Vos clients (et pas seulement vous en tant que développeur) peuvent avoir besoin d'acheter des licences s'ils dépassent les seuils de revenus. Contrairement à une simple licence commerciale par développeur, le modèle de QuestPDF exige la divulgation des revenus et le suivi de la conformité.

IronPDF propose une licence simple : une licence par développeur, pas d'audit des revenus, pas d'exigence de licence client, et des coûts clairs et prévisibles.

Pour les équipes qui prévoient d'adopter .NET 10 et C# 14 d'ici 2025 et 2026,IronPDFoffre une licence transparente sans audit basé sur les revenus et une approche HTML/CSS standard qui tire parti des compétences existantes en matière de développement web.


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 : Capacité à installer des paquets NuGet
  3. Licence IronPDF : Obtenez votre clé de licence sur ironpdf.com

Modifications du paquet NuGet

# Remove QuestPDF
dotnet remove package QuestPDF

# Add IronPDF
dotnet add package IronPdf
# 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";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Trouver l'utilisation de QuestPDF

# Find all QuestPDF usages in your codebase
grep -r "QuestPDF\|Document.Create\|\.GeneratePdf" --include="*.cs" .
# 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;
// Before: QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

// After: IronPDF
using IronPdf;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Mappages de l'API de base

Concept QuestPDF Équivalent d'IronPDF Notes
Document.Create() new ChromePdfRenderer() Création d'un moteur de rendu
.Page() RenderHtmlAsPdf() Rend HTML en PDF
.Text() HTML <p>, <h1>, <span> Balises HTML standard
.Bold() CSS font-weight : bold CSS standard
.FontSize(24) CSS font-size : 24px CSS standard
.Image() HTML <img src="..."> HTML standard
.Table() HTML <table> HTML standard
.Column() CSS display : flex ; flex-direction : column CSS Flexbox
.Row() CSS display : flex ; flex-direction : row CSS Flexbox
Dimensions de page.A4 RenderingOptions.PaperSize Dimensions du papier
.Margin() RenderingOptions.Margin* Marges des pages
.GeneratePdf() pdf.SaveAs() Fichier de sortie
N/A PdfDocument.Merge() Fusionner des PDF
N/A PdfDocument.FromFile() Charger les PDF existants
N/A pdf.SecuritySettings Cryptage PDF

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

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

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

IronPDF utilise le langage HTML standard que tout développeur web connaît : <h1> pour les titres, <p> pour les paragraphes. Pas de DSL propriétaire à apprendre. L'approche d'IronPDF offre une syntaxe plus propre et une meilleure intégration avec les applications .NET modernes. 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");
    }
}
// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

QuestPDF utilise .Column()et .Item() pour la mise en page, avec .PaddingTop(20)pour l'espacement.IronPDFutilise le langage 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");
    }
}
// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

QuestPDF utilise page.Header() et page.Footer() avec des méthodes fluides comme .AlignCenter()et .CurrentPageNumber().IronPDFutilise des objets TextHeaderFooter avec des propriétés telles que CenterText et FontSize. L'espace réservé {page} insère automatiquement le numéro de la page en cours.


Notesde migration essentielles

Le changement de paradigme

Le changement fondamental consiste à passer d'un DSL C# propriétaire à un langage HTML/CSS standard :

// QuestPDF: Proprietary fluent 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);
// QuestPDF: Proprietary fluent 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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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) taille de police : 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;
// 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;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

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");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "reader";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

URL en PDF

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

var pdf = renderer.RenderUrlAsPdf("https://example.com/report");
pdf.SaveAs("webpage.pdf");
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderUrlAsPdf("https://example.com/report");
pdf.SaveAs("webpage.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Chargez et modifiez des PDF existants

var pdf = PdfDocument.FromFile("existing.pdf");
// Modify, merge, add security, etc.
pdf.SaveAs("modified.pdf");
var pdf = PdfDocument.FromFile("existing.pdf");
// Modify, merge, add security, etc.
pdf.SaveAs("modified.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Résumé de la comparaison des fonctionnalités

Fonction QuestPDF IronPDF
HTML-à-PDF Non pris en charge Caractéristiques principales
Courbe d'apprentissage DSL propriétaire Compétences web standard
Aperçu du modèle Plugin requis Tout navigateur
Collaboration en matière de conception Développeurs uniquement Concepteurs + développeurs
Actifs existants Doit reconstruire Réutiliser HTML/CSS
Manipulation de PDF Non pris en charge Prise en charge complète
Sécurité/Signature Non pris en charge Prise en charge complète
Modèle de licence Basé sur les revenus Par développeur
<Impact sur le client Besoin éventuel de licences Aucun
Bootstrap/Tailwind Non pris en charge Prise en charge complète
URL vers PDF Non pris en charge Prise en charge complète

Liste de contrôle de la migration

Pré-migration

  • [Identifier tous les modèles de documents QuestPDF (Document.Create, .GeneratePdf)
  • [Documenter les modèles DSL utilisés (.Column(), .Row(), .Table(), .Text())
  • [ ] Mettre en correspondance les méthodes de stylisation avec les équivalents CSS
  • [ ] Obtenir la clé de licenceIronPDFà partir de ironpdf.com

Modifications du paquet

  • supprimer le package NuGet QuestPDF [ ]
  • [Installer le package NuGet IronPdf : dotnet add package IronPdf

Modifications du code

  • [Mise à jour des importations d'espaces de noms
  • [Supprimer QuestPDF.Settings.License = LicenseType.Community
  • [Convertissez le motif Document.Create()en ChromePdfRenderer + HTML
  • [Remplacer .Column()/ .Row()par CSS Flexbox
  • [Remplacer .Table()par des éléments HTML <table>
  • [Convertissez .Text().Bold().FontSize(24) en <h1> style="...">
  • [Remplacer page.Header() / page.Footer() par TextHeaderFooter
  • [Remplacer .CurrentPageNumber() par le caractère générique {page}
  • [Convertissez .GeneratePdf()en pdf.SaveAs()
  • [Ajouter l'initialisation de la licence au démarrage de l'application

Post-Migration

  • [Comparaison visuelle de la sortie PDF
  • [Test de documents de plusieurs pages pour vérifier que les sauts de page sont corrects
  • [Ajouter de nouvelles fonctionnalités (sécurité, fusion, conversion d'URL en PDF) si nécessaire

Conclusion

QuestPDF etIronPDFont des objectifs différents dans le domaine de la génération et de la manipulation de fichiers PDF. QuestPDF se distingue dans les situations où la conception du PDF doit être méticuleusement élaborée à l'aide d'une approche programmatique. La fluidité de l'API est un avantage pour les utilisateurs qui préfèrent la haute fidélité à la conversion HTML.

D'autre part,IronPDFpropose une suite robuste pour les développeurs qui ont besoin d'une solution PDF complète, incluant la conversion HTML et des fonctionnalités de manipulation avancées, avec un modèle de licence transparent.

Les principaux changements apportés à cette migration sont les suivants :

  1. <Paradigme : API fluide C# propriétaire → HTML/CSS standard
  2. Création de modèles : Code C# uniquement → Les concepteurs peuvent contribuer au HTML/CSS
  3. Preview : plugin IDE requis → Tout navigateur web
  4. Initialisation : QuestPDF.Settings.License = LicenseType.CommunityIronPdf.License.LicenseKey
  5. Layout : .Column()/ .Row()→ CSS Flexbox
  6. Styling : Enchaînement de méthodes (.Bold().FontSize(24)) → Propriétés CSS
  7. Headers/Footers : page.Header() / page.Footer() → objets TextHeaderFooter
  8. Numéros de page : .CurrentPageNumber(){page} placeholder
  9. Enregistrer : .GeneratePdf("fichier.pdf")pdf.SaveAs("fichier.pdf")
  10. Nouvelles fonctionnalités : Fusion et division de PDF, sécurité, signatures numériques, URL-to-PDF

En fin de compte, le choix entre QuestPDF etIronPDFdépend des exigences spécifiques de votre projet. Si une intégration HTML transparente et une manipulation étendue des PDF sont essentielles,IronPDFest un choix supérieur.

Explorez la documentation complète IronPDF, tutoriel, et référence API pour accélérer votre migration QuestPDF.

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