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
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.
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.
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.
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.
- 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
| Aspecto | ExpertPdf | IronPDF |
|---|---|---|
| Documentación | Congelado desde 2018 | Actualización continua |
| Motor de renderizado | Chrome heredado | Último Chromium |
| Soporte CSS | CSS3 limitado | CSS3 completo (Flexbox, Grid) |
| Precio | $550-$1,200 | Precios competitivos |
| Frecuencia de actualización | Poco frecuente | Publicaciones mensuales |
| Modelo de producto | Fragmentado (5+ DLLs) | Biblioteca todo en uno |
| Moderno .NET | Limitado | .NET 6/7/8/9+ nativo |
| Soporte Async | Limitado | Async/await completo |
Beneficios clave de la migración
- Renderizado moderno: El último motor de Chromium para un resultado con píxeles perfectos
- Paquete todo en uno: Generación, fusión, seguridad y extracción de PDF en un solo NuGet
- Desarrollo Activo: Actualizaciones mensuales con nuevas características y parches de seguridad
- Mejor documentación: Tutoriales y ejemplos exhaustivos
- 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"Paquetes de ExpertPdfmás comunes:
ExpertPdf.HtmlToPdf- Conversión de HTML a PDFExpertPdf.PDFMerge- Fusión de archivos PDFExpertPdf.PDFSecurity- Cifrado y contraseñasExpertPdf.PDFSplit- División de PDFExpertPdf.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 IronPdfPaso 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.comPaso 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.comReferencia completa de migración de API
Mapeo de clases principales
| Clase ExpertPdf | Equivalente de IronPDF | Notas |
|---|---|---|
Convertidor de PDF | <código>ChromePdfRenderer</código | Clase principal de conversión |
| <código>PdfDocumentOptions</código | <código>ChromePdfRenderOptions</código | A 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ódigo | PdfDocument.Merge() | Método estático |
Métodos
| Método ExpertPdf | Método IronPDF | Notas |
|---|---|---|
| <código>pdfConverter.GetPdfBytesFromHtmlString(html)</código | renderer.RenderHtmlAsPdf(html).BinaryData | |
| <código>pdfConverter.GetPdfBytesFromUrl(url)</código | <código>renderer.RenderUrlAsPdf(url).BinaryData</código | |
| <código>pdfConverter.GetPdfBytesFromHtmlFile(path)</código | renderer.RenderHtmlFileAsPdf(path).BinaryData | |
| <código>pdfConverter.SavePdfFromUrlToFile(url, path)</código | <código>renderer.RenderUrlAsPdf(url).SaveAs(path)</código | Dos pasos |
Mapeo de opciones
| Opción ExpertPdf | Opciones de renderizado de IronPDF | Notas |
|---|---|---|
| <código>PdfDocumentOptions.PdfPageSize = PdfPageSize.A4</código | <código>TamañoPapel = PdfPaperSize.A4</código | |
PdfDocumentOptions.PdfPageOrientation = Portrait | Orientación del papel = PdfPaperOrientation.Portrait | |
| <código>PdfDocumentOptions.MarginTop</código | <código>MarginTop</código | Mismo 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:
| ExpertPdf | IronPDF |
|---|---|
| <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.comImplementació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.comEl 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.comImplementació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.comIronPDF'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.comImplementació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.comEl 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.comConversió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.comPaquetes 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.comPara 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.






