COMPARAISON

HiQPdf vs IronPDF : Guide de comparaison technique

Lorsque les développeurs .NET évaluent les solutions HTML vers PDF, HiQPdfse distingue comme une bibliothèque commerciale utilisant le rendu basé sur WebKit. Bien que HiQPdfprenne en charge HTML5/CSS3, son moteur WebKit plus ancien peut avoir des difficultés avec les frameworks JavaScript modernes, et la version gratuite est limitée à 3 pages avec des filigranes visibles. À l'inverse,IronPDFutilise un moteur de rendu moderne basé sur Chromium, offrant une prise en charge complète de JavaScript et un package unifié sur toutes les plateformes .NET.

Cette comparaison évalue les deux bibliothèques selon des critères techniques pertinents afin d'aider les développeurs et architectes professionnels à prendre des décisions éclairées concernant leurs besoins en matière de PDF .NET.

Aperçu de HiQPdf

HiQPdf est une bibliothèque commerciale de conversion HTML vers PDF qui utilise un moteur de rendu basé sur WebKit. Sa classe de conversion principale, HtmlToPdf, inclut des méthodes telles que ConvertHtmlToMemory() et ConvertUrlToMemory() qui renvoient des données brutes byte[] . La configuration est gérée par le biais de chaînes de propriétés sur l'objet Document , telles que Document.Header , Document.Footer et Document.PageSize.

La version gratuite de HiQPdfimpose une limitation importante : un maximum de 3 pages pour les fichiers PDF de sortie avec un filigrane intrusif, ce qui rend les tests approfondis sur des documents plus volumineux difficiles lors de l'évaluation. La bibliothèque propose plusieurs variantes de package NuGet pour différentes plateformes (HiQPdf, HiQPdf.Free, HiQPdf.NetCore, HiQPdf.NetCore.x64, HiQPdf.Client), et la documentation ne précise pas clairement la prise en charge de .NET Core ou .NET 5+.

Pour les en-têtes et les pieds de page, HiQPdfutilise des objets HtmlToPdfVariableElementajoutés aux collections Document.Header et Document.Footer. Les espaces réservés aux numéros de page utilisent la syntaxe {CrtPage}pour la page actuelle et {PageCount}pour le nombre total de pages.

Vue d'ensemble de IronPDF

IronPDF est une bibliothèque PDF .NET qui utilise un moteur de rendu Chromium moderne, offrant une prise en charge complète des frameworks HTML5, CSS3 et JavaScript, notamment React, Angular et Vue. La classe de rendu principale de la bibliothèque, ChromePdfRenderer, comprend des méthodes comme RenderHtmlAsPdf() et RenderUrlAsPdf() qui renvoient des objets Document PDF.

IronPDF propose un package NuGet unique et unifié pour toutes les plateformes, avec une compatibilité documentée pour .NET 6, 7, 8, 9 et 10. La configuration utilise directement les propriétés Options de rendudu moteur de rendu. Les en-têtes et les pieds de page peuvent utiliser TextHeaderFooter avec des propriétés telles que CenterText et FontSize. Les espaces réservés aux numéros de page utilisent la syntaxe {page}et {total-pages}.

Comparaison des moteurs de rendu et de la compatibilité

La différence fondamentale entre ces bibliothèques réside dans leurs moteurs de rendu et leur prise en charge des plateformes.

Aspect HiQPdf IronPDF
Moteur de rendu Basé sur WebKit (plus ancien) Chrome moderne
<Niveau gratuit limite de 3 pages + filigrane essai complet de 30 jours
Support JS moderne Limité Complet (React, Angular, Vue)
Support .NET Core/5+ Plusieurs paquets nécessaires Paquet unique et unifié
Conception d'API Chaînes de propriétés complexes API propre et fluide
Support CSS3 Partiel Prise en charge
Documentation Fragmenté Complet
Paquet NuGet Plusieurs variantes Paquet unique

Le moteur de HiQPdf, basé sur WebKit, est une technologie plus ancienne qui peut rencontrer des difficultés avec les frameworks JavaScript modernes et les structures HTML complexes. Le moteur Chromium d'IronPDF offre la même qualité de rendu que Google Chrome, garantissant une conversion précise des contenus web modernes.

Code Comparaison : Opérations PDF courantes

Conversion de HTML et d'URL en PDF

Les opérations les plus fondamentales démontrent les différences de conception des API.

HiQPdf :

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

