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);
}
}
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");
}
}
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");
}
}
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");
}
}
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);
}
}
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");
}
}
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.