Guide 2025 : Meilleures bibliothèques PDF C# (Gratuit d'abord, Payant quand nécessaire
Quand la plupart des gens pensent au format PDF (Portable Document Format), ils pensent à un fichier rempli d'informations. Et ils ont raison, car actuellement, le format PDF est le format de fichier le plus couramment utilisé pour le partage d'informations et est devenu une norme. Mais lorsque les programmeurs consultent les fichiers PDF, ils ne voient pas seulement des informations ; Ils analysent le format, le type de contenu et d'autres aspects techniques.
Lors de la création de fichiers PDF par programmation, la préservation de la structure du contenu est la tâche la plus importante. Et ce n'est pas une tâche aussi simple qu'il n'y paraît, car lorsque nous parlons de contenu, nous ne entendons pas seulement du texte, mais aussi des images, des graphiques, de l'audio et même des vidéos. De plus, la modification programmatique des fichiers PDF est désormais une exigence courante.
À l'ère de l'IA, nous voulons avoir un contrôle total sur les PDF. Il nous arrive parfois de devoir expurger du texte pour des raisons de conformité à une politique particulière, de protéger les fichiers PDF afin de sécuriser les données sensibles, d'extraire des données pour traitement ou de générer des rapports de manière dynamique. Ces processus ont de nombreuses applications. Voici les problèmes fréquemment rencontrés par les développeurs lors du traitement programmatique des fichiers PDF :
-
Comment conserver une mise en page formatée pour un document PDF tout en gérant tous types de contenus multimédias
-
Extraire le texte dans le bon ordre, notamment s'il est disposé en colonnes.
-
Contraintes de mémoire lors du traitement de documents PDF comportant un grand nombre de pages
-
La gestion des formulaires est un problème majeur rencontré par les développeurs.
- Conversion des fichiers PDF en d'autres types de documents appropriés
Pour faciliter cette tâche, les bibliothèques PDF entrent en jeu. Dans cet article, nous aborderons plusieurs bibliothèques PDF C# telles qu'IronPDF et Aspose.PDF, ainsi que leurs modèles de tarification. Nous allons explorer les cas d'utilisation pratiques et comprendre comment ces bibliothèques rendent la création et la manipulation de PDF faciles et prêtes pour la production en quelques étapes seulement.
1. IronPDF : Bibliothèque PDF C
IronPDF est une bibliothèque PDF .NET complète que les développeurs peuvent utiliser pour créer, modifier et convertir des documents PDF en tout autre format, et effectuer de nombreuses autres opérations PDF. Il utilise très peu de mémoire lors du traitement de fichiers PDF volumineux. Il fonctionne entièrement sur votre machine locale, vous n'avez donc pas besoin du traitement au niveau du serveur pour l'utiliser.
Cette bibliothèque est également compatible avec la dernière version du framework .NET, et son intégration aux projets .NET est très fluide. Il vous suffit d'exécuter la commande suivante dans le gestionnaire de packages NuGet, et IronPDF sera prêt à être utilisé dans le projet :
Install-Package IronPdf
Vous n'avez pas besoin d'installer d'autre bibliothèque, car elle est totalement indépendante des dépendances externes. Lorsque vous installez cette bibliothèque, elle installe automatiquement toutes les dépendances requises en une seule fois.
La caractéristique la plus importante d'IronPDF est sa capacité à convertir du HTML en PDF avec une précision au pixel près . IronPDF propose plusieurs méthodes pour créer des documents PDF à partir de contenu HTML. Vous pouvez convertir directement une chaîne HTML, un fichier HTML ou une URL en PDF. Il prend également en charge CSS et JavaScript afin de garantir que les documents PDF générés reflètent fidèlement le rendu HTML original.
Au-delà des opérations de base, IronPDF prend en charge les formulaires PDF, le chiffrement à tous les niveaux et l'ajout de signatures numériques. Vous pouvez extraire des images et du texte à partir de fichiers PDF. Vous pouvez également ajouter des en-têtes et des pieds de page en texte ou en HTML, fusionner et diviser des PDF, modifier plusieurs segments de texte, et rechercher et remplacer du texte. IronPDF prend non seulement en charge la création de PDF à partir de HTML, mais aussi la conversion en PDF à partir de fichiers DOCX, RTF, MD et d'images. Cette bibliothèque est très légère et très efficace en matière de gestion de la mémoire ( moins de 10 Mo de mémoire requis pour les opérations de base ). IronPDF suit ses étapes clés en matière de stabilité et de performance, que vous pouvez consulter ici .
IronPDF propose plusieurs niveaux d'assistance. Vous pouvez contacter les ingénieurs par chat en direct, création de ticket ou e-mail. L'équipe d'assistance est disponible 24h/24 et 7j/7. IronPDF propose également des tutoriels et une documentation détaillés qui couvrent la quasi-totalité des sujets que vous pourriez souhaiter comprendre ou sur lesquels vous pourriez avoir des questions.
IronPDF est une bibliothèque prête à l'emploi qui a été testée, optimisée et approuvée par de nombreuses entreprises renommées pour leurs produits en production. Cela en fait l'une des meilleures bibliothèques PDF à utiliser dans vos projets pour les opérations PDF. Examinons les exemples de code de la bibliothèque IronPDF.
Exemples de code
Convertir HTML en PDF
using IronPdf;
var renderer = new ChromePdfRenderer();
// 1. HTML String to PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf1.SaveAs("html-string.pdf");
// 2. HTML String with Assets (Images, CSS, JS)
var pdf2 = renderer.RenderHtmlAsPdf(
"<img src='logo.png'><link rel='stylesheet' href='style.css'>",
@"C:\assets\"
);
pdf2.SaveAs("html-with-assets.pdf");
// 3. HTML File to PDF
var pdf3 = renderer.RenderHtmlFileAsPdf("example.html");
pdf3.SaveAs("html-file.pdf");
// 4. URL to PDF
var pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf4.SaveAs("url.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// 1. HTML String to PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf1.SaveAs("html-string.pdf");
// 2. HTML String with Assets (Images, CSS, JS)
var pdf2 = renderer.RenderHtmlAsPdf(
"<img src='logo.png'><link rel='stylesheet' href='style.css'>",
@"C:\assets\"
);
pdf2.SaveAs("html-with-assets.pdf");
// 3. HTML File to PDF
var pdf3 = renderer.RenderHtmlFileAsPdf("example.html");
pdf3.SaveAs("html-file.pdf");
// 4. URL to PDF
var pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf4.SaveAs("url.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
Extraire du texte et des images de fichiers PDF
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Load PDF document
var pdf = PdfDocument.FromFile("sample.pdf");
// 1. Extract All Text
string allText = pdf.ExtractAllText();
// 2. Extract Text from Specific Page
string pageText = pdf.ExtractTextFromPage(0);
// 3. Extract Text from Multiple Pages
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
}
// 4. Extract All Images
var allImages = pdf.ExtractAllImages();
foreach (var image in allImages)
{
image.SaveAs($"image_{allImages.IndexOf(image)}.png");
}
// 5. Extract Images from Specific Page
List<AnyBitmap> pageImages = pdf.ExtractBitmapsFromPage(0);
// 6. Extract Raw Images (as byte arrays)
var rawImages = pdf.ExtractAllRawImages();
for (int i = 0; i < rawImages.Count; i++)
{
System.IO.File.WriteAllBytes($"raw_image_{i}.png", rawImages[i]);
}
// 7. Extract Both Text & Images from Each Page
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
Console.WriteLine($"Found {images.Count} images");
}
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Load PDF document
var pdf = PdfDocument.FromFile("sample.pdf");
// 1. Extract All Text
string allText = pdf.ExtractAllText();
// 2. Extract Text from Specific Page
string pageText = pdf.ExtractTextFromPage(0);
// 3. Extract Text from Multiple Pages
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
}
// 4. Extract All Images
var allImages = pdf.ExtractAllImages();
foreach (var image in allImages)
{
image.SaveAs($"image_{allImages.IndexOf(image)}.png");
}
// 5. Extract Images from Specific Page
List<AnyBitmap> pageImages = pdf.ExtractBitmapsFromPage(0);
// 6. Extract Raw Images (as byte arrays)
var rawImages = pdf.ExtractAllRawImages();
for (int i = 0; i < rawImages.Count; i++)
{
System.IO.File.WriteAllBytes($"raw_image_{i}.png", rawImages[i]);
}
// 7. Extract Both Text & Images from Each Page
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
Console.WriteLine($"Found {images.Count} images");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Modifier les documents PDF : En-têtes et pieds de page
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
MaxHeight = 15, // mm
DrawDividerLine = true
};
renderer.RenderingOptions.MarginBottom = 25;
// 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<img src='logo.png'>",
MaxHeight = 20, // mm
BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
renderer.RenderingOptions.MarginTop = 25;
// 3. Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>");
pdf.SaveAs("output.pdf");
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
MaxHeight = 15, // mm
DrawDividerLine = true
};
renderer.RenderingOptions.MarginBottom = 25;
// 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<img src='logo.png'>",
MaxHeight = 20, // mm
BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
renderer.RenderingOptions.MarginTop = 25;
// 3. Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>");
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
Gestion des formulaires
using IronPdf;
// Load existing PDF with form fields
var pdf = PdfDocument.FromFile("EditableForm.pdf");
// Fill text fields
pdf.Form.FindFormField("firstname").Value = "John";
pdf.Form.FindFormField("lastname").Value = "Smith";
pdf.Form.FindFormField("email").Value = "john.smith@example.com";
// Fill radio button
pdf.Form.FindFormField("gender").Value = "Male";
// Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA";
// Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes";
// Fill textarea (use \r\n for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment.\r\nSecond line here.";
// Save filled form
pdf.SaveAs("FilledForm.pdf");
using IronPdf;
// Load existing PDF with form fields
var pdf = PdfDocument.FromFile("EditableForm.pdf");
// Fill text fields
pdf.Form.FindFormField("firstname").Value = "John";
pdf.Form.FindFormField("lastname").Value = "Smith";
pdf.Form.FindFormField("email").Value = "john.smith@example.com";
// Fill radio button
pdf.Form.FindFormField("gender").Value = "Male";
// Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA";
// Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes";
// Fill textarea (use \r\n for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment.\r\nSecond line here.";
// Save filled form
pdf.SaveAs("FilledForm.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
Comme vous pouvez le constater dans les exemples ci-dessus, vous pouvez effectuer n'importe quelle opération sur un fichier PDF en quelques lignes seulement grâce à IronPDF. C'est très simple et direct. Les noms des méthodes sont faciles à comprendre et à mettre en œuvre.
Licence
IronPDF est gratuit pour le développement, et vous pouvez également télécharger la version d'essai gratuite . Mais pour la production, vous devrez acheter une licence pour IronPDF. Le modèle de licence d'IronPDF est flexible, puisqu'il propose deux types de licences :
-
Licence d'abonnement
- Licence perpétuelle
La licence d'abonnement vous coûtera 59 $/mois (facturé annuellement), ce qui comprend 1 développeur, 1 projet et 15 000 appels API par an. Chaque appel API supplémentaire coûte 0,03 $ une fois votre quota dépassé.
La licence perpétuelle est disponible à partir de 749 $ et propose plusieurs options, que vous pouvez choisir en fonction de vos besoins. Le principal avantage de cette licence est qu'il s'agit d'un paiement au temps passé. Vous n'aurez plus à payer pour utiliser IronPDF.

2. Aspose.PDF pour .NET
Aspose.PDF est également une bibliothèque PDF C# développée par Aspose dans le cadre de sa suite de bibliothèques .NET, largement utilisée commercialement pour des tâches liées aux PDF telles que la création de rapports complexes, de documents sensibles, la personnalisation de documents PDF, et bien plus encore. C'est l'une des bibliothèques PDF les plus couramment utilisées pour C#. Il prend également en charge la dernière version du framework .NET.
Aspose.PDF peut créer des documents PDF non seulement à partir du contenu HTML, mais prend également en charge l'extraction de données à partir de fichiers XML pour fournir des données réelles au lieu de créer des fichiers statiques. Cette fonctionnalité est très utile pour la création de rapports complexes. Tout comme avec IronPDF, vous pouvez ajouter du texte, des images, des graphiques et de nombreux autres types de contenu dans les fichiers PDF. Aspose.PDF propose également l'intégration de signatures numériques, la gestion des annotations, les en-têtes et pieds de page, ainsi que l'extraction de texte à partir des fichiers PDF. Vous pouvez extraire les données structurées d'un PDF. Cette bibliothèque gère très bien l'édition de PDF grâce aux fonctionnalités mentionnées.
Outre ces avantages, la bibliothèque Aspose.PDF présente également de nombreux inconvénients. Le principal inconvénient de cette bibliothèque est son prix très élevé (à partir de 1679 $) , et son modèle de tarification est très complexe à comprendre. Contrairement à IronPDF, vous devez acheter le modèle séparément pour chaque processus, comme le développement et le déploiement. De plus, cette bibliothèque est très gourmande en ressources ( plus de 2 Go lors de la génération de PDF contenant plus de 400 images ). Le traitement des fichiers PDF nécessite beaucoup de mémoire, et c'est vraiment frustrant. Cette bibliothèque est sans aucun doute performante dans son domaine, mais sa prise en main est très complexe. Son code n'est pas facile à comprendre et nécessite une session d'apprentissage très détaillée pour être assimilé.
Exemple de Code
Générer des documents PDF avec du texte, des images et des tableaux
using Aspose.Pdf;
using Aspose.Pdf.Text;
using (var document = new Document())
{
// Add page objects
var page = document.Pages.Add();
// Add image - requires Rectangle positioning (You can add tiff images as well)
page.AddImage("logo.png", new Rectangle(20, 730, 120, 830));
// Add text - requires manual positioning
var header = new TextFragment("Company Report");
header.TextState.Font = FontRepository.FindFont("Arial");
header.TextState.FontSize = 24;
header.HorizontalAlignment = HorizontalAlignment.Center;
header.Position = new Position(130, 720);
page.Paragraphs.Add(header);
// Add table - extensive configuration required
var table = new Table
{
ColumnWidths = "100 100 100",
Border = new BorderInfo(BorderSide.Box, 1f, Color.Black),
DefaultCellBorder = new BorderInfo(BorderSide.Box, 0.5f, Color.Gray),
DefaultCellPadding = new MarginInfo(4.5, 4.5, 4.5, 4.5)
};
// Add header row
var headerRow = table.Rows.Add();
headerRow.Cells.Add("Name");
headerRow.Cells.Add("Age");
headerRow.Cells.Add("City");
// Style each header cell individually
foreach (Cell cell in headerRow.Cells)
{
cell.BackgroundColor = Color.LightGray;
cell.DefaultCellTextState.FontSize = 12;
}
// Add data row
var dataRow = table.Rows.Add();
dataRow.Cells.Add("John Doe");
dataRow.Cells.Add("30");
dataRow.Cells.Add("New York");
page.Paragraphs.Add(table);
// Save document
document.Save("Report.pdf");
}
using Aspose.Pdf;
using Aspose.Pdf.Text;
using (var document = new Document())
{
// Add page objects
var page = document.Pages.Add();
// Add image - requires Rectangle positioning (You can add tiff images as well)
page.AddImage("logo.png", new Rectangle(20, 730, 120, 830));
// Add text - requires manual positioning
var header = new TextFragment("Company Report");
header.TextState.Font = FontRepository.FindFont("Arial");
header.TextState.FontSize = 24;
header.HorizontalAlignment = HorizontalAlignment.Center;
header.Position = new Position(130, 720);
page.Paragraphs.Add(header);
// Add table - extensive configuration required
var table = new Table
{
ColumnWidths = "100 100 100",
Border = new BorderInfo(BorderSide.Box, 1f, Color.Black),
DefaultCellBorder = new BorderInfo(BorderSide.Box, 0.5f, Color.Gray),
DefaultCellPadding = new MarginInfo(4.5, 4.5, 4.5, 4.5)
};
// Add header row
var headerRow = table.Rows.Add();
headerRow.Cells.Add("Name");
headerRow.Cells.Add("Age");
headerRow.Cells.Add("City");
// Style each header cell individually
foreach (Cell cell in headerRow.Cells)
{
cell.BackgroundColor = Color.LightGray;
cell.DefaultCellTextState.FontSize = 12;
}
// Add data row
var dataRow = table.Rows.Add();
dataRow.Cells.Add("John Doe");
dataRow.Cells.Add("30");
dataRow.Cells.Add("New York");
page.Paragraphs.Add(table);
// Save document
document.Save("Report.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Vous pouvez constater que le code requis par Aspose.PDF pour créer de nouveaux documents PDF est très complexe. Vous devez définir manuellement chaque coordonnée dans le code lui-même. Vous devez styliser manuellement chaque élément d'objet PDF, ce qui est très long et peu efficace. Il offre toutefois un contrôle précis sur les documents PDF.
Licence
Aspose.PDF propose plusieurs options de licence, mais la plupart sont des paiements à l'utilisation. Le prix de la licence commence à 1679 $. C'est très cher comparé aux options de licence IronPDF (à partir de 749 $).

3. iTextSuite pour .NET
iTextSuite (communément appelé iText7 et iTextSharp) est le SDK pour le développement de PDF proposé par Apryse. Il s'agit d'une suite complète qui comprend tous les outils nécessaires pour effectuer des opérations sur les fichiers PDF dans les applications .NET. À l'instar des bibliothèques mentionnées ci-dessus, vous pouvez créer, modifier, expurger, chiffrer et effectuer de nombreuses autres opérations sur des documents PDF.
iTextSuite gère parfaitement toutes les tâches de création et d'édition de fichiers PDF, qu'il s'agisse de la création de simples factures ou de la mise en page complexe de rapports relatifs aux modules financiers. De plus, il n'est pas gourmand en ressources système et fonctionne parfaitement avec des documents volumineux. Il traite les documents rapidement et vous fournit un résultat sans délai significatif.
Outre toutes ces qualités, iTextSuite présente également quelques inconvénients qu'il est important de connaître avant d'envisager l'utilisation de cette bibliothèque. Le coût de cette bibliothèque serait très élevé par rapport aux alternatives disponibles sur le marché. Son prix initial n'est pas disponible sur sa page de prix. Vous devez contacter le service client pour obtenir un devis. Il propose également une licence AGPL, mais vous devez rendre votre produit open source si vous utilisez iTextSuite sous licence AGPL. À l'instar d'Aspose, son apprentissage est complexe et il n'est pas adapté aux débutants. La manipulation avancée des fichiers PDF nécessite une compréhension détaillée du format PDF et de la structure de la bibliothèque.
Exemple de Code
Créer un tableau PDF avec mise en forme et couleurs
using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
public void CreateStyledTable(string dest)
{
using var writer = new PdfWriter(dest);
using var pdf = new PdfDocument(writer);
var document = new Document(pdf);
// Create a 2-column table
Table table = new Table(2, false);
// Header cells with gray background
Cell cell11 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("State"));
Cell cell12 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Capital"));
// Data cells
Cell cell21 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New York"));
Cell cell22 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Albany"));
Cell cell31 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New Jersey"));
Cell cell32 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Trenton"));
// Add all cells to table
table.AddCell(cell11);
table.AddCell(cell12);
table.AddCell(cell21);
table.AddCell(cell22);
table.AddCell(cell31);
table.AddCell(cell32);
document.Add(table);
document.Close();
}
using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
public void CreateStyledTable(string dest)
{
using var writer = new PdfWriter(dest);
using var pdf = new PdfDocument(writer);
var document = new Document(pdf);
// Create a 2-column table
Table table = new Table(2, false);
// Header cells with gray background
Cell cell11 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("State"));
Cell cell12 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Capital"));
// Data cells
Cell cell21 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New York"));
Cell cell22 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Albany"));
Cell cell31 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New Jersey"));
Cell cell32 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Trenton"));
// Add all cells to table
table.AddCell(cell11);
table.AddCell(cell12);
table.AddCell(cell21);
table.AddCell(cell22);
table.AddCell(cell31);
table.AddCell(cell32);
document.Add(table);
document.Close();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
L'exemple ci-dessus illustre la complexité du code d'iTextSuite. Il accroît le temps de développement et la complexité de la création d'applications de grande envergure.
Licence
iTextSuite propose deux modèles de licence. L'une est commerciale et l'autre est une licence AGPL. Vous pouvez utiliser iTextSuite en production gratuitement sous la licence AGPL, mais vous devrez également rendre votre produit open source. Concernant la licence commerciale, aucun prix n'est mentionné sur la page de licence. Vous devrez demander un devis, ou vous pouvez contacter le service client.

4. PDFSharp
PDFsharp est une solution open source en C# pour les problèmes de PDF rencontrés par les développeurs lors de l'exécution d'opérations PDF par programmation. Il prend en charge les frameworks .NET les plus récents, y compris .NET Core. C'est une solution légère qui couvre tous les besoins de base d'un développeur en matière de fichiers PDF.
PDFSharp peut gérer facilement la plupart des opérations PDF courantes. Vous pouvez créer des documents, insérer des images, dessiner des formes et modifier les polices et les tailles de texte. Vous pouvez placer n'importe quel élément où vous le souhaitez, car PDFSharp vous offre un contrôle total sur le PDF.
Cependant, PDFSharp présente certaines limitations que vous devez connaître. Il ne prend pas en charge nativement la conversion HTML vers PDF, ce qui constitue un inconvénient majeur pour les développeurs car HTML facilite grandement la mise en forme et le positionnement dans les PDF. Ses performances sont affectées lorsqu'il doit traiter plusieurs fichiers volumineux. Vous ne pouvez pas effectuer d'opérations complexes telles que le chiffrement et le remplissage de formulaires. Et il ne dispose d'aucun canal de support officiel. Vous ne pourrez compter que sur la communauté ou sur vos propres compétences en résolution de problèmes si vous rencontrez des difficultés lors de l'utilisation de cette bibliothèque.
Exemple de Code
Création d'un PDF avec plusieurs styles de texte
using PdfSharp.Pdf;
using PdfSharp.Drawing;
// Create document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Example of different font styles
XFont regularFont = new XFont("Arial", 12, XFontStyleEx.Regular);
XFont boldFont = new XFont("Arial", 12, XFontStyleEx.Bold);
XFont italicFont = new XFont("Arial", 12, XFontStyleEx.Italic);
XFont boldItalicFont = new XFont("Arial", 12, XFontStyleEx.BoldItalic);
// Position for the first text
double y = 50;
double x = 50;
double lineHeight = 20;
// Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y);
// Save document
document.Save("FormattedText.pdf");
using PdfSharp.Pdf;
using PdfSharp.Drawing;
// Create document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Example of different font styles
XFont regularFont = new XFont("Arial", 12, XFontStyleEx.Regular);
XFont boldFont = new XFont("Arial", 12, XFontStyleEx.Bold);
XFont italicFont = new XFont("Arial", 12, XFontStyleEx.Italic);
XFont boldItalicFont = new XFont("Arial", 12, XFontStyleEx.BoldItalic);
// Position for the first text
double y = 50;
double x = 50;
double lineHeight = 20;
// Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y);
// Save document
document.Save("FormattedText.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
PDFSharp reste un choix judicieux pour les développeurs qui ont besoin d'une solution légère et gratuite pour la génération de PDF basiques avec un contrôle précis du positionnement. Préparez-vous simplement à contourner ses limitations ou à l'utiliser avec d'autres outils pour des besoins plus avancés.
Licence
PDFSharp est distribué sous la licence MIT et son utilisation est entièrement gratuite. Il vous suffit d'inclure la mention de droit d'auteur originale et de mentionner la licence dans votre distribution.
5. PDFPig
PDFPig est une autre bibliothèque open source conçue pour les développeurs .NET qui permet de lire et d'extraire le contenu des fichiers PDF. Cette bibliothèque extrait la position et la taille des lettres individuelles des documents PDF. Il récupère les images, lit les annotations et les formulaires PDF, accède aux hyperliens et expose les documents intégrés. Vous pouvez également accéder aux métadonnées du document et visualiser la structure interne du PDF.
La bibliothèque obtient de bons résultats aux tests de performance par rapport à des outils .NET similaires et utilise la mémoire efficacement. Elle offre une alternative gratuite aux options commerciales. Il reçoit des mises à jour régulières et dispose d'une documentation GitHub active.
La bibliothèque présente des limitations évidentes que vous devriez connaître. Il ne convertit pas les formats HTML ou autres en PDF. Il ne peut pas générer d'images à partir de pages PDF, bien que des outils distincts comme DocNet ou PDFtoImage puissent pallier cette lacune. Les formulaires PDF sont en lecture seule ; Vous ne pouvez ni modifier ni ajouter de valeurs au formulaire. Pour extraire des tableaux, vous avez besoin d'outils externes comme Tabula Sharp ou Camelot Sharp. Il est impossible d'ajouter ou de modifier des hyperliens lors de la création de documents. Comparée à des bibliothèques plus complètes comme IronPDF, PDFPig offre moins de fonctionnalités et une documentation moins exhaustive.
Exemple de Code
Extraction de texte de base
using System;
using System.Collections.Generic;
using System.Linq;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
public static class Program
{
public static void Main()
{
using (PdfDocument document = PdfDocument.Open(@"C:\path\to\file.pdf"))
{
foreach (Page page in document.GetPages())
{
// Extract all letters
IReadOnlyList<Letter> letters = page.Letters;
string text = string.Join(string.Empty, letters.Select(x => x.Value));
// Extract words
IEnumerable<Word> words = page.GetWords();
// Extract images
IEnumerable<IPdfImage> images = page.GetImages();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
public static class Program
{
public static void Main()
{
using (PdfDocument document = PdfDocument.Open(@"C:\path\to\file.pdf"))
{
foreach (Page page in document.GetPages())
{
// Extract all letters
IReadOnlyList<Letter> letters = page.Letters;
string text = string.Join(string.Empty, letters.Select(x => x.Value));
// Extract words
IEnumerable<Word> words = page.GetWords();
// Extract images
IEnumerable<IPdfImage> images = page.GetImages();
}
}
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Licence
PDFPig est distribué sous la licence Apache 2.0, qui exige seulement que vous incluiez la mention de droit d'auteur et le texte de la licence d'origine dans vos distributions. Hormis cette exigence, vous êtes totalement libre d'utiliser cette bibliothèque de quelque manière que ce soit.
Conclusion
En résumé, comparons les modèles de tarification et de licence de ces bibliothèques PDF C#.
IronPDF propose des formules tarifaires flexibles adaptées aux particuliers comme aux entreprises. Son utilisation est gratuite pour le développement et inclut un essai gratuit . Son prix est très raisonnable, à partir de seulement 749 $. Avec son ensemble complet de fonctionnalités, son excellent support et sa stabilité à toute épreuve, IronPDF offre le meilleur rapport qualité-prix.
Aspose.PDF fonctionne selon un modèle de paiement à l'utilisation, avec des licences à partir de 1679 $, ce qui est nettement plus cher que les alternatives. Bien qu'il offre un contrôle précis, sa courbe d'apprentissage abrupte et ses coûts élevés peuvent ne pas convenir à tous les budgets.
iTextSuite ne publie pas ses tarifs de manière transparente sur son site web. Il est nécessaire de contacter leur service client pour obtenir un devis, ce qui signifie que les prix varient selon les cas. Ils proposent une licence AGPL pour une utilisation gratuite, mais cela vous oblige à rendre l'intégralité de votre produit open source.
PDFSharp et PDFPig sont entièrement gratuits sous les licences MIT et Apache 2.0, respectivement. Cependant, leurs fonctionnalités sont limitées par rapport aux options commerciales. PDFSharp ne propose pas de conversion HTML vers PDF et peine à gérer les fichiers volumineux, tandis que PDFPig est principalement une bibliothèque en lecture seule.
Le choix de la bibliothèque PDF adaptée dépend de vos besoins spécifiques et de votre budget. Si vous avez besoin d'opérations de base et que vous possédez une expertise technique, les solutions open source conviennent parfaitement. Cependant, pour les applications riches en fonctionnalités nécessitant des fonctionnalités avancées, un support fiable et une documentation complète, IronPDF se distingue comme la solution la plus rentable et la plus complète.