IRONSOFTWAREHOME
VIDÉOS

Comment convertir HTML en PDF avec CSS réactif en utilisant C#

Curtis Chau
Curtis Chau
Updated: 18 mai 2026

Bien que ComPDFKitoffre de solides fonctionnalités de manipulation des PDF, plusieurs facteurs poussent les équipes de développement à envisager des alternatives plus établies.

Maturité du marché et comparaison de l'écosystème

ComPDFKit est confronté à des défis communs aux nouveaux venus sur le marché : lacunes dans la documentation, communauté réduite et couverture limitée de Stack Overflow. La décennie de perfectionnement d'IronPDF offre la stabilité et les ressources dont les projets d'entreprise ont besoin.

AspectComPDFKitIronPDF
HTML-à-PDFNécessite une analyse HTML manuelleRendu natif de Chromium
Maturité du marchéNouveau participantplus de 10 ans d'expérience
Taille de la communautéStack Overflow, plus petit, plus limitéUne communauté importante et active
DocumentationQuelques lacunesTutoriels et guides détaillés
TéléchargementsCroissanceplus de 10 millions de téléchargements de NuGet
Style APIC++ influencé, verbeuxAPI moderne et fluide .NET
Gestion de la mémoireAppels manuels Release()Gestion automatique de GC

Parité des fonctionnalités

Les deux bibliothèques prennent en charge des fonctionnalités PDF complètes :

FonctionComPDFKitIronPDF
HTML vers PDFBasique/Manuel✅Native Chromium
URL vers PDFMise en œuvre du manuel✅Intégré
Créer un PDF à partir de zéro
Édition PDF
Extraction de texte
Fusionner/Séparer
Signatures numériques
Remplissage de formulaires
Filigranes
MultiplateformeWindows, Linux, macOSWindows, Linux, macOS

Avantages principaux de la migration

  1. Rendu HTML supérieur : le moteur Chromium d'IronPDF gère nativement les technologies CSS3, JavaScript et les mises en page réactives modernes.
  2. Écosystème mature : plus de 10 ans de perfectionnement, une documentation exhaustive et une stabilité éprouvée
  3. API plus simple : Moins de code passe-partout, pas de gestion manuelle de la mémoire avec des appels Release()
  4. Meilleure intégration .NET : prise en charge native d'async/await, de LINQ et d'interfaces fluides
  5. Ressources abondantes : des milliers de réponses et d'exemples de la communauté Stack Overflow

Préparation de la migration

Prérequis

Assurez-vous que votre environnement répond à ces exigences :

  • .NET Framework 4.6.2+ ou .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ ou VS Code avec l'extension C#
  • Accès au Package Manager NuGet
  • Clé de licence IronPDF(essai gratuit disponible sur ironpdf.com)

Audit de l'utilisation de ComPDFKit

Exécutez ces commandes dans le répertoire de votre solution pour identifier toutes les références à ComPDFKit:

# Find all ComPDFKitusages in your codebase
grep -r "using ComPDFKit" --include="*.cs" .
grep -r "CPDFDocument\|CPDFPage\|CPDFAnnotation" --include="*.cs" .

# Find NuGet package references
grep -r "ComPDFKit" --include="*.csproj" .
SHELL

Modifications importantes à prévoir

ChangementComPDFKitIronPDFImpact
Chargement de documentsCPDFDocument.InitWithFilePath()PdfDocument.FromFile()Changement de nom de la méthode
Économiedocument.WriteToFilePath()pdf.SaveAs()Changement de nom de la méthode
Nettoyage de la mémoireRequis document.Release()Automatique (GC)Supprimer le nettoyage manuel
Accès à la pagedocument.PageAtIndex(i)pdf.Pages[i]Accès de type tableau
Indexation des pagesbasé sur 0basé sur 0Aucune modification n'est nécessaire
Rendu HTMLMise en œuvre du manuelRenderHtmlAsPdf()Simplification majeure
Extraction de textetextPage.GetText()pdf.ExtractAllText()API simplifiée

Processus de migration étape par étape

Étape 1 : Mise à jour des paquets NuGet

Supprimez les paquets ComPDFKitet installez IronPDF:

# Remove ComPDFKitpackages
dotnet remove package ComPDFKit.NetCore
dotnet remove package ComPDFKit.NetFramework

# Install IronPDF
dotnet add package IronPdf
SHELL

