IRONSOFTWAREHOME
VIDÉOS

Comment convertir XAML en PDF dans NET MAUI | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 juillet 2026

La migration de Spire.PDF vers IronPDF déplace votre génération de PDF en dehors d'un chemin HTML hérité qui produit souvent du texte basé sur des images et vers un pipeline Chromium qui produit du texte vrai, sélectionnable et consultable. Ce guide fournit un chemin de migration complet, étape par étape, couvrant les compromis de rendu HTML de Spire.PDF et les problèmes d'intégration de polices signalés.

Pourquoi migrer de Spire.PDF à IronPDF

Comprendre Spire.PDF

Spire.PDF est une bibliothèque PDF commerciale robuste conçue pour les développeurs .NET afin de traiter efficacement les documents PDF. Spire.PDF s'est imposé dans la communauté des programmeurs pour ses capacités spécifiques, en particulier dans les applications patrimoniales, et ses capacités d'intégration s'alignent parfaitement sur les autres composants de la gamme d'outils E-iceblue.

Cependant, Spire.PDF présente plusieurs problèmes fondamentaux qui affectent son utilisation dans le monde réel, en particulier en ce qui concerne la conversion HTML vers PDF et la prise en charge des normes web modernes.

Questions techniques essentielles

ProblèmeImpactSolution IronPDF
Le texte est souvent rendu sous forme d'images sur le chemin HTML héritéPDF non consultables, non accessibles, impossibilité de copier le texteRendu de texte réel
Dépendance IE/Edge Legacy ou QtWebKit sur le chemin héritéRendu obsolète, problèmes de CSS moderneChromium moderne intégré
Problèmes d'intégration de polices signalésLes documents ne semblent pas corrects sur d'autres systèmesGestion fiable des polices
Grande empreinte de déploiementUtilisation de mémoire plus élevéeRuntime Chromium intégré
CSS limité sur le chemin héritéLes mises en page modernes ne s'affichent pas correctementPrise en charge complète de CSS3

Le problème principal : les PDF basés sur des images

Un inconvénient signalé du chemin HTML hérité de Spire.PDF est son inclination à rendre le texte dans les documents HTML sous forme d'images. Cela produit des PDFs où le texte n'est pas sélectionnable ou consultable — une limitation pour les applications nécessitant une recherche ou une interaction avec le texte.

Lorsque vous utilisez la méthode LoadFromHTML() de Spire.PDF sur l'ancien moteur, elle rend souvent le texte sous forme d'images bitmap plutôt que du texte réel, créant ces problèmes :

  • Le texte NE PEUT PAS être sélectionné
  • Le texte NE PEUT PAS faire l'objet d'une recherche
  • Le texte NE PEUT PAS être copié
  • Les lecteurs d'écran NE PEUVENT PAS la lire (violation de l'accessibilité)
  • La taille du fichier est BEAUCOUP plus importante
  • Le zoom provoque une pixellisation

Comparaison entre Spire.PDF et IronPDF

FonctionSpire.PDFIronPDF
Rendu HTML vers PDFIE/QtWebKit hérité par défaut ; opt-in ChromeHtmlConverter (nécessite Chrome système) depuis v10.7.21Chromium intégré (moderne, pas d'installation supplémentaire)
Sortie texte (chemin HTML)Souvent rendu comme des images sur le chemin héritéTexte réel (sélectionnable et consultable)
Traitement des policesProblèmes signalés sur le chemin héritéGestion fiable des polices
Support CSS3Limité sur le chemin héritéComplet
Flexbox/GridNon pris en charge sur le chemin héritéPrise en charge
JavaScriptLimité sur le chemin héritéES6+ complet
Accessibilité des PDFMauvais sur le chemin hérité (sortie basée sur des images)Sortie de texte balisé
Conception d'APIBeaucoup de surcharges, paramètres manuels de pageRendu fluide unique
LicenceFreemium/CommercialCommercial

Sur le .NET moderne,IronPDF aborde les compromis HTML-to-PDF de Spire.PDF en rendant le texte comme du texte réellement sélectionnable plutôt que des images, de sorte que les PDFs résultants sont consultables et accessibles.


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 Spire.PDF
dotnet remove package Spire.PDF
dotnet remove package FreeSpire.PDF  # If using free version

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuration de la licence

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

Référence API complète

Modifications de l'espace de nommage

// Before: Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.HtmlConverter;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;

Mappages de l'API de base

Spire.PDFIronPDF
new PdfDocument()new ChromePdfRenderer()
pdf.LoadFromHTML()renderer.RenderHtmlAsPdf()
pdf.LoadFromFile()PdfDocument.FromFile()
pdf.SaveToFile()pdf.SaveAs()
pdf.Close()Pas nécessaire
pdf.Pages.Add()renderer.RenderHtmlAsPdf()
pdf.InsertPageRange()PdfDocument.Merge()
page.Canvas.DrawString()TextStamper + ApplyStamp()
PdfFontStyle CSS en HTML
PdfBrushStyle CSS en HTML

Exemples de migration de code

Exemple 1 : Conversion HTML vers PDF

Avant (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();
        
        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
        
        pdf.LoadFromHTML(htmlString, false, true, true);
        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
        
        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        pdf.SaveAs("output.pdf");
    }
}