class Program
{
    static void Main()
    {
        HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
        byte[] pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory("https://example.com");
        System.IO.File.WriteAllBytes("output.pdf", pdfBuffer);

        // Convert HTML string
        string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        byte[] pdfFromHtml = htmlToPdfConverter.ConvertHtmlToMemory(html, "");
        System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml);
    }
}
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
        byte[] pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory("https://example.com");
        System.IO.File.WriteAllBytes("output.pdf", pdfBuffer);

        // Convert HTML string
        string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        byte[] pdfFromHtml = htmlToPdfConverter.ConvertHtmlToMemory(html, "");
        System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml);
    }
}
$vbLabelText   $csharpLabel

IronPDF :

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");

        // Convert HTML string
        string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdfFromHtml = renderer.RenderHtmlAsPdf(html);
        pdfFromHtml.SaveAs("fromhtml.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");

        // Convert HTML string
        string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdfFromHtml = renderer.RenderHtmlAsPdf(html);
        pdfFromHtml.SaveAs("fromhtml.pdf");
    }
}
$vbLabelText   $csharpLabel

HiQPdf crée un convertisseur HtmlToPdf, appelle ConvertUrlToMemory() ou ConvertHtmlToMemory() pour obtenir des données brutes byte[], puis écrit manuellement sur le disque à l'aide de File.WriteAllBytes(). La méthode ConvertHtmlToMemory() requiert un deuxième paramètre pour l'URL de base (chaîne vide si elle n'est pas nécessaire).

IronPDF crée un ChromePdfRenderer, appelle RenderUrlAsPdf() ou RenderHtmlAsPdf() pour obtenir un objet PdfDocument, puis enregistre directement avec SaveAs(). L'API est plus concise grâce à la gestion de documents orientés objet.

Pour des options de rendu HTML avancées, explorez le guide de conversion du HTML en PDF.

Fusionner plusieurs fichiers PDF

La fusion de PDF illustre les différentes approches de la manipulation de documents.

HiQPdf :

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

class Program
{
    static void Main()
    {
        // Create first PDF
        HtmlToPdf converter1 = new HtmlToPdf();
        byte[] pdf1 = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "");
        System.IO.File.WriteAllBytes("doc1.pdf", pdf1);

        // Create second PDF
        HtmlToPdf converter2 = new HtmlToPdf();
        byte[] pdf2 = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "");
        System.IO.File.WriteAllBytes("doc2.pdf", pdf2);

        // Merge PDFs
        PdfDocument document1 = PdfDocument.FromFile("doc1.pdf");
        PdfDocument document2 = PdfDocument.FromFile("doc2.pdf");
        document1.AddDocument(document2);
        document1.WriteToFile("merged.pdf");
    }
}
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;

class Program
{
    static void Main()
    {
        // Create first PDF
        HtmlToPdf converter1 = new HtmlToPdf();
        byte[] pdf1 = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "");
        System.IO.File.WriteAllBytes("doc1.pdf", pdf1);

        // Create second PDF
        HtmlToPdf converter2 = new HtmlToPdf();
        byte[] pdf2 = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "");
        System.IO.File.WriteAllBytes("doc2.pdf", pdf2);

        // Merge PDFs
        PdfDocument document1 = PdfDocument.FromFile("doc1.pdf");
        PdfDocument document2 = PdfDocument.FromFile("doc2.pdf");
        document1.AddDocument(document2);
        document1.WriteToFile("merged.pdf");
    }
}
$vbLabelText   $csharpLabel

IronPDF :

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

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

        // Create first PDF
        var pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>");
        pdf1.SaveAs("doc1.pdf");

        // Create second PDF
        var pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>");
        pdf2.SaveAs("doc2.pdf");

        // Merge PDFs
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

        // Create first PDF
        var pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>");
        pdf1.SaveAs("doc1.pdf");

        // Create second PDF
        var pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>");
        pdf2.SaveAs("doc2.pdf");

        // Merge PDFs
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
$vbLabelText   $csharpLabel

HiQPdf nécessite d'abord d'enregistrer les PDF sur le disque, de les charger avec PdfDocument.FromFile(), puis d'utiliser AddDocument() pour les ajouter les uns aux autres, et enfin WriteToFile() pour enregistrer le résultat. Ce document modifie le premier document en place.

IronPDF peut fusionner des documents directement en mémoire à l'aide de la méthode statique PdfDocument.Merge(), qui renvoie un nouveau document fusionné. Cette approche est plus propre et ne nécessite pas d'E/S de fichiers intermédiaires.

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

La configuration de l'en-tête et du pied de page montre les différentes approches du contenu dynamique.

HiQPdf :

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

class Program
{
    static void Main()
    {
        HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

        // Add header
        htmlToPdfConverter.Document.Header.Height = 50;
        HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page Header</div>", "");
        htmlToPdfConverter.Document.Header.Add(headerHtml);

        // Add footer with page number
        htmlToPdfConverter.Document.Footer.Height = 50;
        HtmlToPdfVariableElement footerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "");
        htmlToPdfConverter.Document.Footer.Add(footerHtml);

        byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "");
        System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer);
    }
}
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

        // Add header
        htmlToPdfConverter.Document.Header.Height = 50;
        HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page Header</div>", "");
        htmlToPdfConverter.Document.Header.Add(headerHtml);

        // Add footer with page number
        htmlToPdfConverter.Document.Footer.Height = 50;
        HtmlToPdfVariableElement footerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "");
        htmlToPdfConverter.Document.Footer.Add(footerHtml);

        byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "");
        System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer);
    }
}
$vbLabelText   $csharpLabel

IronPDF :

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

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

        // Configure header and footer
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Page Header",
            FontSize = 12
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };

        var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>");
        pdf.SaveAs("header-footer.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

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

        // Configure header and footer
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Page Header",
            FontSize = 12
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };

        var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>");
        pdf.SaveAs("header-footer.pdf");
    }
}
$vbLabelText   $csharpLabel

HiQPdf configure les en-têtes et les pieds de page grâce aux propriétés Document.Header et Document.Footer, en définissant Height et en ajoutant des objets HtmlToPdfVariableElement. Les espaces réservés aux numéros de page utilisent {CrtPage}pour la page en cours et {PageCount}pour le nombre total de pages.

IronPDF utilise les objets RenderingOptions.TextHeader et RenderingOptions.TextFooter avec TextHeaderFooter. Des propriétés telles que CenterText et FontSize permettent une configuration directe. Les espaces réservés aux numéros de page utilisent {page}et {total-pages}.

Pour en savoir plus sur la configuration de l'en-tête et du pied de page, consultez les tutoriels IronPDF.

Référence de mappage d'API

Pour les développeurs qui évaluent la migration vers HiQPdfou qui comparent les capacités, cette correspondance montre les opérations équivalentes :

Mappage de la classe principale

Classe HiQPdf Classe IronPDF
HtmlToPdf ChromePdfRenderer
Document PDF Document PDF
PdfPage pdf.Pages[i]
PdfDocumentControl Options de rendu
PdfHeader / PdfDocumentHeader HtmlHeaderFooter
PdfFooter / PdfDocumentFooter HtmlHeaderFooter
HtmlToPdfVariableElement HtmlHeaderFooter.HtmlFragment

Mise en correspondance des méthodes de conversion

Méthode HiQPdf Méthode IronPDF
ConvertHtmlToMemory(html, baseUrl) RenderHtmlAsPdf(html, baseUrl)
ConvertUrlToMemory(url) RenderUrlAsPdf(url)
ConvertHtmlToFile(html, baseUrl, path) RenderHtmlAsPdf(html).SaveAs(path)
ConvertUrlToFile(url, path) RenderUrlAsPdf(url).SaveAs(path)

Cartographie des propriétés

Propriété de HiQPdf Propriété d'IronPDF
Largeur du navigateur RenderingOptions.ViewPortWidth
Hauteur du navigateur RenderingOptions.ViewPortHeight
Document.PageSize RenderingOptions.PaperSize
Document.PageOrientation RenderingOptions.PaperOrientation
Document.Margins.Top RenderingOptions.MarginTop
Document.Margins.Bottom RenderingOptions.MarginBottom
Document.Margins.Left RenderingOptions.MarginLeft
Document.Margins.Right RenderingOptions.MarginRight
Document.Header.Height HtmlHeader.MaxHeight
Document.Footer.Height HtmlFooter.MaxHeight
Numéro de série IronPdf.License.LicenseKey

Mappage de la syntaxe des caractères de remplacement

Les espaces réservés dans l'en-tête et le pied de page diffèrent d'une bibliothèque à l'autre :

HiQPdf IronPDF
{CrtPage} {page}
{PageCount} {total-pages}
{CrtPageUri} {url}
{CrtPageTitle} {html-title}

Résumé de la comparaison des fonctionnalités

Fonction HiQPdf IronPDF
Rendu de Chromium ❌ (WebKit)
JavaScript moderne (React, Angular, Vue) ⚠️ Limited
Prise en charge complète de CSS3 ⚠️ Partiel
prise en charge de .NET 6/7/8/9/10 ⚠️ Documentation peu claire
Paquet NuGet unique ❌ (Plusieurs variantes)
Essai complet gratuit ❌ (limite de 3 pages + filigrane) ✅(30 jours)
HTML vers PDF
URL vers PDF
Fusion de PDF ✅(AddDocument) ✅(Fusion)
En-têtes/Pieds de page ✅(HtmlToPdfVariableElement) ✅(TextHeaderFooter)

Quand les équipes envisagent de passer de HiQPdfà IronPDF

Les équipes de développement évaluent la transition de HiQPdfàIronPDFpour plusieurs raisons :

