PDFSharp vs IronPDF : Guide de comparaison technique
PDFSharpvsIronPDF: Dessin de bas niveau vs génération de PDF basés sur HTML en .NET
Lorsque les développeurs .NET ont besoin de créer des documents PDF par programmation, ils envisagent généralement d'utiliserPDFSharpet IronPDF.PDFSharpa été un choix populaire pour créer des PDF grâce à une approche de dessin basée sur les coordonnées, tandis qu'IronPDF offre une conversion HTML vers PDF avec un support CSS moderne. Cette comparaison examine les deux bibliothèques, en analysant leurs différences architecturales, leurs modèles d'API et leur adéquation à différents scénarios de développement.
Qu'est-ce que PDFSharp?
PDFSharp est une bibliothèque de création de PDF de bas niveau qui permet aux développeurs de générer des documents PDF par le biais d'une approche programmatique et coordonnée. Publié sous la licence MIT,PDFSharpoffre à la communauté des développeurs la liberté d'utilisation et de modification sans frais de licence.
PDFSharp est avant tout un outil permettant de dessiner et de compiler des PDF à partir de zéro. La bibliothèque utilise une API de type GDI+ dans laquelle les développeurs positionnent chaque élément à l'aide de coordonnées X,Y. Cette approche nécessite de calculer les positions exactes du texte, des images, des lignes et des rectangles, un peu comme lorsqu'on dessine sur un canevas.
Les principales caractéristiques dePDFSharpsont les suivantes
- Dessin basé sur les coordonnées : chaque élément nécessite un positionnement X,Y explicite
- Licence MIT : Libre d'utilisation, de modification et de distribution
- GDI+ Style API : Utilise les classes
XGraphics,XFont,XBrushetXPen - Gestion manuelle des pages : Les développeurs gèrent manuellement la création et le débordement des pages
- Pas de support HTML : Impossible de convertir directement HTML/CSS en PDF
- Lightweight : Pas de dépendances externes, simplifie le déploiement
PDFSharp est parfois considéré à tort comme un convertisseur HTML-PDF, ce qui n'est pas le cas. L'objectif est uniquement la création programmatique de documents PDF. Bien qu'il existe un module complémentaire, HtmlRenderer.PdfSharp, destiné à fournir des capacités de rendu HTML, il ne prend en charge que le CSS 2.1, sans prendre en charge les fonctionnalités CSS modernes telles que flexbox et grid, et présente des limitations telles que le rendu de tableaux brisés.
Qu'est-ce qu'IronPDF?
IronPDF est une bibliothèque .NET complète qui permet la conversion native de HTML en PDF à l'aide d'un moteur de rendu Chromium intégré. La classe ChromePdfRenderer convertit le contenu HTML avec une prise en charge complète de HTML5, CSS3 et JavaScript, y compris des fonctionnalités de mise en page modernes telles que flexbox et grid.
Contrairement à l'approche basée sur les coordonnées de PDFSharp,IronPDFpermet aux développeurs d'exploiter les technologies web pour la création de documents. Au lieu de calculer les positions X,Y, les développeurs écrivent du HTML et du CSS pour définir la structure et le style du document. Le moteur Chromium gère automatiquement le flux de texte, les sauts de page et le positionnement des éléments.
Comparaison d'architecture
La différence fondamentale entrePDFSharpet IronPdf réside dans leur approche de la création de documents : dessin manuel basé sur les coordonnées contre rendu basé sur HTML.
| Aspect | PDFSharp | IronPDF |
|---|---|---|
| Création de documents | Dessin à base de coordonnées | Modèles HTML/CSS |
| Système de mise en page | Positionnement manuel X,Y | CSS Flow/Flexbox/Grid |
| Sauts de page | Calcul manuel | Automatique + contrôle CSS |
| Tables | Dessiner des cellules individuellement | HTML <table> |
| Styling | Polices/couleurs basées sur le code | Feuilles de style CSS |
| Maintenance | Difficile à modifier | Édition de HTML/CSS |
| Courbe d'apprentissage | Connaissances GDI+ requises | Transfert de compétences dans le domaine du web |
| Support HTML vers PDF | Non | Oui (prise en charge de HTML5/CSS3) |
| Support CSS moderne | Non (CSS 2.1 uniquement via addon) | Oui (CSS3 complet) |
| Licence | MIT (gratuit) | Commercial |
| Mises à jour | Peu fréquents | Régulièrement |
Pour les développeurs ayant une expérience du développement web, l'approche d'IronPDF basée sur le HTML transfère les compétences existantes à la génération de PDF. Pour les développeurs qui ont besoin d'un contrôle fin sur les pixels individuels ou qui viennent d'horizons GDI+,PDFSharpoffre des modèles familiers.
Conversion HTML en PDF
La conversion d'un contenu HTML en PDF démontre l'écart fondamental entre les capacités de ces bibliothèques.
L'approche HTML-PDFSharp:
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
//PDFSharpdoes not have built-in HTML to PDF conversion
// You need to manually parse HTML and render content
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Arial", 12);
// Manual text rendering (no HTML support)
gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormats.TopLeft);
document.Save("output.pdf");
}
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
//PDFSharpdoes not have built-in HTML to PDF conversion
// You need to manually parse HTML and render content
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Arial", 12);
// Manual text rendering (no HTML support)
gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormats.TopLeft);
document.Save("output.pdf");
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
L'approcheIronPDFHTML-to-PDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
//IronPDFhas native HTML to PDF rendering
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello from IronPDF</h1><p>Easy HTML to PDF conversion</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
//IronPDFhas native HTML to PDF rendering
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello from IronPDF</h1><p>Easy HTML to PDF conversion</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
PDFSharp ne peut pas convertir HTML en PDF. La bibliothèque nécessite un rendu manuel où les développeurs doivent analyser eux-mêmes le code HTML et dessiner chaque élément à l'aide de coordonnées. Le ChromePdfRenderer d'IronPDF accepte nativement les chaînes HTML et les rend avec un support CSS complet grâce au moteur Chromium intégré.
Cette différence de capacité a un impact significatif sur le temps de développement. La création d'un document stylisé dansPDFSharpnécessite de calculer les positions de chaque élément, alors que les développeurs IronPdf écrivent du HTML/CSS standard. Pour obtenir des conseils détaillés sur la conversion de HTML en PDF, consultez le tutoriel HTML en PDF.
Ajouter du texte à des PDF existants
La modification de PDF existants pour y ajouter du texte montre différentes approches de la manipulation de documents.
PDFSharp ajouter du texte au PDF:
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
// Open existing PDF
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
PdfPage page = document.Pages[0];
// Get graphics object
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Arial", 20, XFontStyle.Bold);
// Draw text at specific position
gfx.DrawString("Watermark Text", font, XBrushes.Red,
new XPoint(200, 400));
document.Save("modified.pdf");
}
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
// Open existing PDF
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
PdfPage page = document.Pages[0];
// Get graphics object
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Arial", 20, XFontStyle.Bold);
// Draw text at specific position
gfx.DrawString("Watermark Text", font, XBrushes.Red,
new XPoint(200, 400));
document.Save("modified.pdf");
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
IronPDF ajouter du texte au PDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
// Open existing PDF
var pdf = PdfDocument.FromFile("existing.pdf");
// Add text stamp/watermark
var textStamper = new TextStamper()
{
Text = "Watermark Text",
FontSize = 20,
Color = IronSoftware.Drawing.Color.Red,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
pdf.ApplyStamp(textStamper);
pdf.SaveAs("modified.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
// Open existing PDF
var pdf = PdfDocument.FromFile("existing.pdf");
// Add text stamp/watermark
var textStamper = new TextStamper()
{
Text = "Watermark Text",
FontSize = 20,
Color = IronSoftware.Drawing.Color.Red,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
pdf.ApplyStamp(textStamper);
pdf.SaveAs("modified.pdf");
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
PDFSharp utilise PdfReader.Open()pour charger un PDF existant, puis obtient un objet XGraphics pour dessiner du texte à des coordonnées X,Y spécifiques à l'aide de DrawString(). Le développeur doit calculer le positionnement exact.
IronPDF utilise PdfDocument.FromFile()pour charger le PDF, puis crée un objet TextStamper avec des propriétés d'alignement telles que VerticalAlignment.Middle et HorizontalAlignment.Center. La méthode ApplyStamp() gère le positionnement en fonction de ces paramètres d'alignement. Pour connaître l'ensemble des options de filigrane, consultez la documentation sur les filigranes.
Créer des PDF avec des images
L'ajout d'images aux PDF démontre les différents paradigmes entre les approches basées sur les coordonnées et celles basées sur HTML.
PDFSharp créer un PDF avec une image:
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
// Create new PDF document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Load and draw image
XImage image = XImage.FromFile("image.jpg");
// Calculate size to fit page
double width = 200;
double height = 200;
gfx.DrawImage(image, 50, 50, width, height);
// Add text
XFont font = new XFont("Arial", 16);
gfx.DrawString("Image in PDF", font, XBrushes.Black,
new XPoint(50, 270));
document.Save("output.pdf");
}
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
// Create new PDF document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Load and draw image
XImage image = XImage.FromFile("image.jpg");
// Calculate size to fit page
double width = 200;
double height = 200;
gfx.DrawImage(image, 50, 50, width, height);
// Add text
XFont font = new XFont("Arial", 16);
gfx.DrawString("Image in PDF", font, XBrushes.Black,
new XPoint(50, 270));
document.Save("output.pdf");
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
IronPDF créant des PDF avec image :
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create PDF from HTML with image
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Image in PDF</h1>
<img src='image.jpg' style='width:200px; height:200px;' />
<p>Easy image embedding with HTML</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Alternative: Add image to existing PDF
var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>");
var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg"))
{
VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
};
existingPdf.ApplyStamp(imageStamper);
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create PDF from HTML with image
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Image in PDF</h1>
<img src='image.jpg' style='width:200px; height:200px;' />
<p>Easy image embedding with HTML</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Alternative: Add image to existing PDF
var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>");
var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg"))
{
VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
};
existingPdf.ApplyStamp(imageStamper);
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
PDFSharp nécessite le chargement de l'image avec XImage.FromFile(), puis son dessin à des coordonnées spécifiques à l'aide de gfx.DrawImage(image, x, y, width, height). Le texte doit être positionné par rapport à l'image à l'aide de coordonnées calculées.
IronPDF permet d'intégrer des images à l'aide des balises HTML standard <img> avec un style CSS. Le moteur Chromium gère le chargement, la taille et le positionnement des images grâce aux propriétés CSS. Par ailleurs, ImageStamper permet d'ajouter des images à des PDF existants grâce à un positionnement basé sur l'alignement.
Référence de mappage d'API
Pour les équipes qui évaluent la migration dePDFSharpvers IronPDF, la compréhension des mappages d'API permet d'estimer l'effort de développement.
Classes de base
| PDFSharp | IronPDF | Notes |
|---|---|---|
new PdfDocument() |
ChromePdfRenderer.RenderHtmlAsPdf() |
Créer à partir de HTML |
document.AddPage() |
Automatique | Pages créées à partir de contenu HTML |
XGraphics.FromPdfPage() |
Pas nécessaire | Utiliser des éléments HTML |
document.Save() |
pdf.SaveAs() |
Fonctionnalités similaires |
PdfReader.Open() |
PdfDocument.FromFile() |
Ouvrir le PDF existant |
document.Pages.Count |
pdf.PageCount |
Nombre de pages |
Mise en correspondance des éléments dessinés et HTML
| API PDFSharp | IronPDFéquivalent HTML | Notes |
|---|---|---|
XGraphics.DrawString() |
HTML <p>, <h1>, etc. |
Position avec CSS |
XGraphics.DrawImage() |
HTML <img> balise |
Position avec CSS |
XGraphics.DrawLine() |
Bordures CSS ou SVG | <hr> ou bordures CSS |
XGraphics.DrawRectangle() |
CSS ou SVG | <div> avec bordures |
XFont |
CSS font-family, font-size |
CSS standard |
XBrush, XPen |
Couleurs/bordures CSS | color, background-color |
XRect |
Positionnement CSS | margin, padding, width, height |
Modifications de l'espace de nommage
| PDFSharp | IronPDF |
|---|---|
PdfSharp.Pdf |
IronPDF |
PdfSharp.Drawing |
Pas nécessaire (utiliser HTML/CSS) |
PdfSharp.Pdf.IO |
IronPDF |
Le changement le plus important est l'élimination de PdfSharp.Drawing-IronPDF remplace le dessin basé sur les coordonnées par des mises en page HTML/CSS.
Le problème du calcul des coordonnées
L'approche GDI+ dePDFSharpentraîne une surcharge de développement importante :
- Calculer les positions X,Y exactes pour chaque élément : chaque bloc de texte, image et forme nécessite un positionnement manuel
- Suivre manuellement la hauteur du contenu en cas de débordement de la page : Les développeurs doivent détecter si le contenu dépasse les limites de la page
- Gérer vous-même le retour à la ligne et la mesure du texte : Les textes longs nécessitent de calculer où couper les lignes
- Dessiner des tableaux cellule par cellule avec calcul des bordures : chaque cellule de tableau nécessite un positionnement et un tracé de bordures individuels
- Gérer des documents de plusieurs pages avec des sauts de page manuels : La détection et la gestion des limites de page sont manuelles
IronPDF élimine ces préoccupations en s'appuyant sur le moteur de mise en page Chromium. Le texte s'écoule naturellement, les tableaux se redimensionnent automatiquement et les sauts de page se produisent aux endroits appropriés, le tout contrôlé par des feuilles de style CSS standard.
Résumé de la comparaison des fonctionnalités
| Fonction | PDFSharp | IronPDF |
|---|---|---|
| Licence | MIT (gratuit) | Commercial |
| Support HTML vers PDF | Non | Oui (prise en charge de HTML5/CSS3) |
| Support CSS moderne | Non (CSS 2.1 uniquement) | Oui (CSS3 complet) |
| Document API | Bas niveau (nécessite des coordonnées) | Haut niveau (API simplifiée) |
| Support Flexbox/Grid | Non | Oui |
| Sauts de page automatiques | Non (Manuel) | Oui |
| Mises à jour | Peu fréquents | Régulièrement |
| Dépendances externes | Aucun | Moteur Chromium |
| Mesure du texte | Manuel via MeasureString() |
Automatique |
| Table Rendering | Manuel cellule par cellule | HTML <table> |
Les applications nécessitant des mises en page CSS modernes, une pagination automatique ou une génération basée sur des modèles HTML bénéficient considérablement de l'approche d'IronPDF.
Quand les équipes envisagent de passer dePDFSharpà IronPDF
Plusieurs facteurs poussent les équipes à évaluerIronPDFcomme alternative àPDFSharp:
Réduction du temps de développement :PDFSharpnécessite le calcul des positions X,Y pour chaque élément. Les équipes qui consacrent beaucoup de temps au calcul des coordonnées et à la gestion des sauts de page trouvent souvent que la génération basée sur HTML/CSS est beaucoup plus rapide.
Exigences CSS modernes :PDFSharpne peut pas rendre les fonctionnalités CSS modernes telles que flexbox, grid ou les sélecteurs CSS3. Les applications nécessitant des mises en page web contemporaines doivent utiliser le moteur Chromium d'IronPDF.
Problèmes de maintenabilité : Le codePDFSharpbasé sur les coordonnées est difficile à modifier - la modification d'un élément nécessite souvent l'ajustement des positions des éléments suivants. Les modèles HTML/CSS sont beaucoup plus faciles à mettre à jour.
Transfert de compétences en développement web : les équipes ayant une expertise en HTML/CSS peuvent appliquer leurs compétences existantes à la génération de PDF avec IronPDF, plutôt que d'apprendre les API de dessin de type GDI+.
Exigences relatives aux documents complexes : Les documents contenant des tableaux, des contenus mixtes ou des mises en page dynamiques deviennent de plus en plus difficiles à traduire avec un positionnement basé sur les coordonnées. Les modèles HTML gèrent la complexité de manière plus naturelle.
Nécessité d'une maintenance active :PDFSharpfait l'objet de mises à jour peu fréquentes. Les équipes nécessitant des correctifs de sécurité et des mises à jour de fonctionnalités régulières bénéficient du développement actif d'IronPDF.
Comparaison d'installation
Installation de PDFSharp:
Install-Package PdfSharp
Install-Package PdfSharp
Léger et sans dépendances externes.
Installation d'IronPDF:
Install-Package IronPdf
Install-Package IronPdf
IronPDF nécessite la configuration d'une clé de licence :
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Le moteur Chromium d'IronPDF offre des capacités de rendu complètes, mais se traduit par un encombrement plus important que l'approche légère de PDFSharp. La bibliothèque prend en charge .NET Framework, .NET Core, .NET 5+, ainsi que la compatibilité ascendante vers .NET 10 et C# 14.
Prise de décision
Le choix entrePDFSharpetIronPDFdépend des exigences de votre projet :
<Pensez àPDFSharpsi : votre projet nécessite un contrôle précis du rendu des documents sans dépendances supplémentaires, les contraintes budgétaires interdisent les licences commerciales, vous êtes à l'aise avec le positionnement basé sur les coordonnées et vos documents ne nécessitent pas de rendu HTML/CSS.
ConsidérezIronPDFsi : Vous avez besoin d'une conversion moderne de HTML en PDF avec prise en charge de CSS3, votre équipe a des compétences en développement web à exploiter, vous voulez un flux de texte automatique, des tableaux et une gestion des sauts de page, la réduction du temps de développement est importante, ou vous avez besoin d'une maintenance et d'un support actifs.
Commencer avec IronPDF
Pour évaluerIronPDFpour vos besoins en matière de génération de PDF :
- Installation via NuGet :
Install-Package IronPdf - Passez en revue la documentation de démarrage
- Explorez tutoriels de conversion de HTML en PDF pour connaître les modèles de conversion
- Consultez la référence de l'API pour obtenir la documentation complète de la méthode
Les tutoriels IronPDF fournissent des exemples complets couvrant des scénarios courants, de la conversion de base à la manipulation avancée des PDF.
Conclusion
PDFSharp etIronPDFrépondent à des besoins différents dans le domaine de la génération de PDF .NET.PDFSharpconvient aux projets nécessitant un contrôle précis du rendu des documents sans dépendances supplémentaires, lorsque les contraintes budgétaires sont un facteur et que le dessin basé sur les coordonnées est acceptable. Cependant, elle n'est pas à la hauteur pour les projets nécessitant des normes web modernes ou un contenu dynamique fourni via HTML.
IronPDF surpassePDFSharpdans les situations nécessitant une conversion moderne de HTML en PDF, grâce à ses fonctionnalités robustes prenant en charge CSS3, HTML5 et la manipulation de documents de haut niveau. Bien qu'il s'agisse d'une licence commerciale, l'augmentation de la productivité et les capacités modernes justifient souvent l'investissement.
La compréhension des exigences de votre projet - qu'il s'agisse de contraintes de coûts, de la nécessité d'un support web moderne ou d'une conception complexe des documents - guidera le choix entre ces deux offres de bibliothèques. La nature coordonnée dePDFSharpcrée des frais généraux de développement que l'approche HTML d'IronPdf élimine, mais la licence MIT dePDFSharpet son empreinte légère restent attrayantes pour les cas d'utilisation appropriés.
Évaluez l'ensemble de vos exigences - besoins en matière de support HTML/CSS, calendrier de développement, considérations relatives à la maintenance et budget - avant de choisir entre ces bibliothèques. Les différences architecturales sont fondamentales et ont un impact sur tous les aspects du flux de travail de la génération de PDF.