Cet exemple illustre la différence fondamentale dans le rendu HTML. Spire.PDF utilise LoadFromHTML() avec un objet PdfHtmlLayoutFormat, qui rend souvent le texte sous forme d'images bitmap. Le résultat est un PDF dans lequel les utilisateurs ne peuvent pas sélectionner, copier ou rechercher du texte.

IronPDF utilise un ChromePdfRenderer avec RenderHtmlAsPdf(), produisant un vrai texte entièrement sélectionnable, recherchable et accessible. Aucun appel Close() requis—IronPDF utilise le modèle dispose pour une récupération automatique. Consultez la documentation HTML vers PDF pour des exemples complets.

Exemple 2 : Fusionner plusieurs PDF

Avant (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf1 = new PdfDocument();
        pdf1.LoadFromFile("document1.pdf");
        
        PdfDocument pdf2 = new PdfDocument();
        pdf2.LoadFromFile("document2.pdf");
        
        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1);
        
        pdf1.SaveToFile("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        
        var merged = PdfDocument.Merge(pdf1, pdf2);
        
        merged.SaveAs("merged.pdf");
    }
}

Spire.PDF nécessite de charger manuellement chaque document avec new PdfDocument() + LoadFromFile(), puis d'utiliser InsertPageRange() pour spécifier quelles pages insérer, et enfin d'appeler Close() sur chaque document.

IronPDF utilise le modèle PdfDocument.FromFile() plus simple et une méthode statique PdfDocument.Merge() qui accepte plusieurs documents. Aucun appel Close() nécessaire. Pour en savoir plus, consultez nos tutoriels.

Exemple 3 : Ajouter du texte à un PDF

Avant (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.Pages.Add();
        
        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20);
        PdfBrush brush = new PdfSolidBrush(Color.Black);
        
        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, new PointF(50, 50));
        
        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
        
        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalOffset = 50,
            HorizontalOffset = 50
        };
        
        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}

Spire.PDF utilise un modèle de dessin basé sur le canevas avec PdfFont, PdfBrush, et page.Canvas.DrawString() pour positionner le texte à des coordonnées spécifiques en utilisant PointF.

IronPDF utilise un objet TextStamper avec des propriétés intuitives comme Text, FontSize, VerticalOffset, et HorizontalOffset, puis l'applique avec ApplyStamp(). Cette approche est plus déclarative et plus facile à maintenir.


Le problème du texte en tant qu'image

Pourquoi c'est essentiel

Lorsque Spire.PDF convertit du HTML au PDF en utilisant un rendu basé sur l'image, vos documents perdent des fonctionnalités essentielles :

1. Recherche de texte impossible : les utilisateurs ne peuvent pas utiliser Ctrl+F pour rechercher du texte. Les systèmes de gestion documentaire ne peuvent pas indexer le contenu.

2. Impossible de sélectionner/copier du texte : les utilisateurs qui tentent de copier une citation, une référence ou des données ne peuvent pas sélectionner de texte, car il s'agit d'une image.

3. Violations de l'accessibilité : Les PDF basés sur des images ne sont pas conformes aux WCAG 2.1, à la Section 508 (gouvernement américain), aux exigences de l'ADA et à la compatibilité avec les lecteurs d'écran.

4. Taille des fichiers volumineuse : La sortie basée sur l'image à partir du chemin HTML hérité peut produire des fichiers dix fois plus volumineux que la sortie texte produite par IronPDF pour le même contenu.

Détection : Votre PDF est-il basé sur des images ?

