Cómo migrar de Easy PDF SDK a IronPDF en C#
Migrar de SDK Easy PDFa IronPDF: Guía completa de migración a C
BCL SDK Easy PDFha sido una solución tradicional para la generación de PDF en entornos Windows, utilizando controladores de impresora virtuales y automatización de Microsoft Office. Sin embargo, su arquitectura exclusiva para Windows, las dependencias de interoperabilidad COM y el requisito de sesiones de usuario interactivas plantean retos fundamentales de despliegue para las aplicaciones modernas. Esta completa guía proporciona una ruta de migración paso a paso desde SDK Easy PDFa IronPDF, una biblioteca PDF nativa de .NET con compatibilidad multiplataforma, renderización basada en Chromium y capacidades de implementación en contenedores.
¿Por qué migrar de Easy PDF SDK?
Easy PDF SDK se basa en varias tecnologías heredadas que plantean importantes retos de implantación y mantenimiento en los entornos de desarrollo modernos.
Problemas comunes de implementación de Easy PDF SDK
Los desarrolladores se encuentran a menudo con estos problemas cuando trabajan con Easy PDF SDK:
bcl.easypdf.interop.easypdfprinter.dll error loadingEl objeto COM que se ha separado de su RCW subyacente no se puede utilizarTiempo de espera expirado para que se complete el trabajo de impresiónLa operación de impresión ha fallado porque el servicio no se está ejecutandoError: Acceso denegado(se requiere sesión interactiva)No se encuentra la impresora: BCL easyPDF Printer
Estos errores se deben a la arquitectura fundamental de Easy PDF SDK, que requiere controladores de impresora virtuales, interoperabilidad COM y sesiones interactivas de Windows que simplemente no existen en los entornos de servidor modernos.
Fácil PDF SDK frente a IronPDF: Diferencias clave
| Característica | SDK Easy PDF | IronPDF |
|---|---|---|
| Plataforma | Sólo para Windows | Windows, Linux, macOS, Docker |
| Dependencia de Office | Requerido | Ninguno |
| Instalación | MSI complejo + controlador de impresora + COM | Paquete NuGet simple |
| Soporte de servidor | Requiere sesión interactiva | Ejecuta headless |
| Representación HTML | Básico (Office) | Chromium completo (CSS3, JS) |
| Soporte .NET | .NET Core limitado | .NET 5/6/7/8/9 completo |
| Patrón Async | Basado en callback | Async/await nativo |
| Soporte para contenedores | No se puede ejecutar | Docker/Kubernetes completo |
Limitaciones de la plataforma
La dependencia exclusiva de SDK Easy PDFde los sistemas Windows, que requieren instalaciones de Microsoft Office para las conversiones, excluye la compatibilidad con Linux, macOS o entornos en contenedores como Docker. Esta dependencia hace que la configuración del servidor sea engorrosa y limita la adopción del servicio a entornos Windows, una limitación importante para los equipos que practican DevOps multiplataforma o que utilizan contenedores para el despliegue.
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 Audit Easy PDF SDK
Ejecute estos comandos en su directorio de soluciones para identificar todas las referencias a Easy PDF SDK:
# Find all BCL using statements
grep -r "using BCL" --include="*.cs" .
# Find Printer/PDFDocument usage
grep -r "Printer\|PDFDocument\|PDFConverter\|HTMLConverter" --include="*.cs" .
# Find COM interop references
grep -r "easyPDF\|BCL.easyPDF" --include="*.csproj" .
# Find configuration settings
grep -r "PageOrientation\|TimeOut\|PrintOffice" --include="*.cs" .# Find all BCL using statements
grep -r "using BCL" --include="*.cs" .
# Find Printer/PDFDocument usage
grep -r "Printer\|PDFDocument\|PDFConverter\|HTMLConverter" --include="*.cs" .
# Find COM interop references
grep -r "easyPDF\|BCL.easyPDF" --include="*.csproj" .
# Find configuration settings
grep -r "PageOrientation\|TimeOut\|PrintOffice" --include="*.cs" .Cambios importantes que hay que anticipar
| Patrón Easy PDF SDK | Cambio requerido |
|---|---|
| <código>nuevo Printer()</código | Usar ChromePdfRenderer |
| <código>PrintOfficeDocToPDF()</código | Conversión de Office tratada de forma diferente |
| <código>RenderHTMLToPDF()</código | <código>RenderHtmlAsPdf()</código |
| Referencias de interoperabilidad COM | Eliminar por completo |
| Configuración del controlador de impresora | No es necesario |
Callbacks de BeginPrintToFile() | Async/await nativo |
| Requisitos de la sesión interactiva | Ejecuta headless |
| indexación de páginas basada en 1 | indexación basada en 0 |
| Tiempo de espera en segundos | Tiempo de espera en milisegundos |
Proceso de migración paso a paso
Paso 1: Eliminar Easy PDF SDK
Easy PDF SDK se instala normalmente mediante un instalador MSI, referencias DLL manuales o registro GAC. Elimine todas las referencias:
- Desinstalar BCL EasyPDF SDK desde Programas y características
- Elimine las referencias DLL de su proyecto
- Eliminar referencias de interoperabilidad COM
- Limpiar las entradas GAC si están presentes
Paso 2: Instalar IronPDF
# Install IronPDF
dotnet add package IronPdf# Install IronPDF
dotnet add package IronPdfO a través de Package Manager Console:
Install-Package IronPdfPaso 3: Actualizar referencias de espacios de nombres
Sustituya los espacios de nombres de SDK Easy PDFpor IronPDF:
// Remove these
using BCL.easyPDF;
using BCL.easyPDF.Interop;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.Printer;
// Add these
using IronPdf;
using IronPdf.Rendering;// Remove these
using BCL.easyPDF;
using BCL.easyPDF.Interop;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.Printer;
// Add these
using IronPdf;
using IronPdf.Rendering;IRON VB CONVERTER ERROR developers@ironsoftware.comReferencia completa de migración de API
Mapeo de clases principales
| Clase Easy PDF SDK | Equivalente de IronPDF | Notas |
|---|---|---|
Impresora | <código>ChromePdfRenderer</código | Clase principal de conversión |
Documento PDF | Documento PDF | Manipulación de documentos |
| <código>HTMLConverter</código | <código>ChromePdfRenderer</código | Conversión HTML |
Configuración de la impresora | <código>ChromePdfRenderOptions</código | Opciones de renderización |
Orientación de página | Orientación del documento pdf | Orientación de la página |
| <código>TamañoDePágina</código | <código>TamañoDelPapel</código | Tamaño del papel |
| <código>SecurityHandler</código | <código>PdfDocument.SecuritySettings</código | Opciones de seguridad |
Métodos de creación de PDF
| Método Easy PDF SDK | Método IronPDF | Notas |
|---|---|---|
| <código>printer.RenderHTMLToPDF(html, ruta)</código | <código>renderer.RenderHtmlAsPdf(html).SaveAs(path)</código | Cadena HTML |
| <código>printer.RenderUrlToPDF(url, path)</código | <código>renderer.RenderUrlAsPdf(url).SaveAs(path)</código | Conversión de URL |
| <código>htmlConverter.ConvertHTML(html, doc)</código | renderer.RenderHtmlAsPdf(html) | HTML a PDF |
| <código>htmlConverter.ConvertURL(url, doc)</código | <código>renderer.RenderUrlAsPdf(url)</código | URL a PDF |
Métodos de manipulación de PDF
| Método Easy PDF SDK | Método IronPDF | Notas |
|---|---|---|
| <código>doc.Append(doc2)</código | PdfDocument.Merge(pdf1, pdf2) | Fusionar PDF |
| <código>doc.ExtractPages(start, end)</código | <código>pdf.CopyPages(start, end)</código | Extraer páginas |
doc.DeletePage(index) | <código>pdf.RemovePage(index)</código | Eliminar página |
doc.GetPageCount() | <código>pdf.PageCount</código | Número de páginas |
doc.Guardar(ruta) | <código>pdf.SaveAs(ruta)</código | Guardar PDF |
doc.Close() | pdf.Dispose() o usando | Limpieza |
doc.ExtractText() | <código>pdf.ExtractAllText()</código | Extracción de texto |
Opciones de configuración
| Opción Easy PDF SDK | Opción IronPDF | Notas |
|---|---|---|
config.TimeOut | <código>RenderingOptions.Timeout</código | Tiempo de espera (ms) |
config.PageOrientation = Landscape | <código>RenderingOptions.PaperOrientation = Landscape</código | Orientación |
config.PageSize = A4 | <código>RenderingOptions.PaperSize = PdfPaperSize.A4</código | Tamaño del papel |
config.MarginTop/Bottom/Left/Right | RenderingOptions.MarginTop, etc. | Márgenes |
Ejemplos de migración de código
Cadena HTML a PDF
Fácil implementación del SDK de PDF:
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf);
pdf.Save("output.pdf");
pdf.Close();
}
}// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf);
pdf.Save("output.pdf");
pdf.Close();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comImplementación de IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF elimina la clase separada <código>HTMLConverter</códigoy las llamadas manuales Close(), lo que da como resultado un código más limpio y fácil de mantener.
Conversión de URL a PDF
Fácil implementación del SDK de PDF:
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertURL("https://example.com", pdf);
pdf.Save("webpage.pdf");
pdf.Close();
}
}// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertURL("https://example.com", pdf);
pdf.Save("webpage.pdf");
pdf.Close();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comImplementación de 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("webpage.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("webpage.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comFusión de varios PDF
Fácil implementación del SDK de PDF:
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf1 = new PDFDocument("document1.pdf");
var pdf2 = new PDFDocument("document2.pdf");
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
pdf1.Close();
pdf2.Close();
}
}// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf1 = new PDFDocument("document1.pdf");
var pdf2 = new PDFDocument("document2.pdf");
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
pdf1.Close();
pdf2.Close();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comImplementación de IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comEl método estático Merge deIronPDFacepta varios documentos directamente, eliminando el patrón de bucle manual Append.
Protección con contraseña
Implementación de IronPDF:
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs("protected.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs("protected.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comCabeceras y pies de página
Easy PDF SDK no es compatible de forma nativa con encabezados/pies de página: los encabezados y pies de página deben incluirse en el HTML de origen.IronPDFofrece funciones específicas:
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px; font-family:Arial;'>
Company Name - Confidential
</div>",
DrawDividerLine = true,
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
DrawDividerLine = true,
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>");
pdf.SaveAs("with_headers.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px; font-family:Arial;'>
Company Name - Confidential
</div>",
DrawDividerLine = true,
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
DrawDividerLine = true,
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>");
pdf.SaveAs("with_headers.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comPara más opciones, consulte la documentación sobre encabezados y pies de página.
Generación asíncrona de PDF
Easy PDF SDK utiliza patrones asíncronos basados en callbacks.IronPDFes compatible con async/await nativos:
Fácil implementación del SDK de PDF:
using BCL.easyPDF;
Printer printer = new Printer();
// BCL uses callback-based async
printer.BeginPrintToFile(
"https://example.com",
"output.pdf",
OnPrintComplete,
OnPrintError
);
Console.ReadLine();
printer.Dispose();using BCL.easyPDF;
Printer printer = new Printer();
// BCL uses callback-based async
printer.BeginPrintToFile(
"https://example.com",
"output.pdf",
OnPrintComplete,
OnPrintError
);
Console.ReadLine();
printer.Dispose();IRON VB CONVERTER ERROR developers@ironsoftware.comImplementación de IronPDF:
using IronPdf;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var renderer = new ChromePdfRenderer();
// Native async/await
var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com");
await pdf.SaveAsAsync("output.pdf");
Console.WriteLine("PDF created: output.pdf");
}
}using IronPdf;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var renderer = new ChromePdfRenderer();
// Native async/await
var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com");
await pdf.SaveAsAsync("output.pdf");
Console.WriteLine("PDF created: output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comNotas de migración críticas
Cambio en el índice de páginas
Easy PDF SDK utiliza indexación basada en 1.IronPDFutiliza indexación basada en 0:
// Easy PDF SDK: 1-based
doc.ExtractPages(1, 5);
// IronPDF: 0-based
pdf.CopyPages(0, 4);// Easy PDF SDK: 1-based
doc.ExtractPages(1, 5);
// IronPDF: 0-based
pdf.CopyPages(0, 4);IRON VB CONVERTER ERROR developers@ironsoftware.comTiempo de espera en milisegundos
Easy PDF SDK utiliza segundos para los valores de tiempo de espera.IronPDFutiliza milisegundos:
// Easy PDF SDK: seconds
config.TimeOut = 120;
// IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000;// Easy PDF SDK: seconds
config.TimeOut = 120;
// IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000;IRON VB CONVERTER ERROR developers@ironsoftware.comIntegración con .NET Core
Easy PDF SDK tiene dificultades en contextos web debido a los requisitos de sesión interactiva.
Patrón IronPDF:
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpGet("generate-async")]
public async Task<IActionResult> GeneratePdfAsync()
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");
return File(pdf.Stream, "application/pdf", "report.pdf");
}
}[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpGet("generate-async")]
public async Task<IActionResult> GeneratePdfAsync()
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");
return File(pdf.Stream, "application/pdf", "report.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespliegue de Docker
Easy PDF SDK no puede ejecutarse en contenedores Docker: requiere contenedores Windows, Microsoft Office, controladores de impresora virtuales y sesiones de escritorio interactivas. Esto es fundamentalmente incompatible con la contenedorización.
Configuración Docker de IronPDF:
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# Install Chromium dependencies
RUN apt-get update && apt-get install -y \
libc6 libgdiplus libx11-6 libxcomposite1 \
libxdamage1 libxrandr2 libxss1 libxtst6 \
libnss3 libatk-bridge2.0-0 libgtk-3-0 \
libgbm1 libasound2 fonts-liberation \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "MyApp.dll"]Solución de problemas comunes de migración
Edición: Impresora no encontrada
Síntoma: No se encuentra la impresora: BCL easyPDF Printer
Solución:IronPDFno necesita controladores de impresora:
// Just use the renderer directly
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);// Just use the renderer directly
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);IRON VB CONVERTER ERROR developers@ironsoftware.comAsunto: Errores de interoperabilidad COM
Síntoma: Error al cargar DLL o errores RCW
Solución: Elimine todas las referencias COM y utilice la API gestionada de IronPDF.
Asunto: Timeout on Server
Síntoma: La generación de PDF se cuelga en el servidor web
Solución:IronPDFse ejecuta sin sesiones interactivas:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60000; // Reliable timeout
var pdf = renderer.RenderHtmlAsPdf(html);var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60000; // Reliable timeout
var pdf = renderer.RenderHtmlAsPdf(html);IRON VB CONVERTER ERROR developers@ironsoftware.comAsunto: El fondo no se imprime
Síntoma: Faltan fondos CSS
Solución: Habilitar la impresión en segundo plano:
renderer.RenderingOptions.PrintHtmlBackgrounds = true;renderer.RenderingOptions.PrintHtmlBackgrounds = true;IRON VB CONVERTER ERROR developers@ironsoftware.comLista de comprobación posterior a la migración
Después de completar la migración del código, verifique lo siguiente:
- [ ] Compruebe la calidad de salida de PDF con el motor Chromium de IronPDF
- [ ] Probar todos los casos límite con HTML/CSS complejos
- [ ] Validar el despliegue del servidor funciona sin sesiones interactivas
- [ ] Prueba de despliegue de Docker/contenedores
- [ ] Eliminar el instalador de BCL EasyPDF del despliegue
- [ ] Eliminar la instalación de Office de los servidores (ya no es necesario)
- [ ] Actualizar las canalizaciones CI/CD con el nuevo paquete NuGet
Proteja su infraestructura PDF
Con .NET 10 en el horizonte y C# 14 introduciendo nuevas características del lenguaje, la elección de una biblioteca PDF multiplataforma garantiza la compatibilidad con los modelos de implantación en evolución. La compatibilidad deIronPDFcon Linux, Docker y las arquitecturas nativas de la nube significa que su inversión en migración dará sus frutos a medida que los proyectos se extiendan hasta 2025 y 2026, sin las limitaciones exclusivas de Windows de Easy PDF SDK.
Recursos adicionales
La migración de SDK Easy PDFaIronPDFelimina las dependencias de las impresoras virtuales, los problemas de interoperabilidad COM y las limitaciones exclusivas de Windows. La transición a la renderización basada en Chromium ofrece una compatibilidad superior con CSS3 y JavaScript, a la vez que permite la implementación en Docker, Kubernetes y entornos en la nube que antes eran imposibles con la arquitectura heredada de Easy PDF SDK.






