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

Cómo migrar de ExpertPdf a IronPDF en C#

Migrar de ExpertPdfa IronPDF: Guía completa de migración a C

ExpertPdf es un conversor comercial de HTML a PDF para .NET que lleva muchos años al servicio de los desarrolladores. Sin embargo, ExpertPdfse enfrenta a desafíos significativos en el panorama actual de desarrollo en rápida evolución: documentación congelada desde 2018, dependencia de una versión heredada de Chrome que echa de menos las características modernas de CSS3, precios premium que oscilan entre $ 550 y $ 1200 para una tecnología obsoleta, y una suite de productos fragmentada que requiere licencias separadas para la fusión, la seguridad y la división. Esta completa guía proporciona una ruta de migración paso a paso de ExpertPdfa IronPDF, una moderna biblioteca PDF .NET con la última renderización de Chromium, actualizaciones mensuales y una arquitectura de paquetes todo en uno.

¿Por qué migrar de ExpertPdfa IronPDF?

ExpertPdf presenta varios retos que llevan a los equipos de desarrollo a evaluar alternativas modernas. Comprender estas cuestiones es esencial para planificar su estrategia de migración.

Los problemas de ExpertPdf

  1. Documentación Congelada desde 2018: La documentación de ExpertPdfno se ha actualizado en más de 6 años. Encontrar información actualizada, ejemplos y buenas prácticas es cada vez más difícil a medida que evoluciona el ecosistema .NET.

  2. Versión obsoleta de Chrome: ExpertPdfutiliza una versión obsoleta de Chrome para la renderización. Es posible que las funciones modernas de CSS3 (Flexbox, Grid, Variables CSS) no se muestren correctamente y que no se apliquen los parches de seguridad.

  3. Precios premium para tecnología heredada: Con un precio de entre 550 y 1200 dólares por licencia, ExpertPdfcobra precios premium a la vez que ofrece una tecnología de renderizado obsoleta.

  4. Suite de productos fragmentados: ExpertPdfvende paquetes separados para diferentes funciones -HtmlToPdf Converter, PDF Merger, PDF Security, PDF Splitter y PDF to Image- que requieren licencias separadas.

  5. Soporte moderno limitado de .NET: Aunque ExpertPdfdispone de paquetes .NET Core, van por detrás de las versiones y prácticas modernas de .NET.

Comparación de arquitecturas

AspectoExpertPdfIronPDF
DocumentaciónCongelado desde 2018Actualización continua
Motor de renderizadoChrome heredadoÚltimo Chromium
Soporte CSSCSS3 limitadoCSS3 completo (Flexbox, Grid)
Precio$550-$1,200Precios competitivos
Frecuencia de actualizaciónPoco frecuentePublicaciones mensuales
Modelo de productoFragmentado (5+ DLLs)Biblioteca todo en uno
Moderno .NETLimitado.NET 6/7/8/9+ nativo
Soporte AsyncLimitadoAsync/await completo

Beneficios clave de la migración

  1. Renderizado moderno: El último motor de Chromium para un resultado con píxeles perfectos
  2. Paquete todo en uno: Generación, fusión, seguridad y extracción de PDF en un solo NuGet
  3. Desarrollo Activo: Actualizaciones mensuales con nuevas características y parches de seguridad
  4. Mejor documentación: Tutoriales y ejemplos exhaustivos
  5. True Cross-Platform: Windows, Linux, macOS, compatibilidad con Docker

Preparación de la migración

Prerrequisitos

Asegúrese de que su entorno cumple estos requisitos:

  • .NET Framework 4.6.2+ o .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ o VS Code con extensión de C#
  • Acceso al gestor de paquetes NuGet
  • Clave de licencia deIronPDF(prueba gratuita disponible en ironpdf.com)

Uso de Auditoría ExpertaPdf

Ejecuta estos comandos en tu directorio de soluciones para identificar todas las referencias a ExpertPdf:

# Find all ExpertPdfreferences
grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" .

# Check NuGet packages
dotnet list package | grep -i "ExpertPdf"
# Find all ExpertPdfreferences
grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" .

# Check NuGet packages
dotnet list package | grep -i "ExpertPdf"
SHELL

Paquetes de ExpertPdfmás comunes:

  • ExpertPdf.HtmlToPdf - Conversión de HTML a PDF
  • ExpertPdf.PDFMerge - Fusión de archivos PDF
  • ExpertPdf.PDFSecurity - Cifrado y contraseñas
  • ExpertPdf.PDFSplit - División de PDF
  • ExpertPdf.PdfToImage - Conversión de PDF a imagen

Comprensión del cambio de patrón básico

ExpertPdf utiliza Convertidor de PDFcon métodos de devolución directa de matrices de bytes.IronPDFutiliza <código>ChromePdfRenderer</códigoque devuelve objetos PdfDocument que proporcionan capacidades de manipulación adicionales antes de guardar.

Proceso de migración paso a paso

Paso 1: Actualizar paquetes NuGet

Elimine todos los paquetes de ExpertPdfe instale IronPDF:

# Remove all ExpertPdfpackages
dotnet remove package ExpertPdf.HtmlToPdf
dotnet remove package ExpertPdf.PDFMerge
dotnet remove package ExpertPdf.PDFSecurity
dotnet remove package ExpertPdf.PDFSplit
dotnet remove package ExpertPdf.PdfToImage

# InstallIronPDF(includes all features)
dotnet add package IronPdf
# Remove all ExpertPdfpackages
dotnet remove package ExpertPdf.HtmlToPdf
dotnet remove package ExpertPdf.PDFMerge
dotnet remove package ExpertPdf.PDFSecurity
dotnet remove package ExpertPdf.PDFSplit
dotnet remove package ExpertPdf.PdfToImage

# InstallIronPDF(includes all features)
dotnet add package IronPdf
SHELL

Paso 2: Actualizar referencias de espacios de nombres

Sustituya los espacios de nombres ExpertPdfpor IronPDF:

// Remove these
using ExpertPdf.HtmlToPdf;

// Add this
using IronPdf;
// Remove these
using ExpertPdf.HtmlToPdf;

// Add this
using IronPdf;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Paso 3: Configurar la licencia

ExpertPdf utiliza licencias por conversor.IronPDFutiliza una única licencia global:

// 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.com
$vbLabelText   $csharpLabel

Referencia completa de migración de API

Mapeo de clases principales

Clase ExpertPdfEquivalente de IronPDFNotas
Convertidor de PDF<código>ChromePdfRenderer</códigoClase principal de conversión
<código>PdfDocumentOptions</código<código>ChromePdfRenderOptions</códigoA través de RenderingOptions
<código>PdfHeaderOptions</código<código>TextHeaderFooter</código> o <código>HtmlHeaderFooter</código>Configurable
<código>PdfFooterOptions</código<código>TextHeaderFooter</código> o <código>HtmlHeaderFooter</código>Configurable
<código>PDFMerge</códigoPdfDocument.Merge()Método estático

Métodos

Método ExpertPdfMétodo IronPDFNotas
<código>pdfConverter.GetPdfBytesFromHtmlString(html)</códigorenderer.RenderHtmlAsPdf(html).BinaryData
<código>pdfConverter.GetPdfBytesFromUrl(url)</código<código>renderer.RenderUrlAsPdf(url).BinaryData</código
<código>pdfConverter.GetPdfBytesFromHtmlFile(path)</códigorenderer.RenderHtmlFileAsPdf(path).BinaryData
<código>pdfConverter.SavePdfFromUrlToFile(url, path)</código<código>renderer.RenderUrlAsPdf(url).SaveAs(path)</códigoDos pasos

Mapeo de opciones

