Comment migrer de PdfPig à IronPDF en C#
Migrer de PdfPigversIronPDFpermet d'étendre vos capacités PDF d'une bibliothèque de lecture seule à une solution PDF complète qui gère la création, la manipulation, l'extraction de texte et les fonctions de sécurité. Ce guide fournit un chemin de migration complet, étape par étape, qui préserve vos flux de travail d'extraction existants tout en ajoutant la génération de PDF, la conversion HTML, la manipulation de documents et les capacités de sécurité que PdfPigne peut pas fournir.
Pourquoi migrer de PdfPigà IronPDF
Comprendre PdfPig
PdfPig est une bibliothèque open-source de lecture et d'extraction de PDF spécialement conçue pour C#. Cette bibliothèque, qui fait partie du projet réputé Apache PDFBox, permet aux développeurs d'accéder au contenu des PDF avec une précision remarquable. Bien que PdfPigbrille par ses capacités d'extraction, son champ d'application est largement limité par rapport aux bibliothèques plus complètes disponibles sur le marché.
PdfPig fournit aux développeurs des outils fiables pour extraire du texte, des images, des données de formulaire et des métadonnées à partir de fichiers PDF. C'est donc un choix approprié pour les applications principalement axées sur l'analyse de documents et l'exploration de données. Cependant, les capacités de PdfPigsont fondamentalement limitées à l'analyse de documents existants.
La limite de la lecture seule
PdfPig se concentre exclusivement sur la lecture des PDF. Lorsque votre application doit se développer au-delà de l'extraction, PdfPigne peut pas vous aider :
-
Aucune génération de PDF : Impossible de créer des PDF à partir de HTML, d'URL ou par programmation.
-
Pas de conversion HTML vers PDF : PdfPigest une bibliothèque de lecture/analyse de PDF, et non une bibliothèque de génération de PDF. Vous devrez utiliser une bibliothèque différente pour la conversion de HTML en PDF.
-
Aucune manipulation de document : Impossible de fusionner, de diviser ou de modifier les PDF.
-
Aucune fonctionnalité de sécurité : impossible d'ajouter des mots de passe, du chiffrement ou des signatures numériques.
-
Pas de filigranes/tampons : Impossible d'ajouter des superpositions visuelles aux documents existants.
- Remplissage de formulaire impossible : Impossible de remplir les formulaires PDF par programmation.
Comparaison PdfPigvs IronPDF
| Fonction | PdfPig | IronPDF |
|---|---|---|
| Licence | Source ouverte (Apache 2.0) | Commercial |
| Lecture/extraction de fichiers PDF | Excellente | Excellente |
| Génération de PDF | Limité | Complet |
| HTML à PDF | Non pris en charge | Prise en charge |
| Extraction de texte | Excellente | Excellente |
| Manipulation de PDF | Non pris en charge | Fusionner, diviser, faire pivoter |
| Marqueurs d'eau | Non pris en charge | Prise en charge |
| Sécurité/Cryptage | Non pris en charge | Prise en charge |
| Support et documentation | Soutien à la communauté | Support dédié |
| Indexation des pages | basé sur 1 | basé sur 0 |
IronPDF prend en charge un ensemble complet de fonctionnalités pour la création, la lecture, l'édition et la signature de PDF. Cette polyvalence permet aux développeurs de gérer les fichiers PDF du début à la fin. Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 jusqu'en 2025 et 2026,IronPDFoffre une solution complète de cycle de vie des PDF qui va au-delà des capacités de lecture de PdfPig.
Avant de commencer
Prérequis
- Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
- Accès à NuGet : possibilité d'installer des packages NuGet
- Licence IronPDF : Obtenez votre clé de licence sur IronPDF
Modifications du paquet NuGet
# Remove PdfPig
dotnet remove package PdfPig
# Install IronPDF
dotnet add package IronPdf
# Remove PdfPig
dotnet remove package PdfPig
# Install IronPDF
dotnet add package IronPdf
Configuration de la licence
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Identifier l'utilisation de PdfPig
# Find PdfPigusage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .
# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .
# Find PdfPigusage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .
# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .
Référence API complète
Modifications de l'espace de nommage
// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
' Before: PdfPig
Imports UglyToad.PdfPig
Imports UglyToad.PdfPig.Content
Imports UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor
' After: IronPDF
Imports IronPdf
Imports IronPdf.Rendering
Mappages de chargement de documents
| PdfPig | IronPDF |
|---|---|
PdfDocument.Open(path) |
PdfDocument.FromFile(path) |
PdfDocument.Open(bytes) |
PdfDocument.FromBinaryData(bytes) |
PdfDocument.Open(stream) |
PdfDocument.FromStream(stream) |
using (var doc = ...) |
var pdf = ... |
Mappages d'accès aux pages et de propriétés
| PdfPig | IronPDF |
|---|---|
document.NumberOfPages |
pdf.PageCount |
document.GetPages() |
pdf.Pages |
document.GetPage(1) |
pdf.Pages[0] |
Mappages d'extraction de texte
| PdfPig | IronPDF |
|---|---|
page.Text |
pdf.Pages[i].Text |
page.GetWords() |
pdf.ExtractTextFromPage(i) |
| (manual loop) | pdf.ExtractAllText() |
Mappings d'accès aux métadonnées
| PdfPig | IronPDF |
|---|---|
document.Information.Title |
pdf.MetaData.Title |
document.Information.Author |
pdf.MetaData.Author |
document.Information.Subject |
pdf.MetaData.Subject |
document.Information.Creator |
pdf.MetaData.Creator |
document.Information.Producer |
pdf.MetaData.Producer |
Nouvelles fonctionnalités non disponibles dans PdfPig
| Fonctionnalité d'IronPDF | Description |
|---|---|
renderer.RenderHtmlAsPdf(html) |
Conversion de HTML en PDF |
renderer.RenderUrlAsPdf(url) |
Conversion d'URL en PDF |
PdfDocument.Merge(pdfs) |
Fusionner plusieurs PDF |
pdf.ApplyWatermark(html) |
Ajouter des filigranes |
pdf.SecuritySettings.UserPassword |
Protection par mot de passe |
pdf.Sign(certificate) |
Signatures numériques |
Exemples de migration de code
Exemple 1 : Extraction de texte à partir d'un PDF
Avant (PdfPig):
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;
class Program
{
static void Main()
{
using (var document = PdfDocument.Open("input.pdf"))
{
var text = new StringBuilder();
foreach (var page in document.GetPages())
{
text.AppendLine(page.Text);
}
Console.WriteLine(text.ToString());
}
}
}
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;
class Program
{
static void Main()
{
using (var document = PdfDocument.Open("input.pdf"))
{
var text = new StringBuilder();
foreach (var page in document.GetPages())
{
text.AppendLine(page.Text);
}
Console.WriteLine(text.ToString());
}
}
}
Imports UglyToad.PdfPig
Imports System
Imports System.Text
Class Program
Shared Sub Main()
Using document = PdfDocument.Open("input.pdf")
Dim text = New StringBuilder()
For Each page In document.GetPages()
text.AppendLine(page.Text)
Next
Console.WriteLine(text.ToString())
End Using
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
string text = pdf.ExtractAllText();
Console.WriteLine(text);
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
string text = pdf.ExtractAllText();
Console.WriteLine(text);
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("input.pdf")
Dim text As String = pdf.ExtractAllText()
Console.WriteLine(text)
End Sub
End Class
PdfPig etIronPDFoffrent tous deux d'excellentes capacités d'extraction de texte. La principale différence réside dans le modèle de code. PdfPignécessite une instruction using avec PdfDocument.Open(), une itération manuelle à travers les pages avec GetPages(), et une instruction StringBuilder pour accumuler le texte de chaque propriété page.Text.
IronPDF simplifie cela en un seul appel : PdfDocument.FromFile() charge le document, et ExtractAllText() renvoie tout le contenu textuel en une seule fois. Aucune instruction using requise, aucune itération manuelle, aucun StringBuilder. Voir la documentation sur l'extraction de texte pour des options supplémentaires.
Exemple 2 : Conversion de HTML en PDF
Avant (PdfPig):
PdfPig ne prend pas en charge la conversion HTML vers PDF. PdfPig est une bibliothèque de lecture/analyse de fichiers PDF, et non une bibliothèque de génération de fichiers PDF. Vous devrez utiliser une bibliothèque différente pour la conversion HTML vers PDF.
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>")
pdf.SaveAs("output.pdf")
End Sub
End Class
Cet exemple met en évidence l'écart de capacité le plus important. PdfPigindique explicitement qu'il "ne prend pas en charge la conversion de HTML en PDF" et qu'il "est une bibliothèque de lecture et d'analyse de PDF, et non une bibliothèque de génération de PDF" Si vous devez créer des PDF à partir de HTML avec PdfPig, vous devrez utiliser une autre bibliothèque.
IronPDF assure la conversion native HTML vers PDF via ChromePdfRenderer. La méthode RenderHtmlAsPdf() accepte les chaînes HTML et les convertit en documents PDF en utilisant un moteur Chromium en interne pour un rendu précis du HTML, du CSS et du JavaScript. Le résultat PdfDocument peut être enregistré avec SaveAs() ou manipulé davantage avant d'être enregistré. Consultez la documentation HTML vers PDF pour des exemples complets.
Exemple 3 : Lecture des métadonnées PDF
Avant (PdfPig):
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
class Program
{
static void Main()
{
using (var document = PdfDocument.Open("input.pdf"))
{
var info = document.Information;
Console.WriteLine($"Title: {info.Title}");
Console.WriteLine($"Author: {info.Author}");
Console.WriteLine($"Subject: {info.Subject}");
Console.WriteLine($"Creator: {info.Creator}");
Console.WriteLine($"Producer: {info.Producer}");
Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
}
}
}
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
class Program
{
static void Main()
{
using (var document = PdfDocument.Open("input.pdf"))
{
var info = document.Information;
Console.WriteLine($"Title: {info.Title}");
Console.WriteLine($"Author: {info.Author}");
Console.WriteLine($"Subject: {info.Subject}");
Console.WriteLine($"Creator: {info.Creator}");
Console.WriteLine($"Producer: {info.Producer}");
Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
}
}
}
Imports UglyToad.PdfPig
Imports System
Class Program
Shared Sub Main()
Using document = PdfDocument.Open("input.pdf")
Dim info = document.Information
Console.WriteLine($"Title: {info.Title}")
Console.WriteLine($"Author: {info.Author}")
Console.WriteLine($"Subject: {info.Subject}")
Console.WriteLine($"Creator: {info.Creator}")
Console.WriteLine($"Producer: {info.Producer}")
Console.WriteLine($"Number of Pages: {document.NumberOfPages}")
End Using
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
var info = pdf.MetaData;
Console.WriteLine($"Title: {info.Title}");
Console.WriteLine($"Author: {info.Author}");
Console.WriteLine($"Subject: {info.Subject}");
Console.WriteLine($"Creator: {info.Creator}");
Console.WriteLine($"Producer: {info.Producer}");
Console.WriteLine($"Number of Pages: {pdf.PageCount}");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
var info = pdf.MetaData;
Console.WriteLine($"Title: {info.Title}");
Console.WriteLine($"Author: {info.Author}");
Console.WriteLine($"Subject: {info.Subject}");
Console.WriteLine($"Creator: {info.Creator}");
Console.WriteLine($"Producer: {info.Producer}");
Console.WriteLine($"Number of Pages: {pdf.PageCount}");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("input.pdf")
Dim info = pdf.MetaData
Console.WriteLine($"Title: {info.Title}")
Console.WriteLine($"Author: {info.Author}")
Console.WriteLine($"Subject: {info.Subject}")
Console.WriteLine($"Creator: {info.Creator}")
Console.WriteLine($"Producer: {info.Producer}")
Console.WriteLine($"Number of Pages: {pdf.PageCount}")
End Sub
End Class
Les deux bibliothèques fournissent un accès aux métadonnées avec des modèles presque identiques. PdfPigaccède aux métadonnées via document.Information et au nombre de pages via document.NumberOfPages.IronPDFutilise pdf.MetaData pour les métadonnées et pdf.PageCount pour le nombre de pages.
La migration est simple : remplacer PdfDocument.Open() par PdfDocument.FromFile(), document.Information par pdf.MetaData, et document.NumberOfPages par pdf.PageCount. Supprimez l'enveloppe d'instruction using carIronPDFn'en a pas besoin.
Notes de migration essentielles
Modification de l'indexation des pages
PdfPig utilise une indexation basée sur 1 ;IronPDFutilise une base 0 :
// PdfPig: basé sur 1indexing
var firstPage = document.GetPage(1); // First page
// IronPDF: basé sur 0indexing
var firstPage = pdf.Pages[0]; // First page
// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;
// PdfPig: basé sur 1indexing
var firstPage = document.GetPage(1); // First page
// IronPDF: basé sur 0indexing
var firstPage = pdf.Pages[0]; // First page
// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;
' PdfPig: basé sur 1indexing
Dim firstPage = document.GetPage(1) ' First page
' IronPDF: basé sur 0indexing
Dim firstPage = pdf.Pages(0) ' First page
' Migration helper
Dim pdfPigIndex As Integer = 1
Dim ironPdfIndex As Integer = pdfPigIndex - 1
La déclaration d'utilisation n'est pas requise
// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
// ...
}
// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // Optional
// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
// ...
}
// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // Optional
Imports PdfPig
Imports IronPDF
Using document = PdfDocument.Open("input.pdf")
' ...
End Using
Dim pdf = PdfDocument.FromFile("input.pdf")
' ...
' pdf.Dispose() ' Optional
Changement de chargement de document
// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))
// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");
// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))
// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");
Imports PdfPig
Imports IronPDF
Using document = PdfDocument.Open("input.pdf")
End Using
Dim pdf = PdfDocument.FromFile("input.pdf")
Modification du nom de la propriété des métadonnées
// PdfPig: document.Information
var info = document.Information;
// IronPDF: pdf.MetaData
var info = pdf.MetaData;
// PdfPig: document.Information
var info = document.Information;
// IronPDF: pdf.MetaData
var info = pdf.MetaData;
' PdfPig: document.Information
Dim info = document.Information
' IronPDF: pdf.MetaData
Dim info = pdf.MetaData
Modification de la propriété du nombre de pages
// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");
// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");
// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");
// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");
' PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}")
' IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}")
Nouvelles capacités après la migration
Après avoir migré vers IronPDF, vous bénéficiez de fonctionnalités que PdfPigne peut pas vous offrir :
Fusion de fichiers PDF
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Filigranes
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>")
Protection par mot de passe
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
Signatures numériques
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "support@company.com",
SigningReason = "Document Approval"
};
pdf.Sign(signature);
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "support@company.com",
SigningReason = "Document Approval"
};
pdf.Sign(signature);
Dim signature As New PdfSignature("certificate.pfx", "password") With {
.SigningContact = "support@company.com",
.SigningReason = "Document Approval"
}
pdf.Sign(signature)
Résumé de la comparaison des fonctionnalités
| Fonction | PdfPig | IronPDF |
|---|---|---|
| Extraction de texte | ✓ | ✓ |
| Accès aux métadonnées | ✓ | ✓ |
| Extraction d'images | ✓ | ✓ |
| Création de PDF | Limité | ✓ |
| HTML vers PDF | ✗ | ✓ |
| URL vers PDF | ✗ | ✓ |
| Fusionner des PDF | ✗ | ✓ |
| Diviser les PDF | ✗ | ✓ |
| Filigranes | ✗ | ✓ |
| Remplissage de formulaires | ✗ | ✓ |
| Protection par mot de passe | ✗ | ✓ |
| Signatures numériques | ✗ | ✓ |
| Données sur la position des mots | ✓ | ✗ |
Liste de contrôle de la migration
Pré-migration
- Recenser toutes les utilisations de PdfPigdans le code source
- Déterminez si vous avez besoin de données de position au niveau du mot (envisagez une approche hybride).
- Notez toutes les références d'index de page (il faut convertir l'indexation à partir de 1 en indexation à partir de 0).
- Planifier le stockage de la clé de licenceIronPDF(variables d'environnement recommandées)
- Commencez par tester avec une licence d'essaiIronPDF.
Modifications du paquet
- Supprimer le package NuGet
PdfPig:dotnet remove package PdfPig - Installez le package NuGet
IronPdf:dotnet add package IronPdf
Modifications du code
- Mise à jour des importations d'espace de noms (
using UglyToad.PdfPig;→using IronPdf;) - Remplacez
PdfDocument.Open()parPdfDocument.FromFile() - Remplacez
document.Informationparpdf.MetaData - Remplacez
document.NumberOfPagesparpdf.PageCount - Convertir les index de page de 1 à 0.
- Supprimer les instructions
using(facultatif,IronPDFne les exige pas) - Ajouter la clé de licenceIronPDFau démarrage de l'application
Après la migration
- Le résultat de l'extraction de texte du test correspond aux attentes
- Tester tous les scénarios de génération de PDF
- Ajouter de nouvelles fonctionnalités (fusion, filigranes, sécurité) selon les besoins
- Installez les dépendances Linux si vous déployez sur Linux.

