Cómo migrar de PdfPig a IronPDF en C#
Migrar de PdfPiga IronPDF: Guía completa de migración a C
La migración de PdfPigaIronPDFamplía sus capacidades PDF de una biblioteca de sólo lectura a una solución PDF completa que gestiona la creación, la manipulación, la extracción de texto y las funciones de seguridad. Esta guía proporciona una ruta de migración completa, paso a paso, que conserva sus flujos de trabajo de extracción existentes al tiempo que añade la generación de PDF, la conversión HTML, la manipulación de documentos y las capacidades de seguridad que PdfPigno puede proporcionar.
Por qué migrar de PdfPiga IronPDF
Entendiendo PdfPig
PdfPig es una biblioteca de lectura y extracción de PDF de código abierto diseñada específicamente para C#. Como rama del reputado proyecto Apache PDFBox, esta biblioteca permite a los desarrolladores acceder al contenido de los PDF con notable precisión. Aunque PdfPigbrilla por sus capacidades de extracción, su alcance es muy limitado en comparación con otras bibliotecas más completas disponibles en el mercado.
PdfPig proporciona a los desarrolladores herramientas fiables para extraer texto, imágenes, datos de formularios y metadatos de archivos PDF. Esto lo convierte en una opción adecuada para aplicaciones centradas principalmente en el análisis de documentos y la minería de datos. Sin embargo, las capacidades de PdfPigse limitan fundamentalmente al análisis sintáctico de documentos existentes.
La limitación de sólo lectura
PdfPig se centra exclusivamente en la lectura de PDF. Cuando su aplicación necesita crecer más allá de la extracción, PdfPigno puede ayudarle:
Sin generación de PDF: No se pueden crear PDF a partir de HTML, URL o mediante programación.
No HTML-a-PDF: PdfPiges una biblioteca de lectura y análisis de PDF, no una biblioteca de generación de PDF. Para la conversión de HTML a PDF es necesario utilizar una biblioteca diferente.
Sin manipulación de documentos: No se pueden combinar, dividir ni modificar archivos PDF.
Sin funciones de seguridad: No se pueden añadir contraseñas, cifrado ni firmas digitales.
Sin marcas de agua/sellos: No se pueden añadir superposiciones visuales a los documentos existentes.
- No rellenar formularios: No se pueden rellenar formularios PDF mediante programación.
Comparación entre PdfPige IronPDF
| Característica | PdfPig | IronPDF |
|---|---|---|
| Licencia | Código abierto (Apache 2.0) | Comercial |
| Lectura/Extracción de PDF | Excelente | Excelente |
| Generación de PDF | Limitado | Completo |
| HTML a PDF | No compatible | Se admite |
| Extracción de texto | Excelente | Excelente |
| Manipulación de PDF | No soportado | Combinar, dividir, rotar |
| Marcas de agua | No soportado | Soporte completo |
| Seguridad/Encriptación | No soportado | Soporte completo |
| Soporte y documentación | Apoyo a la comunidad | Soporte dedicado |
| Indexación de páginas | basado en 1 | basado en 0 |
IronPDF es compatible con un conjunto completo de funciones para crear, leer, editar y firmar archivos PDF. Esta versatilidad permite a los desarrolladores gestionar archivos PDF de principio a fin. Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFofrece una solución completa para el ciclo de vida de PDF que va más allá de las capacidades de lectura de PdfPig.
Antes de empezar
Prerrequisitos
- <Entorno .NET: .NET Framework 4.6.2+ o .NET Core 3.1+ / .NET 5/6/7/8/9+
- Acceso a NuGet: Capacidad para instalar paquetes NuGet
- Licencia IronPDF: Obtenga su clave de licencia en ironpdf.com
Cambios en el paquete NuGet
# Remove PdfPig
dotnet remove package PdfPig
# Install IronPDF
dotnet add package IronPdf# Remove PdfPig
dotnet remove package PdfPig
# Install IronPDF
dotnet add package IronPdfConfiguración de licencias
// 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";IRON VB CONVERTER ERROR developers@ironsoftware.comIdentificar el uso 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" .Referencia completa de la API
Cambios en el espacio de nombres
// 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;IRON VB CONVERTER ERROR developers@ironsoftware.comMapas de carga de documentos
| PdfPig | IronPDF | Notas |
|---|---|---|
| <código>PdfDocument.Open(ruta)</código | <código>PdfDocument.FromFile(path)</código | Cargar desde archivo |
| <código>PdfDocument.Open(bytes)</código | <código>PdfDocument.FromBinaryData(bytes)</código | Cargar desde bytes |
| <código>PdfDocument.Open(stream)</código | <código>PdfDocument.FromStream(stream)</código | Cargar desde stream |
usando (var doc = ...) | var pdf = ... | IronPDFno requiere el uso de |
Acceso a páginas y asignaciones de propiedades
| PdfPig | IronPDF | Notas |
|---|---|---|
documento.NúmeroDePáginas | <código>pdf.PageCount</código | Número total de páginas |
document.GetPages() | <código>páginas.pdf</código | Colección de páginas |
document.GetPage(1) | pdf.Pages[0] | Página única (nota: basada en 1 frente a basada en 0) |
Mapas de extracción de texto
| PdfPig | IronPDF | Notas |
|---|---|---|
page.Text | <código>pdf.Pages[i].Text</código | Texto de la página |
page.GetWords() | <código>pdf.ExtractTextFromPage(i)</código | Palabras/texto de la página |
| (manual loop) | <código>pdf.ExtractAllText()</código | Todo el texto a la vez |
Metadatos de acceso
| PdfPig | IronPDF | Notas |
|---|---|---|
| <código>documento.Información.Título</código | <código>pdf.MetaData.Title</código | Título del documento |
documento.Información.Autor | <código>pdf.MetaData.Author</código | Autor |
| <código>documento.Información.Asunto</código | <código>pdf.MetaData.Subject</código | Asunto |
| <código>documento.Información.Creador</código | <código>pdf.MetaData.Creator</código | Creador |
| <código>documento.Información.Productor</código | <código>pdf.MetaData.Producer</código | Productor |
Nuevas funciones no disponibles en PdfPig
| Características de IronPDF | Descripción |
|---|---|
renderer.RenderHtmlAsPdf(html) | Conversión de HTML a PDF |
| <código>renderer.RenderUrlAsPdf(url)</código | Conversión de URL a PDF |
| <código>PdfDocument.Merge(pdfs)</código | Combinar varios PDF |
| <código>pdf.ApplyWatermark(html)</código | Añadir marcas de agua |
| <código>pdf.SecuritySettings.UserPassword</código | Protección mediante contraseña |
| <código>pdf.Sign(certificado)</código | Firmas digitales |
Ejemplos de migración de código
Ejemplo 1: Extracción de texto de un PDF
Antes (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());
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespué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);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comTanto PdfPigcomoIronPDFofrecen excelentes funciones de extracción de texto. La diferencia clave está en el patrón de código. PdfPigrequiere una sentencia using con PdfDocument.Open(), iteración manual a través de páginas con GetPages(), y un StringBuilder para acumular texto de cada propiedad page.Text.
IronPDF simplifica esto a una sola llamada: PdfDocument.FromFile() carga el documento, y ExtractAllText() devuelve todo el contenido de texto a la vez. No se requiere una declaración using, ni iteración manual, ni StringBuilder. Consulte la documentación sobre extracción de texto para obtener más opciones.
Ejemplo 2: Conversión de HTML a PDF
Antes (PdfPig):
// PdfPigdoes not support HTML a PDFconversion
// PdfPigis a PDF reading/parsing library, not a PDF generation library
// You would need to use a different library for HTML a PDFconversion// PdfPigdoes not support HTML a PDFconversion
// PdfPigis a PDF reading/parsing library, not a PDF generation library
// You would need to use a different library for HTML a PDFconversionIRON VB CONVERTER ERROR developers@ironsoftware.comDespué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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comEste ejemplo pone de manifiesto la carencia más significativa. PdfPigafirma explícitamente que "no admite la conversión de HTML a PDF" y que "es una biblioteca de lectura y análisis de PDF, no una biblioteca de generación de PDF" Si necesita crear PDF a partir de HTML con PdfPig, tendrá que utilizar una biblioteca completamente distinta.
IronPDF ofrece conversión nativa de HTML a PDF mediante ChromePdfRenderer. El método RenderHtmlAsPdf() acepta cadenas HTML y las convierte en documentos PDF utilizando internamente un motor Chromium para una renderización precisa de HTML, CSS y JavaScript. El PdfDocument resultante puede guardarse con SaveAs() o manipularse aún más antes de guardarlo. Consulte la documentación HTML a PDF para ver ejemplos completos.
Ejemplo 3: Lectura de metadatos PDF
Antes (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}");
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespué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}");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAmbas bibliotecas proporcionan acceso a metadatos con patrones casi idénticos. PdfPigaccede a los metadatos a través de document.Information y al recuento de páginas a través de document.NumberOfPages.IronPDFutiliza pdf.MetaData para los metadatos y <código>pdf.PageCount</códigopara el recuento de páginas.
La migración es sencilla: sustituir PdfDocument.Open() por PdfDocument.FromFile(), document.Information por pdf.MetaData, y documento.NúmeroDePáginaspor pdf.PageCount. Elimine la envoltura de la sentencia using, ya queIronPDFno la necesita.
Notas de migración críticas
Cambio en la indexación de páginas
PdfPig utiliza indexación basada en 1;IronPDFutiliza la base 0:
// PdfPig: basado en 1indexing
var firstPage = document.GetPage(1); // First page
// IronPDF: basado en 0indexing
var firstPage = pdf.Pages[0]; // First page
// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;// PdfPig: basado en 1indexing
var firstPage = document.GetPage(1); // First page
// IronPDF: basado en 0indexing
var firstPage = pdf.Pages[0]; // First page
// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;IRON VB CONVERTER ERROR developers@ironsoftware.comDeclaración de uso no obligatoria
// 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(); // OptionalIRON VB CONVERTER ERROR developers@ironsoftware.comCambio de carga del documento
// 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");IRON VB CONVERTER ERROR developers@ironsoftware.comCambio de nombre de propiedad de metadatos
// 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;IRON VB CONVERTER ERROR developers@ironsoftware.comCambio de la propiedad de recuento de páginas
// 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}");IRON VB CONVERTER ERROR developers@ironsoftware.comNuevas capacidades tras la migración
Tras migrar a IronPDF, obtendrá funciones que PdfPigno puede ofrecerle:
Fusión de 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");IRON VB CONVERTER ERROR developers@ironsoftware.comMarcas de agua
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");IRON VB CONVERTER ERROR developers@ironsoftware.comProtección con contraseña
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";IRON VB CONVERTER ERROR developers@ironsoftware.comFirmas digitales
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);IRON VB CONVERTER ERROR developers@ironsoftware.comResumen comparativo de características
| Característica | PdfPig | IronPDF |
|---|---|---|
| Extracción de Texto | ✓ | ✓ |
| Acceso a metadatos | ✓ | ✓ |
| Extracción de imágenes | ✓ | ✓ |
| Creación de PDF | Limitado | ✓ |
| HTML a PDF | ✗ | ✓ |
| URL a PDF | ✗ | ✓ |
| Fusionar PDF | ✗ | ✓ |
| Dividir PDF | ✗ | ✓ |
| Marcas de agua | ✗ | ✓ |
| Relleno de formularios | ✗ | ✓ |
| Protección por contraseña | ✗ | ✓ |
| Firmas digitales | ✗ | ✓ |
| Datos de posición de palabras | ✓ | ✗ |
Lista de comprobación de la migración
Pre-Migración
- [ ] Inventario de todos los usos de PdfPigen el código base
- [ ] Identifique si necesita datos de posición a nivel de palabra (considere un enfoque híbrido)
- [ ] Tenga en cuenta todas las referencias de índice de páginas (es necesario convertirlas de 1 a 0)
- [ ] Planificar el almacenamiento de la clave de licencia deIronPDF(se recomiendan variables de entorno)
- [ ] Pruebe primero con la licencia de prueba de IronPDF
Cambios en el paquete
- [Eliminar el paquete NuGet
PdfPig:dotnet remove paquete PdfPig - [Instale el paquete NuGet
IronPdf:dotnet add package IronPdf
Cambios de código
- [ ] Actualizar las importaciones de espacios de nombres (
using UglyToad.PdfPig;→using IronPDF;) - [Reemplace
PdfDocument.Open()porPdfDocument.FromFile() - [ ] Sustituya
document.Informationporpdf.MetaData - [Reemplace
documento.NúmeroDePáginasporpdf.PageCount - [ ] Convertir índices de páginas de 1 a 0
- [ ] Eliminar las declaraciones
using(opcional,IronPDFno las requiere) - [ ] Añadir la clave de licencia deIronPDFal inicio de la aplicación
Posmigración
- [ ] Prueba de que el resultado de la extracción de texto se ajusta a las expectativas
- [ ] Probar todos los escenarios de generación de PDF
- [ ] Añadir nuevas funciones (fusión, marcas de agua, seguridad) según sea necesario
- [ ] Instalar dependencias de Linux si se despliega en Linux
Conclusión
La migración de PdfPigaIronPDFamplía las capacidades de PDF de sólo lectura a una solución completa del ciclo de vida de PDF. Mientras que PdfPigdestaca en su dominio de lectura y extracción,IronPDFsobresale en versatilidad y gestión integral de PDF.
Los cambios clave en esta migración son:
- Carga de documentos:
PdfDocument.Open()→PdfDocument.FromFile() - Acceso a metadatos:
document.Information→pdf.MetaData - Cuento de páginas:
documento.NúmeroDePáginas→pdf.PageCount - Indización de páginas: basada en 1 → basada en 0
- Patrón de Disposición: Obligatorio
usar→ Opcional - Nuevas funciones: HTML a PDF, fusión de PDF, marcas de agua, seguridad, firmas digitales, etc
La elección entre PdfPigeIronPDFdepende en gran medida de los requisitos del proyecto. Utilice PdfPigsi su principal necesidad es una sólida capacidad de extracción y lectura con una licencia de código abierto rentable. UtiliceIronPDFsi necesita asistencia completa para el ciclo de vida de PDF, incluida la conversión de HTML a PDF, y si su proyecto requiere funciones sólidas de creación y edición de PDF respaldadas por asistencia profesional.
Explore la documentación completa de IronPDF, tutoriales y referencia de API para acelerar su migración a IronPDF.






