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

Cómo migrar de PDFView4NET a IronPDF en C#

La migración de PDFView4NETaIronPDFtransforma su flujo de trabajo PDF de un componente de visualización centrado en la interfaz de usuario a una completa biblioteca de generación y manipulación de PDF. Esta guía proporciona una ruta de migración completa, paso a paso, que permite el procesamiento del lado del servidor, la compatibilidad con aplicaciones web y funciones completas de gestión del ciclo de vida de PDF que PDFView4NETno puede proporcionar.

Por qué migrar de PDFView4NETa IronPDF

Entender PDFView4NET

PDFView4NET es una opción popular para los desarrolladores que se centran principalmente en las funciones de visualización de PDF en C#. PDFView4NETofrece sólidos controles de visualización de PDF adaptados a aplicaciones Windows Forms (WinForms) y Windows Presentation Foundation (WPF). El énfasis de la biblioteca en proporcionar una experiencia de visualización de PDF sin problemas la convierte en una opción a la que recurrir para el desarrollo de aplicaciones de escritorio.

A pesar de sus puntos fuertes, PDFView4NETtiene limitaciones que pueden incitar a los desarrolladores a explorar bibliotecas más completas como IronPDF, que ofrece una solución todo en uno para PDF que abarca capacidades de creación, visualización y manipulación sin limitarse a componentes específicos de la interfaz de usuario.

La limitación de solo visualización

PDFView4NET es principalmente un componente de visualización de interfaz de usuario para aplicaciones WinFormsy WPF. Se centra en la visualización de PDF más que en su creación o manipulación. Razones clave para migrar:

  1. Limitaciones de solo visualización: PDFView4NETestá diseñado para visualizar, no para crear PDF.

  2. Dependencia del marco de interfaz de usuario: requiere contexto WinFormso WPF. El requisito de entornos WinFormso WPFpuede restringir el uso en otros contextos, como aplicaciones de consola o servicios web, que no son compatibles con PDFView4NET.

  3. No HTML a PDF: No se puede convertir HTML o URL a PDF. La biblioteca se centra estrictamente en la visualización, sin funciones integradas para crear o manipular archivos PDF.

  4. Manipulación limitada: Edición básica en comparación con el conjunto completo de funciones de IronPDF.

  5. Sin soporte del lado del servidor: no se puede ejecutar en servicios web o funciones de Azure.

  6. Tecnología heredada: desarrollo menos activo y actualizaciones de funciones modernas.

Comparación entre PDFView4NETe IronPDF

CaracterísticaPDFView4NETIronPDF
Enfoque principalVisualización en PDFSolución PDF completa (crear, ver, editar)
Framework de interfaz de usuario requeridoWinForms, WPFNinguno
Creación de PDFNo
Manipulación de PDFLimitado (anotaciones)
Lado ServidorNo compatibleSoporte completo
Aplicaciones webNo
Aplicaciones de consolaLimitadoSoporte completo
Azure/DockerNo
HTML a PDFNo
Contexto multiplataformaNo
Facilidad de integraciónMedioAlta

IronPDF se distingue por su versatilidad y su amplio conjunto de funciones, lo que lo hace especialmente atractivo para los desarrolladores que necesitan un enfoque holístico del manejo de PDF en C#. La biblioteca admite la creación, visualización y edición de PDF, entre otras funciones, y aborda casos de uso que van mucho más allá de las capacidades de visualización de PDFView4NET.

Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona independencia de contexto: puede utilizarse en diferentes contextos, incluidas aplicaciones web, servicios y aplicaciones de consola. Esta flexibilidad es crucial para proyectos que requieren compatibilidad entre plataformas y diversos escenarios de despliegue.


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 de IronPDF: Obtenga su clave de licencia en ironpdf.com

Cambios en el paquete NuGet

<!-- Remove PDFView4NET-->
<PackageReference Include="O2S.Components.PDFView4NET" Version="*" Remove />

<!-- AddIronPDF-->
<PackageReference Include="IronPdf" Version="2024.*" />
<!-- Remove PDFView4NET-->
<PackageReference Include="O2S.Components.PDFView4NET" Version="*" Remove />

<!-- AddIronPDF-->
<PackageReference Include="IronPdf" Version="2024.*" />
XML

O a través de CLI:

dotnet remove package O2S.Components.PDFView4NET
dotnet add package IronPdf
dotnet remove package O2S.Components.PDFView4NET
dotnet add package IronPdf
SHELL

Configuración de licencias

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

Referencia completa de la API

Cambios en el espacio de nombres

// Before: PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using O2S.Components.PDFView4NET.Printing;

// After: IronPDF
using IronPdf;
// Before: PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using O2S.Components.PDFView4NET.Printing;

// After: IronPDF
using IronPdf;
$vbLabelText   $csharpLabel

Mapeos de API principales