Étape 2 : Mise à jour des références aux espaces de noms

Remplacer les espaces de noms ComPDFKitpar IronPDF:

// Remove these
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using ComPDFKit.PDFAnnotation;
using ComPDFKit.Import;

// Add this
using IronPdf;

Étape 3 : configuration de la licence

// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Référence complète de migration des API

Opérations documentaires

TâchesComPDFKitIronPDF
Créer un document videCPDFDocument.CreateDocument()new PdfDocument()
Charger à partir d'un fichierCPDFDocument.InitWithFilePath(path)PdfDocument.FromFile(path)
Charger à partir du fluxCPDFDocument.InitWithStream(stream)PdfDocument.FromStream(stream)
Enregistrer dans un fichierdocument.WriteToFilePath(path)pdf.SaveAs(path)
Obtenir le nombre de pagesdocument.PageCountpdf.PageCount
Publication/éliminationdocument.Release()Non requis

Conversion HTML en PDF

TâchesComPDFKitIronPDF
Chaîne HTML vers PDFMise en œuvre manuelle requiserenderer.RenderHtmlAsPdf(html)
Fichier HTML vers PDFMise en œuvre manuelle requiserenderer.RenderHtmlFileAsPdf(path)
URL vers PDFMise en œuvre manuelle requiserenderer.RenderUrlAsPdf(url)
Définir la taille de la pageParamètres de création de la pagerenderer.RenderingOptions.PaperSize
Définir les margesVia la configuration de l'éditeurrenderer.RenderingOptions.MarginTop etc.

Opérations de fusion et de division

TâchesComPDFKitIronPDF
Fusionner des documentsdoc1.ImportPagesAtIndex(doc2, range, index)PdfDocument.Merge(pdf1, pdf2)
Document fractionnéExtraire les pages vers un nouveau documentpdf.CopyPages(start, end)

Exemples de migration de code

Conversion HTML en PDF

La différence la plus significative entre ComPDFKitet IronPDF est le rendu HTML. ComPDFKitnécessite un placement manuel du texte, tandis qu'IronPDF effectue un rendu HTML natif grâce à son moteur Chromium.

Mise en œuvre de ComPDFKit:

// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using System;

class Program
{
    static void Main()
    {
        // ComPDFKit's .NET SDK has no native HTML-to-PDF rendering.
        // The closest equivalent is to create a blank document and lay
        // out primitives manually, or call ComPDFKit's separate cloud
        // Conversion API (a different SKU).
        var document = CPDFDocument.CreateDocument();
        document.InsertPage(0, 595, 842, string.Empty);

        document.WriteToFilePath("output.pdf");
        document.Release();
    }
}

Mise en œuvre d'IronPDF:

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

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

Le ChromePdfRenderer d'IronPDF élimine le besoin de positionnement manuel du texte et de gestion de l'éditeur. Pour plus d'options de conversion HTML, consultez la documentation HTML au format PDF.

Fusionner plusieurs fichiers PDF

Mise en œuvre de ComPDFKit:

// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.Import;
using System;

class Program
{
    static void Main()
    {
        var document1 = CPDFDocument.InitWithFilePath("file1.pdf");
        var document2 = CPDFDocument.InitWithFilePath("file2.pdf");
        
        // Import pages from document2 into document1
        document1.ImportPagesAtIndex(document2, "0-" + (document2.PageCount - 1), document1.PageCount);
        
        document1.WriteToFilePath("merged.pdf");
        document1.Release();
        document2.Release();
    }
}

Mise en œuvre d'IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");
        
        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");
    }
}

La méthode statique Merge d'IronPDF élimine le modèle verbeux ImportPagesAtIndex avec des chaînes de plages de pages. Pour plus d'options, consultez la documentation sur la fusion de fichiers PDF .

Ajouter des filigranes

Le filigrane montre la différence entre la configuration propulsée par les propriétés de ComPDFKitCPDFWatermark et le style basé sur le HTML d'IronPDF.

Mise en œuvre de ComPDFKit:

// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFWatermark;
using System;