Opción ExpertPdfOpciones de renderizado de IronPDFNotas
<código>PdfDocumentOptions.PdfPageSize = PdfPageSize.A4</código<código>TamañoPapel = PdfPaperSize.A4</código
PdfDocumentOptions.PdfPageOrientation = PortraitOrientación del papel = PdfPaperOrientation.Portrait
<código>PdfDocumentOptions.MarginTop</código<código>MarginTop</códigoMismo nombre de propiedad
<código>PdfHeaderOptions.HeaderText</código<código>TextHeader.CenterText</código
<código>PdfFooterOptions.FooterText</código<código>TextFooter.RightText</código

Conversión de tokens de numeración de páginas

ExpertPdf eIronPDFutilizan una sintaxis diferente para los números de página:

ExpertPdfIronPDF
<código>&p;</código>{page}
&P;{total de páginas}

Ejemplos de migración de código

Conversión de HTML a PDF

La conversión fundamental de HTML a PDF demuestra el cambio del patrón de matriz de bytes de ExpertPdfal enfoque de documento-objeto de IronPDF.

Implementación de ExpertPdf:

// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Convert HTML string to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>");

        // Save to file
        System.IO.File.WriteAllBytes("output.pdf", pdfBytes);

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Convert HTML string to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>");

        // Save to file
        System.IO.File.WriteAllBytes("output.pdf", pdfBytes);

        Console.WriteLine("PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Implementación de IronPDF:

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

class Program
{
    static void Main()
    {
        // Create a PDF from HTML string
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>");

        // Save to file
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF from HTML string
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>");

        // Save to file
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

El enfoque deIronPDFdevuelve un objeto PdfDocument, lo que permite una manipulación adicional (fusión, marca de agua, seguridad) antes de guardarlo. Para más opciones, consulte la documentación HTML a PDF.

URL a PDF con configuración de página

Implementación de ExpertPdf:

// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Set page size and orientation
        pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
        pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;

        // Convert URL to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com");

        // Save to file
        System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);

        Console.WriteLine("PDF from URL created successfully!");
    }
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Set page size and orientation
        pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
        pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;

        // Convert URL to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com");

        // Save to file
        System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);

        Console.WriteLine("PDF from URL created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Implementación de IronPDF:

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

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Set page size and orientation
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;

        // Convert URL to PDF
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");

        // Save to file
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Set page size and orientation
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;

        // Convert URL to PDF
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");

        // Save to file
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF's RenderingOptions proporciona acceso directo a propiedades para la configuración de páginas. Para obtener más opciones, consulte URL a la documentación en PDF.

Cabeceras y pies de página con números de página

Este ejemplo demuestra la diferencia crítica en la configuración del encabezado/pie de página: ExpertPdfutiliza clases <código>PdfHeaderOptions</códigoy <código>PdfFooterOptions</códigoseparadas con tokens &p;/&P;, mientras queIronPDFutiliza TextHeaderFooter con marcadores de posición {page}/{total-pages}.

Implementación de ExpertPdf:

// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Enable header
        pdfConverter.PdfHeaderOptions.ShowHeader = true;
        pdfConverter.PdfHeaderOptions.HeaderText = "Document Header";
        pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center;

        // Enable footer with page numbers
        pdfConverter.PdfFooterOptions.ShowFooter = true;
        pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;";
        pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right;

        // Convert HTML file to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html");

        // Save to file
        System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes);

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Enable header
        pdfConverter.PdfHeaderOptions.ShowHeader = true;
        pdfConverter.PdfHeaderOptions.HeaderText = "Document Header";
        pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center;

        // Enable footer with page numbers
        pdfConverter.PdfFooterOptions.ShowFooter = true;
        pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;";
        pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right;

        // Convert HTML file to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html");

        // Save to file
        System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes);

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Implementación de IronPDF:

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

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Configure header
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            DrawDividerLine = true
        };

        // Configure footer with page numbers
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true
        };

        // Convert HTML file to PDF
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");

        // Save to file
        pdf.SaveAs("output-with-header-footer.pdf");

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Configure header
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            DrawDividerLine = true
        };

        // Configure footer with page numbers
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true
        };

        // Convert HTML file to PDF
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");

        // Save to file
        pdf.SaveAs("output-with-header-footer.pdf");

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