PDFView4NETIronPDFNotas
<código>PDFFile.Open(ruta)</código<código>PdfDocument.FromFile(path)</códigoCargar PDF
<código>PDFFile.Open(stream)</código<código>PdfDocument.FromStream(stream)</códigoCargar desde stream
<código>pdfFile.GetPage(index)</códigopdf.Pages[index]Página de acceso
<código>pdfFile.PageCount</código<código>pdf.PageCount</códigoNúmero de páginas
<código>PDFPrintDocument</códigopdf.Print()Imprimir PDF
pdfFile.Close()<código>pdf.Dispose()</códigoLimpieza
<código>HtmlToPdfConverter</código<código>ChromePdfRenderer</códigoHTML a PDF
N/APdfDocument.Merge()Fusionar PDF
N/A<código>pdf.ApplyWatermark()</códigoAñadir marca de agua
N/A<código>pdf.SecuritySettings</códigoProtección mediante contraseña

Ejemplos de migración de código

Ejemplo 1: Conversión de URL a PDF

Antes (PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.NavigateUri = new Uri("https://example.com");
        converter.ConvertHtmlToPdf();
        converter.SavePdf("output.pdf");
    }
}
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.NavigateUri = new Uri("https://example.com");
        converter.ConvertHtmlToPdf();
        converter.SavePdf("output.pdf");
    }
}
$vbLabelText   $csharpLabel

Después (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFView4NET utiliza <código>HtmlToPdfConverter</códigocon la propiedad NavigateUri establecida en un objeto Uri, seguido de una llamada a ConvertHtmlToPdf() y luego a SavePdf().IronPDFsimplifica esto a un único <código>ChromePdfRenderer</códigocon RenderUrlAsPdf() que acepta una cadena URL directamente, devolviendo un PdfDocument que se guarda con SaveAs(). El enfoque deIronPDFofrece una sintaxis más limpia y una mejor integración con las aplicaciones .NET modernas. Consulte la documentación HTML a PDF para ver ejemplos completos.

Ejemplo 2: Conversión de cadenas HTML a PDF

Antes (PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.HtmlContent = htmlContent;
        converter.ConvertHtmlToPdf();
        converter.SavePdf("document.pdf");
    }
}
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.HtmlContent = htmlContent;
        converter.ConvertHtmlToPdf();
        converter.SavePdf("document.pdf");
    }
}
$vbLabelText   $csharpLabel

Después (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("document.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFView4NET utiliza la propiedad HtmlContent para establecer la cadena HTML, luego requiere llamar a ConvertHtmlToPdf() seguido de SavePdf().IronPDFproporciona una API más fluida en la que RenderHtmlAsPdf() acepta directamente la cadena HTML y devuelve un PdfDocument. Los nombres de los métodos son más intuitivos: <código>RenderHtmlAsPdf</código> frente a <código>ConvertHtmlToPdf</código>. Más información en nuestros tutoriales.

Ejemplo 3: Extracción de texto de un PDF

Antes (PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        using (FileStream fs = File.OpenRead("document.pdf"))
        {
            PDFDocument document = new PDFDocument(fs);
            string text = "";
            for (int i = 0; i < document.Pages.Count; i++)
            {
                text += document.Pages[i].ExtractText();
            }
            Console.WriteLine(text);
        }
    }
}
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        using (FileStream fs = File.OpenRead("document.pdf"))
        {
            PDFDocument document = new PDFDocument(fs);
            string text = "";
            for (int i = 0; i < document.Pages.Count; i++)
            {
                text += document.Pages[i].ExtractText();
            }
            Console.WriteLine(text);
        }
    }
}
$vbLabelText   $csharpLabel

Después (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.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("document.pdf");
        string text = pdf.ExtractAllText();
        Console.WriteLine(text);
    }
}
$vbLabelText   $csharpLabel

Este ejemplo destaca una diferencia significativa entre las API. PDFView4NETrequiere crear manualmente un FileStream, instanciar PDFDocument con el flujo, luego recorrer document.Pages.Count y concatenar Pages[i].ExtractText() para cada página.

IronPDF simplifica esto drásticamente: PdfDocument.FromFile() carga el PDF directamente desde una ruta, y ExtractAllText() extrae el texto de todas las páginas en una sola llamada al método. Sin gestión manual de flujos, sin bucles, sin concatenación de cadenas: sólo dos líneas de código.


Notas de migración críticas

Cambio de clase de conversor

PDFView4NET utiliza HtmlToPdfConverter;IronPDFutiliza ChromePdfRenderer:

// PDFView4NET
HtmlToPdfConverter converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PDFView4NET
HtmlToPdfConverter converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

API basada en propiedades frente a API basada en métodos

PDFView4NET establece las propiedades antes de la conversión:

// PDFView4NET: Set properties, then convert
converter.HtmlContent = htmlContent;
converter.NavigateUri = new Uri(url);
converter.ConvertHtmlToPdf();
converter.SavePdf("output.pdf");

// IronPDF: Method parameters with fluent API
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");
// PDFView4NET: Set properties, then convert
converter.HtmlContent = htmlContent;
converter.NavigateUri = new Uri(url);
converter.ConvertHtmlToPdf();
converter.SavePdf("output.pdf");