class Program
{
    static void Main()
    {
        var document = CPDFDocument.InitWithFilePath("input.pdf");

        CPDFWatermark watermark = document.InitWatermark(
            C_Watermark_Type.WATERMARK_TYPE_TEXT);
        watermark.SetText("CONFIDENTIAL");
        watermark.SetFontName("Helvetica");
        watermark.SetFontSize(48);
        watermark.SetTextRGBColor(255, 0, 0);
        watermark.SetRotation(45);
        watermark.SetOpacity(76); // 0..255
        watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
        watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
        watermark.SetPages($"0-{document.PageCount - 1}");
        watermark.SetFront(true);
        watermark.CreateWatermark();

        document.WriteToFilePath("watermarked.pdf");
        document.Release();
    }
}

Mise en œuvre d'IronPDF:

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        
        pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>",
            rotation: 45,
            verticalAlignment: VerticalAlignment.Middle,
            horizontalAlignment: HorizontalAlignment.Center);
        
        pdf.SaveAs("watermarked.pdf");
    }
}

IronPDF réduit la configuration multi-étapes CPDFWatermark à un seul appel de méthode avec style HTML/CSS. Pour plus d'options, consultez la documentation sur les filigranes .

Extraction de texte

Mise en œuvre de ComPDFKit:

using ComPDFKit.PDFDocument;
using System.Text;

var document = CPDFDocument.InitWithFilePath("document.pdf");

// Extract text (verbose)
var allText = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
    var page = document.PageAtIndex(i);
    var textPage = page.GetTextPage();
    allText.AppendLine(textPage.GetText(0, textPage.CountChars()));
    textPage.Release();
    page.Release();
}

document.WriteToFilePath("output.pdf");
document.Release(); // Must remember to release!

Mise en œuvre d'IronPDF:

using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// Extract text (one-liner)
string allText = pdf.ExtractAllText();

pdf.SaveAs("output.pdf");
// No Release() needed - GC handles cleanup

IronPDF réduit l'extraction de texte sur plusieurs lignes avec appel manuel Release() à une seule méthode. Pour plus d'options d'extraction, consultez la documentation sur l'extraction de texte .

Protection par mot de passe

Mise en œuvre d'IronPDF:

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");

// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("protected.pdf");

Pour connaître toutes les options de sécurité, consultez la documentation sur le chiffrement .

Notes de migration essentielles

Supprimez tous les appels à Release()

Le changement le plus important est la suppression de la gestion manuelle de la mémoire. ComPDFKitnécessite des appels explicites Release() sur les documents, les pages et les pages de texte.IronPDFs'en charge automatiquement grâce au garbage collection de .NET :

// ComPDFKit- manual cleanup required
document.Release();
page.Release();
textPage.Release();

//IronPDF- no equivalent needed
// GC handles cleanup automatically

Rendu HTML natif

ComPDFKit nécessite un placement manuel du texte à l'aide des API de l'éditeur.IronPDF effectue un rendu HTML/CSS natif grâce à son moteur Chromium, prenant en charge les CSS3 modernes, le JavaScript et les mises en page réactives.

Indexation de la même page

Les deux bibliothèques utilisent l'indexation à base 0 (Pages[0] est la première page)—aucune modification nécessaire pour le code d'accès aux pages.

Extraction de texte simplifiée

Remplacez le modèle GetTextPage() + GetText() + Release() multiligne par un seul appel ExtractAllText().

API de fusion Fluent

Remplacez ImportPagesAtIndex(doc2, "0-9", pageCount) par un simple Merge(pdf1, pdf2).

Liste de contrôle post-migration

Après avoir effectué la migration du code, vérifiez les points suivants :

  • Exécutez tous les tests unitaires pour vérifier que la génération de PDF fonctionne correctement.
  • Comparer la qualité de sortie PDF (le moteur Chromium d'IronPDF peut rendre les résultats différemment, généralement mieux).
  • Tester le rendu HTML avec des CSS et JavaScript complexes.
  • Vérifier la précision de l'extraction de texte
  • Fonctionnalités du formulaire de test
  • Test de performance des opérations par lots
  • Tester dans tous les environnements cibles
  • Mise à jour des pipelines CI/CD
  • Supprimer les fichiers de licence ComPDFKit

Ressources supplémentaires


La migration de ComPDFKità IronPDF élimine la gestion manuelle de la mémoire avec des appels Release() tout en fournissant un rendu natif HTML vers PDF qui manque à ComPDFKit. La transition vers l'écosystème mature d'IronPDF offre la profondeur de documentation, le soutien de la communauté et la stabilité éprouvée dont les projets d'entreprise ont besoin.

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