El TextHeaderFooter deIronPDFproporciona las propiedades LeftText, CenterText y RightText con líneas divisorias opcionales. Para los encabezados basados en HTML, utilice HtmlHeaderFooter. Para más opciones, consulte la documentación sobre encabezados y pies de página.

Notas de migración críticas

Localización de la clave de licencia

ExpertPdf utiliza licencias por conversor.IronPDFutiliza una única licencia global establecida una vez al inicio:

// ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE";

//IronPDF- global, set once
IronPdf.License.LicenseKey = "IRONPDF-LICENSE";
// ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE";

//IronPDF- global, set once
IronPdf.License.LicenseKey = "IRONPDF-LICENSE";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Conversión de tokens de numeración de páginas

Sustituye los tokens de ExpertPdfpor marcadores de posición de IronPDF:

// ExpertPdf
"Page &p; of &P;"

// IronPDF
"Page {page} of {total-pages}"
// ExpertPdf
"Page &p; of &P;"

// IronPDF
"Page {page} of {total-pages}"
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Paquetes fragmentados consolidados

Los paquetes independientes de ExpertPdf(PDFMerge, PDFSecurity, PDFSplit, PdfToImage) están todos incluidos en el paquete único de IronPDF:

// ExpertPdf- requires separate PDFMerge package
var merger = new PdfMerge();
merger.AppendPDFFile("file1.pdf");
merger.AppendPDFFile("file2.pdf");
merger.SaveMergedPDFToFile("merged.pdf");

//IronPDF- included in main package
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
// ExpertPdf- requires separate PDFMerge package
var merger = new PdfMerge();
merger.AppendPDFFile("file1.pdf");
merger.AppendPDFFile("file2.pdf");
merger.SaveMergedPDFToFile("merged.pdf");

//IronPDF- included in main package
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Para obtener más opciones de fusión, consulte la Documentación sobre la fusión de PDF.

Tamaños de página personalizados

ExpertPdf utiliza puntos.IronPDFutiliza milímetros. Convertir: puntos / 72 * 25,4 = mm

Lista de comprobación posterior a la migración

Después de completar la migración del código, verifique lo siguiente:

  • [ ] Comparación visual de los PDF generados
  • [ ] Verificación de encabezados/pies de página y números de página
  • [ ] Probar la configuración de seguridad/cifrado
  • [ ] Validar operaciones de fusión
  • [ ] Comprobar tamaños de página personalizados
  • [Evaluación comparativa del rendimiento
  • [ ] Pruebas multiplataforma
  • [ ] Eliminar archivos de licencia de ExpertPdf
  • [ ] Actualización de la documentación

Proteja su infraestructura PDF

Con .NET 10 en el horizonte y C# 14 introduciendo nuevas características del lenguaje, elegir una biblioteca PDF con un desarrollo activo y un renderizado moderno garantiza la compatibilidad a largo plazo. Las actualizaciones mensuales deIronPDFy el último motor Chromium proporcionan la base para la generación de PDF que seguirá funcionando correctamente con los modernos diseños CSS3 (Flexbox, Grid) a medida que los proyectos se extiendan hasta 2025 y 2026, a diferencia de la versión Chrome heredada de ExpertPdfcongelada en el tiempo.

Recursos adicionales


La migración de ExpertPdfaIronPDFelimina los desafíos de la documentación congelada, la renderización heredada de Chrome, las licencias de productos fragmentadas y la compatibilidad moderna limitada con .NET. La transición a una biblioteca mantenida de forma activa con el último motor Chromium garantiza que la generación de PDF sigue el ritmo de la evolución de los estándares web y los marcos .NET.

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