// IronPDF: Method parameters with fluent API
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

Cambio de carga del documento

// PDFView4NET: Requires FileStream
using (FileStream fs = File.OpenRead("document.pdf"))
{
    PDFDocument document = new PDFDocument(fs);
}

// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");
// PDFView4NET: Requires FileStream
using (FileStream fs = File.OpenRead("document.pdf"))
{
    PDFDocument document = new PDFDocument(fs);
}

// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");
$vbLabelText   $csharpLabel

Cambio de acceso a la página

// PDFView4NET: document.Pages.Count and Pages[i]
for (int i = 0; i < document.Pages.Count; i++)
{
    document.Pages[i].ExtractText();
}

// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);
// PDFView4NET: document.Pages.Count and Pages[i]
for (int i = 0; i < document.Pages.Count; i++)
{
    document.Pages[i].ExtractText();
}

// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);
$vbLabelText   $csharpLabel

Cambio de método de guardado

// PDFView4NET: SavePdf()
converter.SavePdf("output.pdf");

// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");
// PDFView4NET: SavePdf()
converter.SavePdf("output.pdf");

// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

Nuevas capacidades tras la migración

Tras migrar a IronPDF, obtendrá funciones que PDFView4NETno puede ofrecer:

Fusión de PDF

var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");
$vbLabelText   $csharpLabel

Marcas de agua con HTML

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
    <div style='
        font-size: 72pt;
        color: rgba(255, 0, 0, 0.2);
        transform: rotate(-45deg);
    '>
        CONFIDENTIAL
    </div>");
pdf.SaveAs("watermarked.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
    <div style='
        font-size: 72pt;
        color: rgba(255, 0, 0, 0.2);
        transform: rotate(-45deg);
    '>
        CONFIDENTIAL
    </div>");
pdf.SaveAs("watermarked.pdf");
$vbLabelText   $csharpLabel

Protección con contraseña

var pdf = PdfDocument.FromFile("document.pdf");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
$vbLabelText   $csharpLabel

Relleno de formularios

var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("FirstName").Value = "John";
pdf.Form.GetFieldByName("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("FirstName").Value = "John";
pdf.Form.GetFieldByName("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");
$vbLabelText   $csharpLabel

Procesamiento del lado del servidor

PDFView4NET no puede ejecutarse en entornos de servidor.IronPDFdestaca aquí:

// ASP.NET Core
[HttpGet]
public IActionResult GeneratePdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(GetReportHtml());
    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
// ASP.NET Core
[HttpGet]
public IActionResult GeneratePdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(GetReportHtml());
    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
$vbLabelText   $csharpLabel

Resumen comparativo de características

CaracterísticaPDFView4NETIronPDF
Ver PDFSí (interfaz de usuario)No (usar visor)
Cargar PDF
Guardar PDFLimitado
HTML a PDFNo
URL a PDFNo
Fusionar PDFNo
Dividir PDFLimitado
Marcas de aguaNo
Encabezados/pies de páginaNo
Protección por contraseñaNo
Firmas digitalesNo
Extracción de TextoLimitado
Rellenar formulariosLimitado
WinForms
WPF
ConsolaLimitado
ASP.NETNo
AzureNo
DockerNo

Lista de comprobación de la migración

Pre-Migración

  • Identificar los requisitos de visualización (determinar si las capacidades deIronPDFpueden reemplazar la visualización de PDF basada en UI)
  • Flujos de trabajo de impresión de documentos
  • Enumerar las necesidades de manipulación de PDF
  • Planifique el reemplazo del visor si es necesario (IronPDF se centra en la generación/manipulación)
  • Obtenga la clave de licencia deIronPDFen ironpdf.com

Cambios en el paquete

  • Eliminar el paquete NuGet O2S.Components.PDFView4NET
  • Instalar el paquete NuGet IronPdf : dotnet add package IronPdf

Cambios de código

  • Actualizar las importaciones del espacio de nombres ( using O2S.Components.PDFView4NET;using IronPdf; )
  • Reemplace <código>HtmlToPdfConverter</códigocon ChromePdfRenderer
  • Reemplace converter.HtmlContent + ConvertHtmlToPdf() con renderer.RenderHtmlAsPdf(html)
  • Reemplace converter.NavigateUri + ConvertHtmlToPdf() con renderer.RenderUrlAsPdf(url)
  • Reemplace converter.SavePdf() con pdf.SaveAs()
  • Reemplace PDFDocument(stream) con PdfDocument.FromFile(path)
  • Reemplace la extracción manual del bucle de página con pdf.ExtractAllText()
  • Agregar inicialización de licencia al iniciar la aplicación

Posmigración

  • Prueba de carga y guardado de PDF
  • Verificar la funcionalidad de extracción de texto
  • Prueba de conversión de HTML a PDF
  • Verificar que la implementación del servidor funcione (nueva capacidad)
  • Pruebe la multiplataforma si es necesario (nueva capacidad)
  • Eliminar el código PDF específico de la interfaz de usuario si es solo del servidor

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