Ouvrez votre document généré par Spire.PDF et effectuez les tests suivants :

  1. Sélection de texte : Cliquez et faites glisser le curseur sur le texte. Si rien n'est souligné → IMAGE-BASED
  2. Recherche Ctrl+F : Rechercher n'importe quel mot sur la page. Si "Aucune correspondance trouvée" → IMAGE-BASED
  3. Copier/Coller : Sélectionnez et copiez le texte dans le Bloc-notes. Si rien ne colle → IMAGE-BASED

Le problème du moteur HTML hérité

Les moteurs de rendu de Spire.PDF

Le LoadFromHTML(...) de Spire.PDF a historiquement offert deux chemins : un chemin non-plugin soutenu par le contrôle WebBrowser legacy de Windows Internet Explorer / Edge, et un chemin plugin QT/WebKit téléchargeable séparément. Spire.PDF 10.7.21 (mi-2024) a ajouté une troisième option, ChromeHtmlConverter, qui passe par un Google Chrome installé localement — mais elle est opt-in et l'API originale LoadFromHTML utilise toujours par défaut les anciens moteurs. IE/Edge Legacy a été abandonné par Microsoft en 2022, le CSS moderne est peu fiable sur le chemin hérité, le support JavaScript est partiel, et le rendu peut varier selon les systèmes.

Le CSS moderne qui échoue dans Spire.PDF

<!-- This HTML renders incorrectly in Spire.PDF -->
<div style="display: flex; justify-content: space-between; gap: 20px;">
    <div style="flex: 1;">Column 1</div>
    <div style="flex: 1;">Column 2</div>
</div>

<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;">
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>

<!-- CSS Variables don't work -->
<style>
:root { --primary-color: #007bff; }
h1 { color: var(--primary-color); }
</style>
HTML

IronPDF utilise le rendu moderne de Chromium, de sorte que toutes ces fonctionnalités CSS fonctionnent correctement.


Nouvelles capacités après la migration

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

Texte sélectionnable et consultable

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>");
pdf.SaveAs("contract.pdf");

// Result:
// ✅ Text is fully selectable
// ✅ Text is searchable with Ctrl+F
// ✅ Text can be copied to clipboard
// ✅ Screen readers work perfectly
// ✅ File size is compact
// ✅ Zooming is crystal clear

Support CSS moderne

var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; }
    .container { display: flex; gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); }
</style>
<div class='container'>
    <div style='flex: 1; color: var(--primary)'>Column 1</div>
    <div style='flex: 1'>Column 2</div>
</div>
<div class='grid'>
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!

Filigranes basés sur le HTML

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.ApplyWatermark(@"
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.5);
        transform: rotate(-45deg);
    '>DRAFT</div>");

Liste de contrôle de la migration

Pré-migration

  • Recenser toutes les utilisations de Spire.PDF dans le code source
  • Tester la sélection du texte dans les fichiers PDF existants (détection des problèmes critiques)
  • Appels LoadFromHTML() des documents (ceci est la priorité à corriger)
  • Obtenez votre clé de licence IronPDF sur IronPDF

Mises à jour du code

  • Supprimer le paquet NuGet Spire.PDF (et FreeSpire.PDF si vous utilisez la version gratuite)
  • Installer le paquet NuGet IronPdf
  • Mettre à jour les imports de namespace (using Spire.Pdf;using IronPdf;)
  • Remplacer LoadFromHTML() par RenderHtmlAsPdf() (CORRECTION CRITIQUE)
  • Remplacer new PdfDocument() + LoadFromFile() par PdfDocument.FromFile()
  • Remplacer InsertPageRange() par PdfDocument.Merge()
  • Remplacer Canvas.DrawString() par TextStamper + ApplyStamp()
  • Remplacer SaveToFile() par SaveAs()
  • Supprimer tous les appels Close() (non nécessaire dans IronPDF)
  • Ajouter l'initialisation de la licence au démarrage de l'application

Essai

  • Vérifier que le texte est sélectionnable dans les PDF générés (TEST CRITIQUE)
  • Vérifier les améliorations du rendu CSS (Flexbox/Grid fonctionnent désormais)
  • Vérifiez que la taille des fichiers est plus petite
  • Tester l'accessibilité avec les lecteurs d'écran
  • Comparaison des performances

Veuillez noter: Spire est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié à, approuvé par, ou sponsorisé par e-iceblue. 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.

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