Cómo migrar de PdfiumViewer a IronPDF en C#
Migrar de PdfiumViewera IronPDF: Guía completa de migración a C
La migración de PdfiumVieweraIronPDFtraslada su flujo de trabajo PDF .NET de una biblioteca de visualización de Windows Forms con dependencias binarias nativas a una solución PDF completa que gestiona la creación, manipulación, extracción de texto y representación en todos los tipos de aplicaciones .NET. Esta guía proporciona una ruta de migración completa, paso a paso, que elimina las restricciones de plataforma a la vez que añade capacidades que PdfiumViewerno puede proporcionar.
Por qué migrar de PdfiumViewera IronPDF
Entender PdfiumViewer
PdfiumViewer es una envoltura .NET para PDFium, el motor de renderizado de PDF de Google utilizado en el navegador Chrome. Ofrece una solución sencilla pero potente para integrar la visualización de PDF directamente en las aplicaciones Windows Forms, proporcionando una capacidad de renderizado de PDF de alto rendimiento y alta fidelidad.
Sin embargo, es crucial recordar que PdfiumVieweres únicamente un visor. No es compatible con la creación, edición o manipulación de PDF, lo que puede suponer una limitación para las aplicaciones que exigen algo más que capacidades de visualización. Además, su incierto estado de mantenimiento crea un riesgo para las aplicaciones de producción: existe cierta incertidumbre sobre su desarrollo y mantenimiento continuos, lo que puede ser preocupante para proyectos a largo plazo.
Limitaciones críticas de PdfiumViewer
Funcionalidad de sólo visualización: No se pueden crear PDF a partir de HTML, imágenes o mediante programación. Las capacidades de PdfiumViewerse limitan a la visualización de PDF; a diferencia de bibliotecas como IronPDF, no admite la creación, edición, fusión u otras funciones de manipulación de PDF.
Específica para Windows Forms: La biblioteca se centra en aplicaciones Windows Forms, no ofrece soporte para otros marcos de interfaz de usuario.
Sin manipulación de PDF: No se puede fusionar, dividir ni modificar el contenido de los PDF.
Dependencias binarias nativas: Requiere binarios PDFium específicos de la plataforma (archivos pdfium.dll x86 y x64).
Mantenimiento incierto: Actualizaciones limitadas y soporte a largo plazo poco claro.
Sin extracción de texto: PdfiumViewerno tiene extracción de texto incorporada-tendrías que usar OCR u otra librería. Sólo puede renderizar páginas como imágenes.
No HTML a PDF: PdfiumVieweres principalmente un visor/renderizador de PDF, no un generador. No puede convertir directamente HTML a PDF. Sería necesario utilizar otra biblioteca como wkhtmltopdf o similar.
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 funciones de seguridad: No puede cifrar ni proteger con contraseña los PDF.
Comparación entre PdfiumViewere IronPDF
| Aspecto | PdfiumViewer | IronPDF |
|---|---|---|
| Enfoque principal | Visor de PDF WinForms | Solución PDF completa |
| Licencia | Apache 2.0 | Comercial |
| Creación de PDF | ✗ | ✓(HTML, URL, imágenes) |
| Manipulación de PDF | ✗ | ✓(fusionar, dividir, editar) |
| HTML a PDF | ✗ | ✓(motor Chromium) |
| Extracción de texto | ✗ | ✓ |
| Marcas de agua | ✗ | ✓ |
| Cabeceras/Pies de página | ✗ | ✓ |
| Seguridad | ✗ | ✓ |
| Visor integrado | ✓ | ✗(centrado en el backend) |
| Soporte de Plataforma | Solo Windows Forms | Consola, Web, Escritorio |
| Soporte de Framework | .NET Framework | .NET Framework, Core, 5+ |
| Mantenimiento | Incierto | Activo |
Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una base completa y mantenida activamente que funciona en todos los tipos de aplicaciones .NET, eliminando la restricción de Windows Forms y la complejidad binaria nativa.
Antes de empezar
Prerrequisitos
- <Entorno .NET: .NET Framework4.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 PdfiumViewerpackages
dotnet remove package PdfiumViewer dotnet remove package PdfiumViewer.Native.x86.v8-xfa dotnet remove package PdfiumViewer.Native.x64.v8-xfa
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 PdfiumViewer
using IronPdf;bash
Find PdfiumViewerusage
grep -r "PdfiumViewer|PdfViewer|PdfDocument.Load" --include="*.cs" .
Find native binary references
grep -r "pdfium.dll|Native.x86|Native.x64" --include="*.csproj" .
Find viewer control usage
grep -r "PdfViewer" --include=".cs" --include=".Designer.cs" . using IronPdf;
Referencia completa de la API
Cambios en el espacio de nombres
using IronPdf;csharp // PdfiumViewer using PdfiumViewer;
// IronPDF using IronPdf; using IronPdf.Rendering; using IronPdf.Editing; using IronPdf;
Core Class Mappings
| PdfiumViewer | IronPDF | Notas |
|---|---|---|
Documento PDF | Documento PDF | Mismo nombre, diferentes capacidades |
| <código>PdfViewer</código | (sin equivalente) | IronPDFse centra en el backend |
Renderizador de PDF | <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
| PdfiumViewer | 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 |
Mapeo de propiedades de documentos
| PdfiumViewer | IronPDF | Notas |
|---|---|---|
document.PageCount | document.PageCount | En |
| <código>document.PageSizes</código | <código>document.Pages[i].Width/Height</código | Acceso por página |
| <código>document.GetPageSize(index)</código | <código>document.Pages[index].Width/Height</código | Propiedades directas |
Mapas de renderizado de páginas
| PdfiumViewer | IronPDF | Notas |
|---|---|---|
| <código>document.Render(pageIndex, dpiX, dpiY, forPrinting)</código | <código>pdf.ToBitmap(pageIndex)</código | Devuelve una matriz de mapas de bits |
document.Render(pageIndex, width, height, dpiX, dpiY, flags) | <código>pdf.RasterizeToImageFiles(ruta, dpi)</código | Traducción por lotes |
Guardar asignaciones de documentos
| PdfiumViewer | IronPDF | Notas |
|---|---|---|
| <código>document.Save(ruta)</código | <código>pdf.SaveAs(ruta)</código | Nombre de método diferente |
| <código>document.Save(stream)</código | <código>pdf.Stream</código | Flujo de acceso |
| (no disponible) | <código>pdf.BinaryData</código | Obtener bytes |
Nuevas funciones no disponibles en PdfiumViewer
| Características de IronPDF | Descripción |
|---|---|
| <código>pdf.ExtractAllText()</código | Extraer texto de todas las páginas |
| <código>pdf.ExtractTextFromPage(index)</código | Extraer texto de una página específica |
| <código>ChromePdfRenderer.RenderHtmlAsPdf()</código | Crear a partir de HTML |
| <código>ChromePdfRenderer.RenderUrlAsPdf()</código | Crear a partir de URL |
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.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.Form</código | Relleno de formularios |
Ejemplos de migración de código
Ejemplo 1: Extracción de texto de un PDF
Antes (PdfiumViewer):
using IronPdf;csharp // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System; using System.Text;
string pdfPath = "document.pdf";
// PDFiumViewer has limited text extraction capabilities // It's primarily designed for rendering, not text extraction using (var document = PdfDocument.Load(pdfPath)) { int pageCount = document.PageCount; Console.WriteLine($"Total pages: {pageCount}");
// PDFiumViewer does not have built-in text extraction
// You would need to use OCR or another library
// It can only render pages as images
for (int i = 0; i < pageCount; i++)
{
var pageImage = document.Render(i, 96, 96, false);
Console.WriteLine($"Rendered page {i + 1}");
}} using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf; using System;
string pdfPath = "document.pdf";
// Open and extract text from PDF PdfDocument pdf = PdfDocument.FromFile(pdfPath);
// Extract text from all pages string allText = pdf.ExtractAllText(); Console.WriteLine("Extracted Text:"); Console.WriteLine(allText);
// Extract text from specific page string pageText = pdf.ExtractTextFromPage(0); Console.WriteLine($"\nFirst page text: {pageText}");
Console.WriteLine($"\nTotal pages: {pdf.PageCount}"); using IronPdf;
Este ejemplo pone de manifiesto una carencia fundamental. PdfiumViewerafirma explícitamente que "no tiene extracción de texto incorporada" y que "sería necesario utilizar OCR u otra biblioteca". Si necesitas texto de un PDF con PdfiumViewer, te ves obligado a convertirlo en una imagen y ejecutar el OCR.
IronPDF proporciona extracción de texto nativa con ExtractAllText() para todo el documento o ExtractTextFromPage(index) para páginas específicas. Sin OCR ni soluciones alternativas: extracción directa del texto a partir del contenido del PDF. Consulte la documentación de extracción de texto para obtener más opciones.
Ejemplo 2: Conversión de HTML a PDF
Antes (PdfiumViewer):
using IronPdf;csharp // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System.IO; using System.Drawing.Printing;
// PDFiumViewer is primarily a PDF viewer/renderer, not a generator // It cannot directly convert HTML to PDF // You would need to use another library to first create the PDF // Then use PDFiumViewer to display it:
string htmlContent = "
Hello World
This is a test document.
";// This functionality is NOT available in PDFiumViewer // You would need a different library like wkhtmltopdf or similar // PDFiumViewer can only open and display existing PDFs:
string existingPdfPath = "output.pdf"; using (var document = PdfDocument.Load(existingPdfPath)) { // Can only render/display existing PDF var image = document.Render(0, 300, 300, true); } using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf; using System;
string htmlContent = "
Hello World
This is a test document.
";// Create a PDF from HTML string var renderer = new ChromePdfRenderer(); PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!"); using IronPdf;
Este ejemplo muestra la diferencia más significativa entre las capacidades de las dos bibliotecas. PdfiumViewerafirma explícitamente "Esta funcionalidad NO está disponible en PDFiumViewer" y "Necesitarías una biblioteca diferente como wkhtmltopdf o similar"-PdfiumViewer sólo puede abrir y mostrar PDFs existentes.
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.
Ejemplo 3: Conversión de PDF a imagen
Antes (PdfiumViewer):
using IronPdf;csharp // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System; using System.Drawing; using System.Drawing.Imaging;
string pdfPath = "document.pdf"; string outputImage = "page1.png";
// PDFiumViewer excels at rendering PDFs to images using (var document = PdfDocument.Load(pdfPath)) { // Render first page at 300 DPI int dpi = 300; using (var image = document.Render(0, dpi, dpi, true)) { // Save as PNG image.Save(outputImage, ImageFormat.Png); Console.WriteLine($"Page rendered to {outputImage}"); }
// Render all pages
for (int i = 0; i < document.PageCount; i++)
{
using (var pageImage = document.Render(i, 150, 150, true))
{
pageImage.Save($"page_{i + 1}.png", ImageFormat.Png);
}
}} using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf; using System; using System.Linq;
string pdfPath = "document.pdf"; string outputImage = "page1.png";
// Open PDF and convert to images PdfDocument pdf = PdfDocument.FromFile(pdfPath);
// Convert first page to image var firstPageImage = pdf.ToBitmap(0); firstPageImage[0].Save(outputImage); Console.WriteLine($"Page rendered to {outputImage}");
// Convert all pages to images var allPageImages = pdf.ToBitmap(); for (int i = 0; i < allPageImages.Length; i++) { allPageImages[i].Save($"page_{i + 1}.png"); Console.WriteLine($"Saved page {i + 1}"); }
Console.WriteLine($"Total pages converted: {pdf.PageCount}"); using IronPdf;
Esta es un área en la que PdfiumViewerdestaca: el renderizado de PDF a imágenes es su punto fuerte. Ambas bibliotecas se encargan de esta tarea con eficacia, pero con patrones diferentes.
PdfiumViewer utiliza <código>document.Render(pageIndex, dpiX, dpiY, forPrinting)</códigocon sentencias using anidadas para su correcta eliminación. Es necesario importar System.Drawing y System.Drawing.Imaging para el enum ImageFormat.
IronPDF utiliza <código>pdf.ToBitmap(pageIndex)</códigoque devuelve una matriz de mapa de bits. El patrón es más sencillo, sin requisitos de disposición anidados. Para operaciones por lotes, ToBitmap() sin parámetros devuelve todas las páginas. También puede utilizar RasterizeToImageFiles() para la salida directa de archivos. Consulte Documentación de PDF a imagen para obtener más opciones de conversión.
Eliminación de dependencias nativas
Una de las ventajas significativas de migrar de PdfiumVieweraIronPDFes la eliminación de la gestión nativa de binarios.
Antes (PdfiumViewer) - Despliegue complejo
using IronPdf; MyApp/ ├── bin/ │├── MyApp.dll │├── PdfiumViewer.dll │ ├── x86/ ││└── pdfium.dll │ └── x64/ │ └── 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 native package references
using IronPdf;
Notas de migración críticas
Sin control de visor incorporado
IronPDF se centra en el backend y no incluye un control visual del visor de PDF:
using IronPdf;csharp // PdfiumViewer: Built-in viewer control pdfViewer.Document = document;
// IronPDF: Use external viewer or web-based approach pdf.SaveAs(tempPath); Process.Start(new ProcessStartInfo(tempPath) { UseShellExecute = true }); using IronPdf;
Para las necesidades de visualización, considere el uso de Process.Start() para abrir en el visor PDF predeterminado, un control WebBrowser con la ruta PDF o controles de visor de terceros como Syncfusion, DevExpress o Telerik.
Cambio de método de carga de documentos
using IronPdf;csharp // PdfiumViewer PdfDocument.Load(path)
// IronPDF PdfDocument.FromFile(path) using IronPdf;
Cambio de método de guardado
using IronPdf;csharp // PdfiumViewer document.Save(path)
// IronPDF pdf.SaveAs(path) using IronPdf;
Cambio de método de renderización
using IronPdf;csharp // PdfiumViewer: Returns image with nested using using (var image = document.Render(0, 150, 150, true)) { image.Save("page.png", ImageFormat.Png); }
// IronPDF: Returns bitmap array var images = pdf.ToBitmap(0); images[0].Save("page.png"); using IronPdf;
Cambio de tamaño de página
using IronPdf;csharp // PdfiumViewer var size = document.PageSizes[index]; Console.WriteLine($"{size.Width} x {size.Height}");
// IronPDF var page = pdf.Pages[index]; Console.WriteLine($"{page.Width} x {page.Height}"); using IronPdf;
Resumen comparativo de características
| Característica | PdfiumViewer | IronPDF |
|---|---|---|
| Cargar PDF | ✓ | ✓ |
| Renderizado a imagen | ✓ | ✓ |
| Visor incorporado | ✓ | ✗ |
| Imprimir PDF | ✓ | ✓ |
| Extraer texto | ✗ | ✓ |
| 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 | ✗ | ✓ |
| Protección por contraseña | ✗ | ✓ |
| Compatibilidad con WinForms | ✓ | ✓ |
| Soporte ASP.NET | ✗ | ✓ |
| compatibilidad con .NET Core | Limitado | ✓ |
| Mantenimiento activo | Incierto | ✓ |
Lista de comprobación de la migración
Pre-Migración
- [ ] Identificar todos los usos de PdfiumVieweren el código base
- [ ] Lista WinForms utilizando el control PdfViewer
- [ ] Documentar la configuración actual de PPP
- [ ] Comprobación de referencias binarias nativas
- [ ] Identificar el uso de la funcionalidad de impresión
- [ ] Planificar la estrategia de sustitución del control del visor
- [ ] Obtener la clave de licencia de IronPDF
Cambios en el paquete
- [ ] Eliminar el paquete NuGet
PdfiumViewer - [ ] Eliminar el paquete
PdfiumViewer.Native.x86.v8-xfa - [ ] Eliminar el paquete
PdfiumViewer.Native.x64.v8-xfa - [Eliminar los binarios nativos pdfium.dll de las carpetas x86/ y x64/
- [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() - [ ] Sustituya
document.Render()porpdf.ToBitmap()oRasterizeToImageFiles() - [Reemplace
document.PageSizes[i]porpdf.Pages[i].Width/Height - [ ] Sustituir el control PdfViewer por un visor externo o Process.Start()
- [ ] Añadir nuevas funciones (extracción de texto, HTML a PDF, etc.)
Posmigración
- [ ] Comprobar la calidad del renderizado
- [ ] Probar la funcionalidad de impresión
- [ ] Prueba en las plataformas de destino
- [ ] 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 PdfiumVieweraIronPDFtransforma su flujo de trabajo PDF de una biblioteca de visualización exclusiva de Windows Forms a una solución PDF completa con funciones de creación, manipulación, extracción de texto y representación en todos los tipos de aplicaciones .NET.
Los cambios clave en esta migración son:
- Alcance: Sólo visualización → Solución completa en PDF
- Plataforma: Solo Windows Forms → Todos los tipos de aplicaciones .NET
- Visor: Control incorporado → Centrado en el backend (utilice un visor externo)
- Carga:
PdfDocument.Load()→PdfDocument.FromFile() - Guardar:
Guardar()→GuardarComo() - Renderización:
Render(index, dpi, dpi, flag)→ToBitmap(index)oRasterizeToImageFiles() - Nuevas funciones: extracción de texto, conversión de 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 PdfiumViewer.