Version gratuite restrictive : La version gratuite de HiQPdfimpose une limite de 3 pages avec des filigranes intrusifs, la rendant pratiquement inutilisable pour la production et difficile à évaluer en profondeur.IronPDFpropose une version d'essai complète de 30 jours sans limite de pages.

Moteur WebKit ancien : le moteur de rendu WebKit de HiQPdfpeine à gérer les frameworks JavaScript modernes tels que React, Angular et Vue. Le moteur Chrome d'IronPDF offre la même qualité de rendu que Google Chrome, garantissant une conversion précise des contenus web modernes complexes.

Prise en charge imprécise de .NET Core : la documentation de HiQPdfne précise pas explicitement la prise en charge de .NET Core ou de .NET 5+, et la bibliothèque nécessite des packages NuGet distincts pour les différentes plateformes.IronPDFpropose un package unifié unique avec une prise en charge documentée de .NET 6, 7, 8, 9 et 10.

Packages NuGet fragmentés : HiQPdfnécessite différentes variantes de package (HiQPdf, HiQPdf.Free, HiQPdf.NetCore, HiQPdf.NetCore.x64, HiQPdf.Client) selon les scénarios.IronPDFutilise un package unique pour toutes les plateformes.

Conception d'API complexe : HiQPdfnécessite une configuration détaillée via des chaînes de propriétés telles que Document.Header.Heightet Document.Footer.Add() . L'API fluide d'IronPDF avec les propriétés Options de rendupermet une configuration plus propre.

Syntaxe différente des espaces réservés : HiQPdfutilise les espaces réservés {CrtPage}et {PageCount}, tandis qu'IronPDF utilise {page}et {total-pages}. La migration nécessite la mise à jour de tous les modèles d'en-tête et de pied de page.

Forces et considérations

HiQPdfPoints forts

  • Prise en charge HTML5/CSS3 : Offre des fonctionnalités de rendu HTML5 et CSS3
  • Bibliothèque établie : Bibliothèque commerciale avec une clientèle existante

Considérations relatives à HiQPdf

  • Moteur WebKit : Technologie de rendu ancienne avec prise en charge limitée de JavaScript moderne
  • Limite de 3 pages : la version gratuite est fortement restreinte.
  • Packages fragmentés : plusieurs packages NuGet pour différentes plateformes
  • Prise en charge de .NET imprécise : la documentation ne clarifie pas explicitement la compatibilité avec les versions modernes de .NET
  • Chaînes de propriétés complexes : configuration détaillée via des propriétés imbriquées
  • Unités de mesure à points : Utilise des points (72 par pouce) pour les mesures

Les points forts d'IronPDF

  • Moteur Chromium : rendu moderne avec prise en charge complète de JavaScript
  • Package unifié : un seul package NuGet pour toutes les plateformes
  • Essai complet : essai gratuit de 30 jours avec toutes les fonctionnalités
  • Prise en charge des versions modernes de .NET : documentée pour .NET 6, 7, 8, 9 et 10
  • API propre : configuration Fluent RenderingOptions
  • Ressources complètes : tutoriels et documentation détaillés

Considérations relatives à IronPDF

  • Licence commerciale : requise pour une utilisation en production
  • Unités millimétriques : Utilise les millimètres plutôt que les points pour les marges.

Conclusion

HiQPdf etIronPDFreprésentent différentes générations de la technologie HTML-to-PDF dans les applications .NET. Le moteur de HiQPdfbasé sur WebKit fournit un support HTML5/CSS3 de base, mais a du mal avec les frameworks JavaScript modernes et offre une compatibilité .NET Core peu claire avec de multiples paquets fragmentés. La limite de 3 pages de la version gratuite restreint considérablement l'évaluation.

IronPDF offre une alternative moderne basée sur Chromium avec un support JavaScript complet pour les applications React, Angular et Vue. Le package NuGet unique et unifié, avec une prise en charge documentée de .NET 6/7/8/9/10, simplifie le déploiement, et la conception épurée de l'API réduit la complexité de la configuration.

Alors que les organisations planifient .NET 10, C# 14 et le développement d'applications jusqu'en 2026, le choix entre l'ancien rendu WebKit avec des paquets fragmentés et le rendu moderne Chromium avec un support unifié a un impact significatif à la fois sur la vitesse de développement et sur la qualité des résultats. Les équipes qui ont besoin de la prise en charge d'un cadre JavaScript moderne, d'une compatibilité .NET claire ou d'une gestion rationalisée des paquets trouveront qu'IronPDF répond à ces exigences de manière efficace.

Commencez à évaluerIronPDFavec un essai gratuit et explorez la documentation complète pour évaluer l'adéquation à vos besoins spécifiques.