Saltar al pie de página
GUíAS DE MIGRACIóN

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

  1. 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.

  2. 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.

  3. 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.

  4. Complejidad de despliegue: Debe agrupar y gestionar DLL nativas por plataforma con carpetas x86, x64 y tiempos de ejecución.

  5. Extracción de texto limitada: extracción básica de texto sin formato. La extracción de texto requiere trabajo adicional con Pdfium.NET.

  6. 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.

  7. Sin encabezados/pies de página: No se pueden añadir números de página ni repetir contenidos.

  8. Sin marcas de agua: No se pueden estampar documentos con superposiciones.

  9. Sin soporte de formularios: No puede rellenar ni leer formularios PDF.

  10. Sin funciones de seguridad: No puede cifrar ni proteger con contraseña los PDF.

Comparación entre Pdfium e IronPDF

AspectoPdfium.NETIronPDF
Enfoque principalRenderización/visualizaciónSolución PDF completa
Fidelidad de renderizaciónRenderizado de alta fidelidadAlto, 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 nativasRequeridoNinguno (totalmente gestionado)
Traducción multiplataformaConfiguración complejaAutomático
Facilidad de implementaciónComplicado por las dependencias nativasMá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

  1. <Entorno .NET: .NET Framework 4.6.2+ o .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Acceso a NuGet: Capacidad para instalar paquetes NuGet
  3. 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.NETIronPDFNotas
Documento PDFDocumento PDFMismo nombre, diferentes capacidades
Página PDFPágina PDFInterfaz similar
<código>PdfPageCollection</código<código>PdfPageCollection</códigoInterfaz similar
(no disponible)<código>ChromePdfRenderer</códigoCreación de PDF
(no disponible)<código>HtmlHeaderFooter</códigoEncabezados/pies de página

Mapas de carga de documentos

Pdfium.NETIronPDFNotas
<código>PdfDocument.Load(ruta)</código<código>PdfDocument.FromFile(path)</códigoCargar desde archivo
<código>PdfDocument.Load(stream)</código<código>PdfDocument.FromStream(stream)</códigoCargar desde stream
<código>PdfDocument.Load(bytes)</código<código>PdfDocument.FromBinaryData(bytes)</códigoCargar desde bytes
nuevo PdfDocument(ruta)<código>PdfDocument.FromFile(path)</códigoPatrón constructor

Mapeo de propiedades de documentos

Pdfium.NETIronPDFNotas
document.PageCountdocument.PageCountEn
<código>documento.Pages</código<código>documento.Pages</códigoColecció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ódigoPropiedades directas

Mapas de extracción de texto

Pdfium.NETIronPDFNotas
<código>document.GetPdfText(pageIndex)</códigodocument.Pages[index].TextPor página
(bucle manual)_<código>document.ExtractAllText()</códigoTodas las páginas a la vez
page.GetTextBounds()page.TextSimplificado

Guardar asignaciones de documentos

Pdfium.NETIronPDFNotas
<código>document.Save(ruta)</códigodocument.SaveAs(ruta)Nombre de método diferente
<código>document.Save(stream)</códigodocument.StreamFlujo de acceso
(no disponible)<código>document.BinaryData</códigoObtener bytes

Mapas de renderizado de páginas

Pdfium.NETIronPDFNotas
page.Render(width, height)<código>pdf.RasterizeToImageFiles(ruta, dpi)</códigoRasterizar
page.Render(width, height, flags)Parámetro DPIControl de calidad
<código>document.Render(index, width, height)</código<código>pdf.RasterizeToImageFiles()</códigoTraducción por lotes
<código>page.RenderToScale(scale)</códigoPPP: 72 * escalaConversión de escala a PPP

Nuevas funciones no disponibles en Pdfium

Características de IronPDFDescripción
<código>ChromePdfRenderer.RenderHtmlAsPdf()</códigoCrear a partir de HTML
<código>ChromePdfRenderer.RenderUrlAsPdf()</códigoCrear a partir de URL
<código>ChromePdfRenderer.RenderHtmlFileAsPdf()</códigoCrear a partir de un archivo HTML
PdfDocument.Merge()Combinar PDF
<código>pdf.CopyPages()</códigoExtraer páginas
<código>pdf.RemovePages()</códigoEliminar páginas
<código>pdf.InsertPdf()</códigoInsertar PDF en posición
<código>pdf.ApplyWatermark()</códigoAñadir marcas de agua
<código>pdf.AddHtmlHeaders()</códigoAñadir encabezados
<código>pdf.AddHtmlFooters()</códigoAñadir pies de página
<código>pdf.SecuritySettings</códigoProtección mediante contraseña
<código>pdf.SignWithDigitalSignature()</códigoFirmas digitales
<código>pdf.Form</códigoRelleno 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() { ListpdfFiles = new List{ "document1.pdf", "document2.pdf", "document3.pdf" };

    // 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() { ListpdfFiles = new List{ "document1.pdf", "document2.pdf", "document3.pdf" };

    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.dll

else

// Load x86 pdfium.dll

endif

// IronPDF: Remove all platform-specific code // Just use the API directly using IronPdf;


Resumen comparativo de características

CaracterísticaPdfium.NETIronPDF
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 nativasRequeridoNinguno
MultiplataformaComplejoAutomático
Gestión de memoriaEliminación manualSimplificado

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, PdfiumViewer paquetes 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() por PdfDocument.FromFile()
  • [Reemplace document.Save() por pdf.SaveAs()
  • [Reemplace los bucles document.GetPdfText(i) por pdf.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:

  1. Alcance: Solo renderización → Solución completa para PDF
  2. Dependencias: Se requieren binarios nativos → Totalmente gestionado
  3. Carga: PdfDocument.Load()PdfDocument.FromFile()
  4. Guardar: Guardar()GuardarComo()
  5. Extracción de texto: Bucle manual con GetPdfText() → Llamada única a ExtractAllText()
  6. Renderización: basada en escala → basada en PPP (PPP = 72 × escala)
  7. 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.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más