
IronPDF vs GemBox.Pdf : Guide complet de comparaison de bibliothèques PDF .NET pour la conversion HTML en PDF
Lors du développement d'applications .NET nécessitant la génération et la manipulation de PDF, choisir la bonne bibliothèque C# PDF peut avoir un impact significatif sur le succès de votre projet. Cette comparaison complète examine IronPDF et GemBox.Pdf, deux bibliothèques PDF .NET proéminentes, pour aider les développeurs à prendre une décision éclairée en s'appuyant sur les fonctionnalités, les performances, les prix et les cas d'utilisation réels.
Aperçu rapide de la comparaison
| Catégorie | Fonctionnalité/aspect | IronPDF | GemBox.Pdf | Avantage clé |
|---|---|---|---|---|
| Architecture de base | Philosophie de conception | HTML d'abord, rendu Chrome | Manipulation native du PDF | En fonction du contexte |
| Complexité de l'API | Des méthodes simples comme RenderHtmlAsPdf() | Objets PDF de bas niveau | IronPDF : Un développement plus rapide | |
| Courbe d'apprentissage | 1-2 jours en général | 3 à 5 jours en moyenne | IronPDF : Adoption plus rapide | |
| Support de plateforme | Multiplateforme | Windows, Linux, macOS, Docker | Windows, Linux, macOS, Android, iOS | GemBox : Support mobile |
| Versions .NET | .NET 10, 9, 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+ | .NET 6, Standard 2.0, Framework 3.5+ | IronPDF : Dernière prise en charge de .NET | |
| Plateformes Cloud | Optimisation d'Azure/AWS | Prise en charge standard du cloud | IronPDF : Prêt pour l'informatique en nuage | |
| HTML en PDF | Moteur de rendu | Moteur Chrome V8 complet | Moteur basé sur Chromium | Les deux : Rendu Chromium |
| Prise en charge CSS3/HTML5 | Assistance complète | Support HTML5/CSS3 | Les deux : Normes web modernes | |
| Exécution de JavaScript | Prise en charge complète de JavaScript | Exécution JavaScript supportée | Les deux : Contenu dynamique | |
| Vitesse de rendu | ~125ms typique | Rendu basé sur Chromium | IronPDF : Temps de rendu documenté | |
| Expérience du développeur | Exemples de code | plus de 100 échantillons prêts à l'emploi | plus de 100 exemples disponibles | Les deux : des ressources étendues |
| Documentation | Tutoriels, modes d'emploi, vidéos | Documentation API axée sur | IronPDF : Des parcours d'apprentissage multiples | |
| Manipulation de contenu | Fusionner/séparer des PDF | Méthodes intégrées | Méthodes intégrées | Both : Standard features |
| Extraction de texte | Prise en charge de l'Unicode, intégration de l'OCR | Prise en charge de l'Unicode, OCR intégrée | GemBox : OCR intégré | |
| Support de formulaires | Formulaires HTML vers formulaires PDF | Créer, remplir, aplatir des formulaires | En fonction du contexte | |
| Mètres de performance | Utilisation de la mémoire | Moins de 10MB typiquement | Faible empreinte mémoire | Les deux : Efficace |
| Prise en charge du threading | Async/await natif optimisé | Opérations sûres pour les threads | IronPDF : Meilleure prise en charge de l'asynchronisme | |
| Security & Encryption | Niveaux de cryptage | AES-256, gestionnaires personnalisés | Norme AES-256 | Les deux : norme industrielle |
| Signatures numériques | Signatures visuelles intégrées | Prise en charge des signatures numériques | Les deux : Assistance à la signature | |
| Licensing & Pricing | Niveau d'entrée | Lite : $999 (1 dev, 1 projet) | Dev Unique : $890 (1 dev, projets illimités) | IronPDF : Coût d'entrée moins élevé |
| Redistribution | +1 999 $ sans droits d'auteur | Inclus, déploiements illimités | GemBox : De meilleurs termes pour le déploiement | |
| Option Suite | Iron Suite : $2,998 (9 produits) | GemBox Bundle: $2,200 (6 products, 1 dev) | IronPDF : Meilleure valeur de la suite | |
| Soutien | Support inclus | Oui, support technique 24/5 | Oui, 1 an d'assistance professionnelle | Les deux : bon support |
| Temps de réponse | 24 à 48 heures en général | Dans un délai d'un jour ouvrable | Les deux : Réponse rapide | |
| Parfait pour | Cas d'Utilisation | HTML vers PDF, applications web, rapports | Manipulation de PDF, formulaires, OCR | En fonction du contexte |
Remarque. GemBox.Pdf inclut la conversion HTML en PDF basée sur Chromium. IronPDF fournit un moteur de rendu Chrome profondément intégré avec de nombreuses options de configuration pour la conversion HTML en PDF.
Qu'est-ce que la bibliothèque IronPDF ?
IronPDF se distingue comme une bibliothèque .NET PDF complète spécifiquement conçue pour rendre la conversion HTML en PDF transparente pour les développeurs. Construit avec un moteur de rendu Chrome en son cœur, IronPDF transforme la façon dont les développeurs abordent la génération de PDF dans les applications C#, F# et VB.NET.
La philosophie de la bibliothèque se concentre sur l'exploitation des compétences existantes en développement Web. Au lieu d'apprendre des API PDF complexes, les développeurs peuvent utiliser le HTML, CSS et JavaScript familiers pour créer des documents PDF sophistiqués. Cette approche réduit considérablement le temps de développement tout en assurant un rendu fidèle au pixel qui répond aux normes web modernes.
Principales fonctionnalités d'IronPDF
IronPDF offre un ensemble de fonctionnalités étendu qui couvre pratiquement toutes les tâches liées au PDF que les développeurs pourraient rencontrer :
Excellence de la conversion HTML en PDF
- Moteur Chrome V8 : Affiche le HTML à l'aide du même moteur que Google Chrome, garantissant une fidélité au navigateur supérieure à 98 %.
- Prise en charge complète de CSS3/HTML5 : Prise en charge intégrale des standards web modernes, notamment Flexbox, Grid et les animations.
- Exécution JavaScript : Traite le JavaScript avant le rendu, capturant parfaitement le contenu dynamique
- Conception adaptative : gère les mises en page adaptatives avec des paramètres de fenêtre d'affichage personnalisables
- Prise en charge des polices Web : Affiche avec précision les polices Google, les polices personnalisées et les polices d'icônes
Manipulation avancée de PDF
Fusionner et diviser des PDF : combinez plusieurs PDF ou extrayez des pages spécifiques grâce à de simples appels de méthode.
- Signatures numériques : Appliquez des signatures cryptographiques avec prise en charge des certificats
- Gestion des formulaires : Créez des formulaires remplissables à partir de HTML ou modifiez des formulaires PDF existants
- Filigranes et tampons : Ajoutez des filigranes texte ou image avec contrôle de la transparence
- En-têtes et pieds de page : En-têtes/pieds de page dynamiques avec numérotation des pages
Sécurité et conformité
- Chiffrement : Chiffrement AES-256 avec paramètres de permission personnalisés
- Conformité PDF/A : Générer des PDF de qualité archivistique pour un stockage à long terme
- Rédaction : Supprimer définitivement le contenu sensible
- Protection par mot de passe : prise en charge des mots de passe utilisateur et propriétaire avec des autorisations granulaires
Exemple de code IronPDF : HTML en PDF avec fonctionnalités avancées
using IronPdf;
using IronPdf.Rendering;
// Configure the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
// Set paper orientation and size
PaperOrientation = PdfPaperOrientation.Portrait,
PaperSize = PdfPaperSize.A4,
// Configure margins (in millimeters)
MarginTop = 25,
MarginBottom = 25,
MarginLeft = 20,
MarginRight = 20,
// Enable JavaScript execution
EnableJavaScript = true,
RenderDelay = 1000, // Wait 1 second for JS to complete
// Print background colors and images
PrintHtmlBackgrounds = true,
// Create PDF forms from HTML form elements
CreatePdfFormsFromHtml = true,
// Custom header and footer
HtmlHeader = new HtmlHeaderFooter
{
Height = 20,
HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Report - {page} of {total-pages}</div>",
DrawDividerLine = true
},
HtmlFooter = new HtmlHeaderFooter
{
Height = 15,
HtmlFragment = "<div style='text-align: center; font-size: 10px;'>© 2025 Company Name. Confidential.</div>"
}
}
};
// Convert complex HTML with CSS and JavaScript
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: 'Segoe UI', Arial, sans-serif; line-height: 1.6; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
margin-bottom: 30px;
}
.data-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.data-table th {
background-color: #f8f9fa;
padding: 12px;
text-align: left;
border-bottom: 2px solid #dee2e6;
}
.data-table td {
padding: 10px;
border-bottom: 1px solid #dee2e6;
}
.total-section {
margin-top: 30px;
text-align: right;
font-size: 18px;
font-weight: bold;
}
@media print {
.no-print { display: none; }
}
</style>
</head>
<body>
<div class='invoice-header'>
<h1>Invoice #INV-2025-001</h1>
<p>Date: <span id='current-date'></span></p>
</div>
<table class='data-table'>
<thead>
<tr>
<th>Item Description</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Professional PDF Library License</td>
<td>1</td>
<td>$999.00</td>
<td>$999.00</td>
</tr>
<tr>
<td>Priority Support (1 Year)</td>
<td>1</td>
<td>$299.00</td>
<td>$299.00</td>
</tr>
</tbody>
</table>
<div class='total-section'>
<p>Subtotal: $1,048.00</p>
<p>Tax (8%): $83.84</p>
<p style='color: #667eea; font-size: 24px;'>Total: $1,131.84</p>
</div>
<script>
// Dynamic date insertion
document.getElementById('current-date').textContent = new Date().toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
</script>
</body>
</html>";
// Render the HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Apply additional security settings
pdf.SecuritySettings.OwnerPassword = "admin123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = true;
// Add metadata
pdf.MetaData.Author = "Invoice System";
pdf.MetaData.Title = "Invoice INV-2025-001";
pdf.MetaData.Subject = "Customer Invoice";
pdf.MetaData.Keywords = "invoice, payment, 2025";
pdf.MetaData.CreationDate = DateTime.Now;
// Save the PDF
pdf.SaveAs("invoice-2025-001.pdf");
// Optional: Save as PDF/A for archival
pdf.SaveAsPdfA("invoice-2025-001-archive.pdf", PdfAVersions.PdfA3);
Cet exemple démontre la capacité d'IronPDF à gérer des mises en page HTML complexes avec des dégradés, des tableaux, un contenu JavaScript dynamique et des fonctionnalités PDF avancées telles que les paramètres de sécurité et les métadonnées. La bibliothèque traite tout de manière transparente, produisant un PDF professionnel qui correspond exactement au design HTML.
Qu'est-ce que la bibliothèque GemBox.Pdf ?
GemBox.Pdf représente une approche différente de la manipulation des PDF dans .NET. Plutôt que de se concentrer sur la conversion HTML en PDF, GemBox.Pdf se spécialise dans les opérations PDF bas niveau et la manipulation directe de PDF. Cela le rend particulièrement adapté aux scénarios où les développeurs ont besoin d'un contrôle précis sur la structure et le contenu PDF.
La bibliothèque excelle à travailler avec des documents PDF existants, offrant des fonctionnalités robustes pour lire, éditer et manipuler des fichiers PDF à un niveau granulaire. GemBox.Pdf fonctionne sans dépendances sur Adobe Acrobat, rendant le déploiement simple dans divers environnements.
Principales caractéristiques de GemBox.Pdf
GemBox.Pdf offre des capacités de manipulation de PDF complètes :
Opérations sur les documents PDF
- Lecture et écriture de fichiers PDF : Accès direct à la structure et au contenu des fichiers PDF Fusionner et diviser : Combinez plusieurs fichiers PDF ou extrayez des pages spécifiques
- Cloner des pages : Importer des pages entre différents documents PDF
- Gestion des pages : ajouter, supprimer ou réorganiser les pages par programmation
Extraction et manipulation de contenu
- Extraction de texte : extraire le texte Unicode avec les informations de positionnement
- Extraction d'images : Récupérer les images intégrées dans les documents PDF
- Prise en charge de la reconnaissance optique de caractères (OCR) : reconnaissance optique de caractères intégrée pour les documents numérisés
- Censure du contenu : Suppression définitive des informations sensibles
Formulaires et interactivité
- Formulaires interactifs : Créez, remplissez, aplatissez et exportez des formulaires PDF
- Gestion des champs de formulaire : accès programmatique à tous les types de champs de formulaire
- Annotations : Ajouter des hyperliens et autres annotations PDF
Graphiques et éléments visuels
- Opérations de dessin : ajout de texte, d'images et de graphiques vectoriels
- Formes et tracés : Créez des dessins vectoriels complexes
- Filigranes : Appliquer des filigranes de texte et d'image
- Groupes de contenu : Organisez le contenu en groupes logiques
Exemple de code GemBox.Pdf : Manipulation de PDF et formulaires
using GemBox.Pdf;
using GemBox.Pdf.Content;
using GemBox.Pdf.Forms;
using GemBox.Pdf.Security;
// Set license (use FREE-LIMITED-KEY for evaluation)
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Create a new PDF document from scratch
using (var document = new PdfDocument())
{
// Add a page with custom size
var page = document.Pages.Add();
// Create formatted text with multiple styles
using (var formattedText = new PdfFormattedText())
{
formattedText.FontSize = 24;
formattedText.FontFamily = new PdfFontFamily("Arial");
formattedText.Color = PdfColor.FromRgb(0.2, 0.2, 0.6);
formattedText.AppendLine("GemBox.Pdf Document Example");
formattedText.FontSize = 12;
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.AppendLine("This document demonstrates PDF creation and manipulation features.");
// Draw text to the page
page.Content.DrawText(formattedText, new PdfPoint(50, 700));
}
// Add a form to the document
var form = document.Form;
// Create text field
var textField = form.Fields.AddText(page, 50, 600, 200, 30);
textField.Name = "CustomerName";
textField.Value = "Enter your name";
textField.Format.Fill.Color = PdfColor.FromRgb(0.95, 0.95, 0.95);
// Create checkbox
var checkBox = form.Fields.AddCheck(page, 50, 550, 20, 20);
checkBox.Name = "Agreement";
checkBox.Checked = false;
// Add descriptive text next to checkbox
using (var checkboxLabel = new PdfFormattedText())
{
checkboxLabel.Append("I agree to the terms and conditions");
page.Content.DrawText(checkboxLabel, new PdfPoint(80, 555));
}
// Create submit button
var submitButton = form.Fields.AddButton(page, 50, 500, 100, 30);
submitButton.Name = "Submit";
submitButton.Actions.Activate = PdfActionType.Named;
// Add button appearance
using (var buttonText = new PdfFormattedText())
{
buttonText.Append("Submit Form");
buttonText.FontSize = 14;
buttonText.Color = PdfColor.FromRgb(1, 1, 1);
// Create button appearance stream
var appearance = submitButton.Appearance.Normal;
appearance.Fill.Color = PdfColor.FromRgb(0.2, 0.4, 0.8);
appearance.Stroke.Color = PdfColor.FromRgb(0.1, 0.2, 0.4);
appearance.Stroke.Width = 1;
// Draw button background
appearance.DrawRectangle(new PdfPoint(0, 0), new PdfSize(100, 30), true, true);
// Draw button text
appearance.DrawText(buttonText, new PdfPoint(20, 10));
}
// Add a table using low-level graphics
var tableTop = 400;
var tableLeft = 50;
var cellWidth = 150;
var cellHeight = 30;
// Draw table headers
page.Content.DrawRectangle(new PdfPoint(tableLeft, tableTop),
new PdfSize(cellWidth * 3, cellHeight), true, true);
using (var headerText = new PdfFormattedText())
{
headerText.FontSize = 12;
headerText.Color = PdfColor.FromRgb(1, 1, 1);
headerText.Append("Product");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + 10, tableTop + 10));
headerText.Clear();
headerText.Append("Quantity");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth + 10, tableTop + 10));
headerText.Clear();
headerText.Append("Price");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth * 2 + 10, tableTop + 10));
}
// Draw table data rows
var rowData = new[]
{
new { Product = "PDF Library", Quantity = "1", Price = "$890" },
new { Product = "Support Plan", Quantity = "1", Price = "$299" },
new { Product = "Training", Quantity = "2", Price = "$500" }
};
var currentY = tableTop - cellHeight;
foreach (var row in rowData)
{
// Draw cell borders
page.Content.DrawRectangle(new PdfPoint(tableLeft, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth * 2, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
// Draw cell content
using (var cellText = new PdfFormattedText())
{
cellText.FontSize = 11;
cellText.Append(row.Product);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + 10, currentY + 10));
cellText.Clear();
cellText.Append(row.Quantity);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth + 10, currentY + 10));
cellText.Clear();
cellText.Append(row.Price);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth * 2 + 10, currentY + 10));
}
currentY -= cellHeight;
}
// Apply security settings
var securitySettings = document.SecuritySettings;
securitySettings.DocumentOpenPassword = "user123";
securitySettings.PermissionsPassword = "owner123";
securitySettings.Permissions = PdfPermissions.AllowPrint | PdfPermissions.AllowFormFill;
// Save the document
document.Save("gembox-example.pdf");
}
// Example: Manipulating existing PDF
using (var existingDoc = PdfDocument.Load("existing-document.pdf"))
{
// Extract text from first page
var page = existingDoc.Pages[0];
var text = page.Content.GetText();
Console.WriteLine($"Extracted text: {text}");
// Add watermark to all pages
foreach (var p in existingDoc.Pages)
{
using (var watermark = new PdfFormattedText())
{
watermark.Append("CONFIDENTIAL");
watermark.FontSize = 50;
watermark.Color = PdfColor.FromRgb(0.5, 0.5, 0.5);
watermark.Opacity = 0.3;
// Calculate center position
var pageWidth = p.MediaBox.Width;
var pageHeight = p.MediaBox.Height;
var textWidth = watermark.Width;
var textHeight = watermark.Height;
var x = (pageWidth - textWidth) / 2;
var y = (pageHeight - textHeight) / 2;
// Draw watermark diagonally
p.Content.SaveGraphicsState();
p.Content.SetTransform(1, 0, 0, 1, x, y);
p.Content.SetTransform(0.7071, 0.7071, -0.7071, 0.7071, 0, 0);
p.Content.DrawText(watermark, new PdfPoint(0, 0));
p.Content.RestoreGraphicsState();
}
}
existingDoc.Save("watermarked-document.pdf");
}Imports GemBox.Pdf
Imports GemBox.Pdf.Content
Imports GemBox.Pdf.Forms
Imports GemBox.Pdf.Security
' Set license (use FREE-LIMITED-KEY for evaluation)
ComponentInfo.SetLicense("FREE-LIMITED-KEY")
' Create a new PDF document from scratch
Using document As New PdfDocument()
' Add a page with custom size
Dim page = document.Pages.Add()
' Create formatted text with multiple styles
Using formattedText As New PdfFormattedText()
formattedText.FontSize = 24
formattedText.FontFamily = New PdfFontFamily("Arial")
formattedText.Color = PdfColor.FromRgb(0.2, 0.2, 0.6)
formattedText.AppendLine("GemBox.Pdf Document Example")
formattedText.FontSize = 12
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.AppendLine("This document demonstrates PDF creation and manipulation features.")
' Draw text to the page
page.Content.DrawText(formattedText, New PdfPoint(50, 700))
End Using
' Add a form to the document
Dim form = document.Form
' Create text field
Dim textField = form.Fields.AddText(page, 50, 600, 200, 30)
textField.Name = "CustomerName"
textField.Value = "Enter your name"
textField.Format.Fill.Color = PdfColor.FromRgb(0.95, 0.95, 0.95)
' Create checkbox
Dim checkBox = form.Fields.AddCheck(page, 50, 550, 20, 20)
checkBox.Name = "Agreement"
checkBox.Checked = False
' Add descriptive text next to checkbox
Using checkboxLabel As New PdfFormattedText()
checkboxLabel.Append("I agree to the terms and conditions")
page.Content.DrawText(checkboxLabel, New PdfPoint(80, 555))
End Using
' Create submit button
Dim submitButton = form.Fields.AddButton(page, 50, 500, 100, 30)
submitButton.Name = "Submit"
submitButton.Actions.Activate = PdfActionType.Named
' Add button appearance
Using buttonText As New PdfFormattedText()
buttonText.Append("Submit Form")
buttonText.FontSize = 14
buttonText.Color = PdfColor.FromRgb(1, 1, 1)
' Create button appearance stream
Dim appearance = submitButton.Appearance.Normal
appearance.Fill.Color = PdfColor.FromRgb(0.2, 0.4, 0.8)
appearance.Stroke.Color = PdfColor.FromRgb(0.1, 0.2, 0.4)
appearance.Stroke.Width = 1
' Draw button background
appearance.DrawRectangle(New PdfPoint(0, 0), New PdfSize(100, 30), True, True)
' Draw button text
appearance.DrawText(buttonText, New PdfPoint(20, 10))
End Using
' Add a table using low-level graphics
Dim tableTop = 400
Dim tableLeft = 50
Dim cellWidth = 150
Dim cellHeight = 30
' Draw table headers
page.Content.DrawRectangle(New PdfPoint(tableLeft, tableTop),
New PdfSize(cellWidth * 3, cellHeight), True, True)
Using headerText As New PdfFormattedText()
headerText.FontSize = 12
headerText.Color = PdfColor.FromRgb(1, 1, 1)
headerText.Append("Product")
page.Content.DrawText(headerText, New PdfPoint(tableLeft + 10, tableTop + 10))
headerText.Clear()
headerText.Append("Quantity")
page.Content.DrawText(headerText, New PdfPoint(tableLeft + cellWidth + 10, tableTop + 10))
headerText.Clear()
headerText.Append("Price")
page.Content.DrawText(headerText, New PdfPoint(tableLeft + cellWidth * 2 + 10, tableTop + 10))
End Using
' Draw table data rows
Dim rowData = {
New With {.Product = "PDF Library", .Quantity = "1", .Price = "$890"},
New With {.Product = "Support Plan", .Quantity = "1", .Price = "$299"},
New With {.Product = "Training", .Quantity = "2", .Price = "$500"}
}
Dim currentY = tableTop - cellHeight
For Each row In rowData
' Draw cell borders
page.Content.DrawRectangle(New PdfPoint(tableLeft, currentY),
New PdfSize(cellWidth, cellHeight), False, True)
page.Content.DrawRectangle(New PdfPoint(tableLeft + cellWidth, currentY),
New PdfSize(cellWidth, cellHeight), False, True)
page.Content.DrawRectangle(New PdfPoint(tableLeft + cellWidth * 2, currentY),
New PdfSize(cellWidth, cellHeight), False, True)
' Draw cell content
Using cellText As New PdfFormattedText()
cellText.FontSize = 11
cellText.Append(row.Product)
page.Content.DrawText(cellText, New PdfPoint(tableLeft + 10, currentY + 10))
cellText.Clear()
cellText.Append(row.Quantity)
page.Content.DrawText(cellText, New PdfPoint(tableLeft + cellWidth + 10, currentY + 10))
cellText.Clear()
cellText.Append(row.Price)
page.Content.DrawText(cellText, New PdfPoint(tableLeft + cellWidth * 2 + 10, currentY + 10))
End Using
currentY -= cellHeight
Next
' Apply security settings
Dim securitySettings = document.SecuritySettings
securitySettings.DocumentOpenPassword = "user123"
securitySettings.PermissionsPassword = "owner123"
securitySettings.Permissions = PdfPermissions.AllowPrint Or PdfPermissions.AllowFormFill
' Save the document
document.Save("gembox-example.pdf")
End Using
' Example: Manipulating existing PDF
Using existingDoc = PdfDocument.Load("existing-document.pdf")
' Extract text from first page
Dim page = existingDoc.Pages(0)
Dim text = page.Content.GetText()
Console.WriteLine($"Extracted text: {text}")
' Add watermark to all pages
For Each p In existingDoc.Pages
Using watermark As New PdfFormattedText()
watermark.Append("CONFIDENTIAL")
watermark.FontSize = 50
watermark.Color = PdfColor.FromRgb(0.5, 0.5, 0.5)
watermark.Opacity = 0.3
' Calculate center position
Dim pageWidth = p.MediaBox.Width
Dim pageHeight = p.MediaBox.Height
Dim textWidth = watermark.Width
Dim textHeight = watermark.Height
Dim x = (pageWidth - textWidth) / 2
Dim y = (pageHeight - textHeight) / 2
' Draw watermark diagonally
p.Content.SaveGraphicsState()
p.Content.SetTransform(1, 0, 0, 1, x, y)
p.Content.SetTransform(0.7071, 0.7071, -0.7071, 0.7071, 0, 0)
p.Content.DrawText(watermark, New PdfPoint(0, 0))
p.Content.RestoreGraphicsState()
End Using
Next
existingDoc.Save("watermarked-document.pdf")
End UsingCet exemple met en avant la force de GemBox.Pdf dans la manipulation de PDF bas niveau, en démontrant la création de formulaires, le dessin graphique et les fonctionnalités de sécurité des documents. Bien que le code soit plus verbeux que l'approche HTML d'IronPDF, il offre un contrôle précis sur chaque aspect du PDF.
Comment ces bibliothèques gèrent-elles la conversion HTML en PDF ?
L'approche de la conversion HTML en PDF représente l'une des différences les plus significatives entre IronPDF et GemBox.Pdf.
Approche HTML vers PDF d'IronPDF
IronPDF a été développé dès le départ avec la conversion HTML en PDF comme objectif principal. La bibliothèque inclut un moteur de rendu Chrome complet qui traite le HTML, le CSS et le JavaScript exactement comme le ferait un navigateur Web. Cela signifie :
- Rendu navigateur optimal : utilise le même moteur Blink que Google Chrome
- Conformité totale aux standards du Web : prise en charge complète de CSS3, HTML5, Flexbox, Grid et JavaScript moderne
- Contenu dynamique : exécute du JavaScript avant le rendu, capturant le contenu AJAX et les éléments dynamiques
- Conception adaptative : Gère les requêtes média et les mises en page adaptatives
- Ressources externes : Récupère automatiquement les images, les feuilles de style et les polices à partir des URL.
Approche HTML vers PDF de GemBox.Pdf
GemBox.Pdf inclut la conversion HTML en PDF intégrée utilisant un moteur de rendu Chromium, supportant HTML5, CSS3, et l'exécution JavaScript. La conversion peut être effectuée à partir de fichiers locaux, d'URL en direct, de chaînes HTML ou de flux via l'API ConversionOptions.
IronPDF se distingue dans ce domaine par son intégration Chrome V8 profondément intégrée et une plus grande surface de configuration — y compris des en-têtes/pieds de page personnalisés, des jetons de numérotation de page, des contrôles d'arrière-plan d'impression, un délai de rendu pour les pages lourdes en JavaScript, et des options étendues de sécurité/métadonnées, toutes exposées depuis une API unifiée unique.
Support des frameworks CSS modernes : une différence cruciale
L'un des avantages les plus significatifs du rendu basé sur Chrome d'IronPDF devient apparent lorsqu'on travaille avec des frameworks CSS modernes comme Bootstrap, Tailwind CSS, et Foundation. Ces frameworks sont devenus la colonne vertébrale des applications Web modernes, et leur capacité à bien s'afficher dans les PDF est essentielle pour de nombreux cas d'utilisation.
IronPDF : Support complet des frameworks modernes
Le moteur de rendu Chrome d'IronPDF fournit un support complet et natif pour tous les frameworks CSS modernes :
Bootstrap 5 : Prise en charge complète de Flexbox et de CSS Grid pour les mises en page réactives
- Tailwind CSS : Prise en charge complète des frameworks CSS utilitaires.
- Exemples concrets : Affiche la page d'accueil et les modèles Bootstrap avec une précision pixel parfaite
- Fonctionnalités CSS3 modernes : animations, transformations, transitions, propriétés personnalisées
- Conception adaptative : les requêtes média et les mises en page basées sur la fenêtre d'affichage fonctionnent parfaitement.
Exemple de code : Formulaire Bootstrap vers PDF
using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrapForm = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container mt-5'>
<h1 class='mb-4'>Customer Registration</h1>
<form class='needs-validation'>
<div class='row g-3'>
<div class='col-md-6'>
<label class='form-label'>First Name</label>
<input type='text' class='form-control' value='John'>
</div>
<div class='col-md-6'>
<label class='form-label'>Last Name</label>
<input type='text' class='form-control' value='Smith'>
</div>
</div>
<div class='mt-4'>
<button class='btn btn-primary' type='submit'>Submit</button>
</div>
</form>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapForm);
pdf.SaveAs("bootstrap-form.pdf");Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim bootstrapForm As String = "
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container mt-5'>
<h1 class='mb-4'>Customer Registration</h1>
<form class='needs-validation'>
<div class='row g-3'>
<div class='col-md-6'>
<label class='form-label'>First Name</label>
<input type='text' class='form-control' value='John'>
</div>
<div class='col-md-6'>
<label class='form-label'>Last Name</label>
<input type='text' class='form-control' value='Smith'>
</div>
</div>
<div class='mt-4'>
<button class='btn btn-primary' type='submit'>Submit</button>
</div>
</form>
</div>
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(bootstrapForm)
pdf.SaveAs("bootstrap-form.pdf")GemBox.Pdf : Support du Cadre Basé sur Chromium
GemBox.Pdf utilise un moteur Chromium pour la conversion HTML en PDF, ce qui fournit un support fondamental pour HTML5 et CSS3. Les frameworks CSS modernes qui reposent sur le rendu standard du navigateur devraient être compatibles au niveau du moteur.
L'avantage d'IronPDF ici est son support profondément documenté et testé pour Bootstrap, Tailwind CSS, et d'autres frameworks, avec des exemples explicites, des guides de dépannage, et des options de configuration (comme les paramètres de fenêtre graphique et les délais de rendu) qui font partie de sa surface d'API de base. Les utilisateurs d'IronPDF bénéficient de ressources communautaires étendues et de conseils officiels pour les scénarios de rendu spécifiques au framework courants.
Considération du Monde Réel : Si votre projet nécessite un contrôle granulaire sur la façon dont les mises en page Bootstrap ou Tailwind sont rendues en PDF — y compris des tailles de fenêtre graphique personnalisées, du contenu piloté par JavaScript, ou un rendu dynamique de graphiques — l'API de configuration plus riche d'IronPDF et les guides officiels des frameworks fournissent un chemin plus direct vers des résultats de qualité production.
Pour plus de détails sur la compatibilité du framework CSS, voir le Guide CSS Bootstrap & Flexbox.
Quelle bibliothèque excelle dans différentes tâches PDF ?
Comprendre où chaque bibliothèque excelle aide les développeurs à choisir l'outil adapté à leurs besoins spécifiques.
Où IronPDF excelle
IronPDF convient bien à ces scénarios :
1. Génération de PDF pour applications web
Parfait pour les applications SaaS, portails web, et tout système nécessitant de convertir le contenu web en PDF. Le moteur de rendu Chrome garantit que les mises en page web complexes, y compris celles utilisant Bootstrap, Tailwind CSS, ou des frameworks personnalisés, s'affichent parfaitement.
2. Génération de rapports dynamiques
Lorsque les rapports incluent des graphiques (Chart.js, D3.js), de la visualisation de données dynamique, ou du contenu JavaScript rendu, IronPDF capture tout avec précision. Cela le rend idéal pour les tableaux de bord de veille économique et les applications basées sur des données.
3. Factures et modèles de documents
Utiliser des modèles HTML/CSS pour les factures, reçus, et documents commerciaux permet aux concepteurs de créer des modèles sans avoir à apprendre des API spécifiques aux PDF. Les modifications peuvent être effectuées rapidement en utilisant des technologies Web familières.
4. **Projets de développement rapide **
L'API simple et l'approche basée sur HTML réduisent considérablement le temps de développement. Un développeur peut créer un PDF complexe en quelques minutes, plutôt qu'en heures.
5. Déploiement multi-plateforme
Avec le support natif pour Windows, Linux, macOS, Docker, et les plateformes cloud, IronPDF simplifie le déploiement dans divers environnements.
Où GemBox.Pdf excelle
GemBox.Pdf montre ses points forts dans ces domaines :
1. Manipulation PDF bas niveau
Lorsque le contrôle précis de la structure PDF est requis, l'approche orientée objet de GemBox.Pdf offre un accès direct aux éléments, flux et dictionnaires PDF.
2. Applications orientées formulaires
Pour les applications travaillant intensivement avec des formulaires PDF, GemBox.Pdf propose une manipulation complète des champs de formulaire, y compris la création de formulaires interactifs complexes par programmation.
3. Besoins en OCR
Avec des capacités d'OCR intégrées, GemBox.Pdf peut extraire le texte de documents scannés sans nécessiter de bibliothèques supplémentaires, ce qui le rend adapté aux projets de numérisation de documents.
4. Développement mobile
Le support natif des plateformes Android et iOS fait de GemBox.Pdf un bon choix pour les applications mobiles nécessitant des fonctionnalités PDF.
5. Modification de PDF existants
Lorsque l'on travaille principalement avec des PDF existants plutôt que de générer de nouveaux, les outils de GemBox.Pdf pour l'extraction, la manipulation et la modification sont bien adaptés à la tâche.
Comment l'installation et la configuration se comparent-elles ?
Les deux bibliothèques offrent une installation simple via NuGet, mais avec des niveaux de complexité différents.
Installer IronPDF
L'installation d'IronPDF est remarquablement simple :
PM > Install-Package IronPdf
Ou via le .NET CLI :
> dotnet add package IronPdf
Le package inclut tout ce qui est nécessaire, y compris le moteur de rendu Chrome. Aucune configuration supplémentaire ou dépendance n'est requise pour la plupart des cas d'utilisation.
Pour des scénarios de déploiement spécifiques, IronPDF offre :
IronPdf.Slim: Paquet léger qui télécharge des composants spécifiques à la plateforme au moment de l'exécutionIronPdf.Linux: Préconfiguré pour les déploiements LinuxIronPdf.MacOs: Optimisé pour les environnements macOS
Installation de GemBox.Pdf
L'installation de GemBox.Pdf est tout aussi simple pour la manipulation PDF de base :
PM > Install-Package GemBox.Pdf
Cependant, pour la conversion HTML en PDF, vous aurez besoin de :
PM > Install-Package GemBox.Document
Licences IronPDF
// IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY";
// GemBox.Pdf
ComponentInfo.SetLicense("YOUR-LICENSE-KEY");' IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY"
' GemBox.Pdf
ComponentInfo.SetLicense("YOUR-LICENSE-KEY")Quelles sont les différences de licence et de prix ?
Comprendre les modèles de licence aide à déterminer le coût total de possession pour chaque solution.
Licence IronPDF
IronPDF offre des licences transparentes à plusieurs niveaux (tarificatives à partir d'avril 2026) :
-
Lite License: $999
- 1 développeur
- 1 projet
- 1 an de support et de mises à jour
-
Plus License: $1,499
- 3 développeurs
- 3 projets
- 1 an de support et de mises à jour
-
Professional License: $2,399
- 10 développeurs
- 10 projets
- 1 an de support et de mises à jour
Options Supplémentaires :
- Redistribution libre de droits : +$1,999
- Licences SaaS/OEM disponibles
- Iron Suite bundle: $2,998 for 10 products
Principaux avantages :
- Garantie de remboursement sous 30 jours
- Licences perpétuelles (achat unique)
- Développement et tests gratuits
- Déploiement vers dev/staging/production inclus
Licences GemBox.Pdf
GemBox propose des licences par développeur (à partir d'avril 2026) :
- Single Developer: $890
- 1 développeur
- Projets illimités
- 1 an de support et de mises à jour
- Déploiement sans redevance inclus
Considérations importantes :
- Remise de 40 % sur les renouvellements (60 % si renouvelé avant l'expiration)
- GemBox Bundle: $2,200 for 1 developer (6 products)
Principaux avantages :
- Garantie de remboursement sous 30 jours
- Licences perpétuelles
- Déploiement illimité inclus
- Aucun serveur ou licence OEM requise
Comparaison des coûts pour des scénarios courants
|Scénario|Coût IronPDF|Coût GemBox.Pdf | |----------|--------------|-----------------| |Développeur unique, HTML vers PDF| $999 | $890 | |3 développeurs, manipulation de PDF uniquement| $1,499 | $4,450 (jusqu'à 10 développeurs) | |3 développeurs, HTML vers PDF| $1,499 | $4,450 (jusqu'à 10 développeurs) | |Entreprise (10 développeurs), fonctionnalités complètes| $2,399 | $4,450 |
Quelle bibliothèque devriez-vous choisir ?
Le choix entre IronPDF et GemBox.Pdf dépend de vos besoins spécifiques :
Choisissez IronPDF lorsque :
- La configuration riche HTML vers PDF est une priorité : IronPDF offre une API étendue pour les en-têtes/pieds, les délais de rendu JavaScript, les paramètres de fenêtre graphique, la sécurité PDF, et les métadonnées — tout cela au sein d'une bibliothèque unifiée
- Vous avez besoin d'une intégration de framework profondément documentée : Guides officiels et exemples testés pour Bootstrap, Tailwind CSS, Chart.js, et d'autres frameworks web
- Un développement rapide est important : Des méthodes API simples et de haut niveau comme
RenderHtmlAsPdf()réduisent le temps de mise sur le marché - Le déploiement multiplateforme est nécessaire : Excellent support pour les environnements cloud et conteneurisés, avec des packages dédiés Linux et macOS
- Le budget est une considération : Coût d'entrée plus bas et ensemble de fonctionnalités étendu d'une bibliothèque unique
Choisissez GemBox.Pdf lorsque :
- Un contrôle de bas niveau des PDF est essentiel : accès direct aux objets et à la structure des PDF.
- Prise en charge des plateformes mobiles requise : compatibilité native avec Android et iOS
- La reconnaissance optique de caractères (OCR) est une exigence fondamentale : OCR intégrée sans dépendances supplémentaires Vous travaillez principalement avec des fichiers PDF existants : fonctionnalités avancées de manipulation et d'extraction.
- Le déploiement illimité est important : Redistribution libre de droits incluse sans coût supplémentaire
Considérez l'utilisation des deux bibliothèques lorsque :
Certaines organisations trouvent de la valeur à utiliser les deux bibliothèques pour différentes parties de leur application :
- IronPDF pour la génération de rapports et la conversion HTML en PDF
- GemBox.Pdf pour le traitement des formulaires et la manipulation de PDF
Commencer avec votre bibliothèque choisie
Les deux bibliothèques offrent des essais gratuits pour évaluer leurs capacités :
Essayez IronPDF
- Installez le package NuGet
- Pas de clé de licence nécessaire pour le développement
- Des filigranes apparaissent sur les PDFs en mode d'essai
- Accès complet aux fonctionnalités pendant l'évaluation
Téléchargez l'essai gratuit d'IronPDF
Essayez GemBox.Pdf
- Installez le package NuGet
- Utilisez
ComponentInfo.SetLicense("FREE-LIMITED-KEY") - Limité à 2 pages en mode gratuit
- Mettez à niveau pour supprimer les limitations
Guide d'installation visuel
Pour les développeurs préférant l'interface graphique de Visual Studio, voici un guide étape par étape pour installer les deux bibliothèques :
Créer un nouveau projet ASP.NET
Dialogue de nouveau projet de Visual Studio pour créer une Application Web ASP.NET - la base des projets de génération de PDF
Sélectionner Web Forms comme modèle de projet - adapté aux implémentations d'IronPDF et de GemBox.Pdf
Installation de bibliothèques PDF via NuGet
Cliquez avec le bouton droit de la souris sur votre projet dans l'explorateur de solutions pour accéder au gestionnaire de packages NuGet pour l'installation de la bibliothèque
Accès alternatif au Package Manager NuGet via le menu Projet de Visual Studio
Installation d'IronPDF via le Package Manager NuGet - notez la description complète des fonctionnalités et le nombre de téléchargements
Méthodes d'installation alternatives
Le site Web d'IronPDF propose des téléchargements directs de DLL pour les scénarios où l'installation via NuGet n'est pas appropriée
Conclusion
IronPDF et GemBox.Pdf sont deux bibliothèques PDF de qualité pour les développeurs .NET, chacune ayant des forces distinctes. Les deux bibliothèques incluent la conversion HTML en PDF basée sur Chromium ; IronPDF se distingue par une API de configuration plus riche, une documentation plus approfondie pour les frameworks web, et un ensemble de fonctionnalités plus large au sein d'un seul package. GemBox.Pdf se distingue dans la manipulation PDF de bas niveau, le support des plateformes mobiles, et l'OCR intégré — ce qui le rend bien adapté aux applications nécessitant un contrôle précis de la structure PDF.
Pour les développeurs web et les équipes construisant des applications modernes qui veulent un flux de travail HTML-en-PDF extensivement documenté et hautement configurable, l'API unifiée d'IronPDF et le support étendu de l'écosystème réduisent le temps de développement et la complexité.
Cependant, GemBox.Pdf reste un choix solide pour les scénarios spécialisés, notamment le développement mobile et les applications axées sur le traitement des formulaires PDF ou les exigences OCR.
Prêt à transformer votre contenu HTML en PDF professionnel ? Commencez avec l'essai gratuit d'IronPDF et découvrez la puissance du rendu de qualité Chrome dans vos applications .NET. Avec une documentation complète, de nombreux exemples de code et un support réactif, vous générerez des PDF en minutes, pas en heures.

Jacob Mellor is Chief Technology Officer at Iron Software and a visionary engineer pioneering C# PDF technology. As the original developer behind Iron Software's core codebase, he has shaped the company's product architecture since its inception, transforming it alongside CEO Cameron Rimington into a 50+ person company serving NASA, Tesla, and global government agencies.
Related Articles


