Cómo migrar de Pdfium a IronPDF en C#
Migrar de Pdfium a IronPDF: Guía completa de migración a C
La migración de Pdfium.NET aIronPDFtraslada su flujo de trabajo PDF .NET de una biblioteca centrada en la renderización con dependencias binarias nativas a una solución PDF completa que gestiona la creación, manipulación y renderización sin complejidad específica de la plataforma. Esta guía proporciona una ruta de migración completa, paso a paso, que elimina la gestión de dependencias nativas a la vez que añade capacidades que Pdfium no puede proporcionar.
Por qué migrar de Pdfium a IronPDF
Entender Pdfium.NET
Pdfium.NET es un envoltorio .NET para la biblioteca PDFium de Google, famosa por su eficacia y velocidad en la representación de documentos PDF. Se ha convertido en una importante biblioteca para los desarrolladores que se adentran en los entresijos de la representación de PDF en aplicaciones C#, ya que proporciona una reproducción de alta fidelidad del contenido PDF en entornos .NET.
Sin embargo, a pesar de su destreza en el renderizado, las capacidades de Pdfium.NET para crear y manipular documentos PDF son limitadas. Se ha creado principalmente para aplicaciones que requieren mostrar contenido PDF con precisión, con menos énfasis en la modificación o creación de nuevos PDF.
Limitaciones críticas de Pdfium
Enfoque sólo en renderización: No se pueden crear PDF a partir de HTML, imágenes o mediante programación. Las capacidades de Pdfium se limitan a la visualización y representación de archivos PDF.
Sin manipulación de PDF: No se puede fusionar, dividir ni modificar el contenido de los PDF. La fusión de PDF no se admite de forma nativa, por lo que será necesario utilizar otra biblioteca como iTextSharp o PdfSharp.
Dependencias binarias nativas: Requiere binarios PDFium específicos de la plataforma. Los desarrolladores necesitan gestionar binarios PDFium nativos, un aspecto que añade complejidad durante el despliegue y la distribución.
Complejidad de despliegue: Debe agrupar y gestionar DLL nativas por plataforma con carpetas x86, x64 y tiempos de ejecución.
Extracción de texto limitada: extracción básica de texto sin formato. La extracción de texto requiere trabajo adicional con Pdfium.NET.
No HTML a PDF: No se puede convertir contenido web a PDF. La conversión de HTML a PDF no se admite de forma nativa en Pdfium.NET.
Sin encabezados/pies de página: No se pueden añadir números de página ni repetir contenidos.
Sin marcas de agua: No se pueden estampar documentos con superposiciones.
Sin soporte de formularios: No puede rellenar ni leer formularios PDF.
- Sin funciones de seguridad: No puede cifrar ni proteger con contraseña los PDF.
Comparación entre Pdfium e IronPDF
| Aspecto | Pdfium.NET | IronPDF |
|---|---|---|
| Enfoque principal | Renderización/visualización | Solución PDF completa |
| Fidelidad de renderización | Renderizado de alta fidelidad | Alto, especialmente para HTML/CSS/JS |
| Creación de PDF | ✗ | ✓(HTML, URL, imágenes) |
| Manipulación de PDF | ✗ | ✓(fusionar, dividir, editar) |
| HTML a PDF | ✗ | ✓(motor Chromium) |
| Marcas de agua | ✗ | ✓ |
| Cabeceras/Pies de página | ✗ | ✓ |
| Relleno de formularios | ✗ | ✓ |
| Seguridad | ✗ | ✓ |
| Dependencias nativas | Requerido | Ninguno (totalmente gestionado) |
| Traducción multiplataforma | Configuración compleja | Automático |
| Facilidad de implementación | Complicado por las dependencias nativas | Más fácil; menos complicaciones de dependencia |
Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una base totalmente gestionada que elimina la gestión binaria nativa a la vez que añade funciones completas de creación y manipulación de PDF.
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
using IronPdf;bash
Remove Pdfium packages
dotnet remove package Pdfium.NET dotnet remove package Pdfium.Net.SDK dotnet remove package PdfiumViewer
Install IronPDF
dotnet add package IronPdf using IronPdf;
Configuración de licencias
using IronPdf;csharp // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; using IronPdf;
Identificar el uso de Pdfium
using IronPdf;bash
Find Pdfium usage
grep -r "Pdfium|PdfDocument.Load|.Render(" --include="*.cs" .
Find native binary references
grep -r "pdfium.dll|pdfium.so|pdfium.dylib" --include=".csproj" --include=".config" .
Find platform-specific code
grep -r "#if.64|WIN32|WIN64|LINUX|OSX" --include=".cs" . using IronPdf;
Referencia completa de la API
Cambios en el espacio de nombres
using IronPdf;csharp // Pdfium.NET using Pdfium; using Pdfium.Net; using PdfiumViewer;
// IronPDF using IronPdf; using IronPdf.Rendering; using IronPdf.Editing; using IronPdf;
Core Class Mappings
| Pdfium.NET | IronPDF | Notas |
|---|---|---|
Documento PDF | Documento PDF | Mismo nombre, diferentes capacidades |
Página PDF | Página PDF | Interfaz similar |
| <código>PdfPageCollection</código | <código>PdfPageCollection</código | Interfaz similar |
| (no disponible) | <código>ChromePdfRenderer</código | Creación de PDF |
| (no disponible) | <código>HtmlHeaderFooter</código | Encabezados/pies de página |
Mapas de carga de documentos
| Pdfium.NET | IronPDF | Notas |
|---|---|---|
| <código>PdfDocument.Load(ruta)</código | <código>PdfDocument.FromFile(path)</código | Cargar desde archivo |
| <código>PdfDocument.Load(stream)</código | <código>PdfDocument.FromStream(stream)</código | Cargar desde stream |
| <código>PdfDocument.Load(bytes)</código | <código>PdfDocument.FromBinaryData(bytes)</código | Cargar desde bytes |
nuevo PdfDocument(ruta) | <código>PdfDocument.FromFile(path)</código | Patrón constructor |
Mapeo de propiedades de documentos
| Pdfium.NET | IronPDF | Notas |
|---|---|---|
document.PageCount | document.PageCount | En |
| <código>documento.Pages</código | <código>documento.Pages</código | Colección similar |
document.Pages[index] | document.Pages[index] | Basado en cero |
| <código>document.GetPageSize(index)</código | <código>document.Pages[index].Width/Height</código | Propiedades directas |
Mapas de extracción de texto
| Pdfium.NET | IronPDF | Notas |
|---|---|---|
| <código>document.GetPdfText(pageIndex)</código | document.Pages[index].Text | Por página |
| (bucle manual)_ | <código>document.ExtractAllText()</código | Todas las páginas a la vez |
page.GetTextBounds() | page.Text | Simplificado |
Guardar asignaciones de documentos
| Pdfium.NET | IronPDF | Notas |
|---|---|---|
| <código>document.Save(ruta)</código | document.SaveAs(ruta) | Nombre de método diferente |
| <código>document.Save(stream)</código | document.Stream | Flujo de acceso |
| (no disponible) | <código>document.BinaryData</código | Obtener bytes |
Mapas de renderizado de páginas
| Pdfium.NET | IronPDF | Notas |
|---|---|---|
page.Render(width, height) | <código>pdf.RasterizeToImageFiles(ruta, dpi)</código | Rasterizar |
page.Render(width, height, flags) | Parámetro DPI | Control de calidad |
| <código>document.Render(index, width, height)</código | <código>pdf.RasterizeToImageFiles()</código | Traducción por lotes |
| <código>page.RenderToScale(scale)</código | PPP: 72 * escala | Conversión de escala a PPP |
Nuevas funciones no disponibles en Pdfium
| Características de IronPDF | Descripción |
|---|---|
| <código>ChromePdfRenderer.RenderHtmlAsPdf()</código | Crear a partir de HTML |
| <código>ChromePdfRenderer.RenderUrlAsPdf()</código | Crear a partir de URL |
| <código>ChromePdfRenderer.RenderHtmlFileAsPdf()</código | Crear a partir de un archivo HTML |
PdfDocument.Merge() | Combinar PDF |
| <código>pdf.CopyPages()</código | Extraer páginas |
| <código>pdf.RemovePages()</código | Eliminar páginas |
| <código>pdf.InsertPdf()</código | Insertar PDF en posición |
| <código>pdf.ApplyWatermark()</código | Añadir marcas de agua |
| <código>pdf.AddHtmlHeaders()</código | Añadir encabezados |
| <código>pdf.AddHtmlFooters()</código | Añadir pies de página |
| <código>pdf.SecuritySettings</código | Protección mediante contraseña |
| <código>pdf.SignWithDigitalSignature()</código | Firmas digitales |
| <código>pdf.Form</código | Relleno de formularios |
Ejemplos de migración de código
Ejemplo 1: Extracción de texto de un PDF
Antes (Pdfium):
using IronPdf;csharp // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System; using System.IO; using System.Text;
class Program { static void Main() { string pdfPath = "document.pdf";
using (var document = PdfDocument.Load(pdfPath))
{
StringBuilder text = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
// Note: PdfiumViewer has limited text extraction capabilities
// Text extraction requires additional work with Pdfium.NET
string pageText = document.GetPdfText(i);
text.AppendLine(pageText);
}
Console.WriteLine(text.ToString());
}
}} using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf; using System;
class Program { static void Main() { string pdfPath = "document.pdf";
var pdf = PdfDocument.FromFile(pdfPath);
string text = pdf.ExtractAllText();
Console.WriteLine(text);
}} using IronPdf;
La diferencia aquí es significativa. Pdfium requiere un bucle manual a través de cada página con GetPdfText(pageIndex), construyendo un StringBuilder y gestionando la sentencia using para su correcta eliminación. El código señala que "PdfiumViewer tiene capacidades limitadas de extracción de texto" y "la extracción de texto requiere trabajo adicional."
IronPDF simplifica este proceso a tres líneas: carga con PdfDocument.FromFile(), extracción con ExtractAllText() y salida. El método ExtractAllText() maneja todas las páginas automáticamente con capacidades de extracción de texto más avanzadas. Si necesita una extracción por página, puede utilizar pdf.Pages[index].Text. Consulte la documentación de extracción de texto para obtener más opciones.
Ejemplo 2: Fusión de PDF
Antes (Pdfium):
using IronPdf;csharp // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System; using System.IO; using System.Collections.Generic;
// Note: PdfiumViewer does not have native PDF merging functionality // You would need to use additional libraries or implement custom logic class Program { static void Main() { List
// PdfiumViewer is primarily for rendering/viewing
// PDF merging is not natively supported
// You would need to use another library like iTextSharp or PdfSharp
Console.WriteLine("PDF merging not natively supported in PdfiumViewer");
}} using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf; using System; using System.Collections.Generic;
class Program { static void Main() { List
var pdf = PdfDocument.Merge(pdfFiles);
pdf.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}} using IronPdf;
Este ejemplo pone de manifiesto una carencia fundamental. Pdfium no puede combinar PDF: el código indica explícitamente que "PdfiumViewer no admite de forma nativa la combinación de PDF" y que "tendría que utilizar otra biblioteca como iTextSharp o PdfSharp"
IronPDF proporciona fusión nativa con el método estático PdfDocument.Merge()que acepta directamente una lista de rutas de archivos. El resultado es un nuevo Documento PDFque se guarda con SaveAs(). Más información sobre mezclar y dividir archivos PDF.
Ejemplo 3: Conversión de HTML a PDF
Antes (Pdfium):
using IronPdf;csharp // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System.IO; using System.Drawing.Printing;
// Note: PdfiumViewer is primarily for viewing/rendering PDFs, not creating them from HTML // For HTML to PDF with Pdfium.NET, you would need additional libraries // This example shows a limitation of Pdfium.NET class Program { static void Main() { // Pdfium.NET does not have native HTML to PDF conversion // You would need to use a separate library to convert HTML to PDF // then use Pdfium for manipulation string htmlContent = "
Hello World
"; // This functionality is not directly available in Pdfium.NET
Console.WriteLine("HTML to PDF conversion not natively supported in Pdfium.NET");
}} using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf; using System;
class Program { static void Main() { var renderer = new ChromePdfRenderer(); string htmlContent = "
Hello World
"; var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}} using IronPdf;
Este ejemplo muestra la diferencia de capacidad más significativa. Pdfium indica explícitamente "La conversión de HTML a PDF no se admite de forma nativa en Pdfium.NET" y "Tendrías que utilizar una biblioteca independiente para convertir HTML a PDF."
IronPDF ofrece conversión nativa de HTML a PDF a través de ChromePdfRenderer, que utiliza internamente un motor Chromium para una renderización precisa de HTML, CSS y JavaScript. El método RenderHtmlAsPdf() convierte cadenas HTML directamente en documentos PDF.IronPDFtambién puede renderizar URLs con RenderUrlAsPdf() y archivos HTML con RenderHtmlFileAsPdf(). Consulte la documentación HTML a PDF para ver ejemplos completos.
Eliminación de dependencias nativas
Una de las ventajas más significativas de migrar de Pdfium aIronPDFes la eliminación de la gestión nativa de binarios.
Antes (Pdfium) - Despliegue complejo
using IronPdf; MyApp/ ├── bin/ │├── MyApp.dll │├── Pdfium.NET.dll │ ├── x86/ ││└── pdfium.dll │ └── x64/ │ └── pdfium.dll ├── runtimes/ │├── win-x86/native/ ││└── pdfium.dll │ └── win-x64/native/ │ └── pdfium.dll using IronPdf;
Después (IronPDF) - Implementación limpia
using IronPdf; MyApp/ ├── bin/ │├── MyApp.dll │ └── IronPDF.dll # Todo incluido using IronPdf;
Eliminar referencias binarias nativas
using IronPdf;bash
Delete native PDFium binaries
rm -rf x86/ x64/ runtimes/
Remove from .csproj
Delete anyentries
Delete anyentries
using IronPdf;
Notas de migración críticas
Conversión de escala a PPP
Pdfium utiliza factores de escala;IronPDFutiliza DPI:
using IronPdf;csharp // Formula:IronPDFDPI = 72 × Pdfium scale // Pdfium scale 2.0 →IronPDFDPI 144 pdf.RasterizeToImageFiles("*.png", DPI: 144); using IronPdf;
Cambio de método de carga de documentos
using IronPdf;csharp // Pdfium PdfDocument.Load(path)
// IronPDF PdfDocument.FromFile(path) using IronPdf;
Cambio de método de guardado
using IronPdf;csharp // Pdfium document.Save(path)
// IronPDF pdf.SaveAs(path) using IronPdf;
Simplificación del patrón de eliminación
using IronPdf;csharp // Pdfium: Requeridoexplicit disposal using (var document = PdfDocument.Load(path)) using (var page = document.Pages[0]) using (var bitmap = page.Render(1024, 768)) { bitmap.Save("output.png"); }
// IronPDF: Simplified var pdf = PdfDocument.FromFile(path); pdf.RasterizeToImageFiles("output.png"); using IronPdf;
Eliminación de código específico de la plataforma
using IronPdf;csharp // Pdfium: Requeridoplatform detection
if WIN64
// Load x64 pdfium.dllelse
// Load x86 pdfium.dllendif
// IronPDF: Remove all platform-specific code // Just use the API directly using IronPdf;
Resumen comparativo de características
| Característica | Pdfium.NET | IronPDF |
|---|---|---|
| Cargar PDF | ✓ | ✓ |
| Renderizado a imagen | ✓ | ✓ |
| Extraer texto | ✓(básico) | ✓(avanzado) |
| Información de la página | ✓ | ✓ |
| Crear a partir de HTML | ✗ | ✓ |
| Crear a partir de URL | ✗ | ✓ |
| Fusionar PDF | ✗ | ✓ |
| Dividir PDF | ✗ | ✓ |
| Añadir marcas de agua | ✗ | ✓ |
| Encabezados/pies de página | ✗ | ✓ |
| Relleno de formularios | ✗ | ✓ |
| Firmas digitales | ✗ | ✓ |
| Protección por contraseña | ✗ | ✓ |
| Dependencias nativas | Requerido | Ninguno |
| Multiplataforma | Complejo | Automático |
| Gestión de memoria | Eliminación manual | Simplificado |
Lista de comprobación de la migración
Pre-Migración
- [ ] Identificar todos los usos de Pdfium en el código base
- [ ] Documentar las dimensiones/escalas de renderizado utilizadas actualmente
- [ ] Lista de ubicaciones binarias nativas en el proyecto
- [ ] Comprobación del código de carga específico de la plataforma
- [ ] Identificar las necesidades de creación de PDF (¿utiliza actualmente herramientas distintas?)
- [ ] Revisar los patrones de eliminación para la conversión
- [ ] Obtener la clave de licencia de IronPDF
Cambios en el paquete
- [ ] Eliminar
Pdfium.NET,Pdfium.Net.SDK,PdfiumViewerpaquetes NuGet - [ ] Eliminar binarios nativos pdfium.dll de carpetas x86/, x64/, runtimes/
- [ ] Eliminar la compilación condicional específica de la plataforma
- [ ] Actualizar .csproj para eliminar referencias binarias nativas
- [Instale el paquete NuGet
IronPdf:dotnet add package IronPdf
Cambios de código
- [ ] Añadir configuración de clave de licencia al inicio
- [Reemplace
PdfDocument.Load()porPdfDocument.FromFile() - [Reemplace
document.Save()porpdf.SaveAs() - [Reemplace los bucles
document.GetPdfText(i)porpdf.ExtractAllText() - [ ] Convertir factores de escala a valores de PPP (PPP = 72 × escala)
- [ ] Simplificar los patrones de eliminación (eliminar las sentencias using anidadas)
- [ ] Eliminar código específico de la plataforma
Posmigración
- [ ] Comprobar la calidad del renderizado
- [ ] Comparar resultados de extracción de texto
- [ ] Prueba de despliegue multiplataforma
- [ ] Añadir nuevas funciones (HTML a PDF, fusión, marcas de agua, seguridad)
- [ ] Actualización de la documentación
Conclusión
La migración de Pdfium aIronPDFtransforma su flujo de trabajo PDF de una biblioteca centrada en la renderización con una complejidad de dependencia nativa a una solución PDF completa con capacidades de creación, manipulación y renderización.
Los cambios clave en esta migración son:
- Alcance: Solo renderización → Solución completa para PDF
- Dependencias: Se requieren binarios nativos → Totalmente gestionado
- Carga:
PdfDocument.Load()→PdfDocument.FromFile() - Guardar:
Guardar()→GuardarComo() - Extracción de texto: Bucle manual con
GetPdfText()→ Llamada única aExtractAllText() - Renderización: basada en escala → basada en PPP (PPP = 72 × escala)
- Nuevas funciones: HTML a PDF, fusión, marcas de agua, seguridad, formularios, etc
Explore la documentación completa de IronPDF, tutoriales y referencia de API para acelerar su migración a Pdfium.






