IRONSOFTWAREHOME
VIDEOS

Cómo gestionar fuentes en la conversión de HTML a PDF

Curtis Chau
Curtis Chau
Updated: 18 de mayo de 2026

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

Los problemas de EO.Pdf

  1. Tamaño de paquete masivo de 126 MB: EO.Pdf incluye su propio motor Chromium, lo que da como resultado un espacio de implementación de 126 MB. Esto infla las imágenes de Docker, ralentiza las canalizaciones de CI/CD y aumenta los costes de infraestructura.

  2. Equipaje de arquitectura heredada: EO.Pdf se creó originalmente en el motor de renderizado de Internet Explorer antes de migrar a Chromium. Este legado introduce problemas de compatibilidad de la era IE, deuda técnica en el diseño de la API y comportamiento incoherente entre versiones.

  3. Diseño centrado en Windows: a pesar de promocionarse como "multiplataforma", la compatibilidad de EO.Pdf con Linux y macOS es limitada. Muchos desarrolladores informan de problemas con las implantaciones que no son de Windows.

  4. Opciones globales estáticas: EO.Pdf utiliza HtmlToPdf.Options estático para la configuración, lo cual no es seguro para subprocesos y resulta problemático en aplicaciones web de múltiples inquilinos.

  5. $799 por licencia: a $799 por licencia de desarrollador, EO.Pdf es caro en comparación con alternativas que ofrecen una funcionalidad similar o mejor.

Comparación de arquitecturas

AspectoEO.PdfIronPDF
Tamaño del paquete126 MBOptimizado (~50MB)
Cuestiones de LegadoMigración a IECódigo limpio y moderno
Soporte de PlataformaCentrado en WindowsAuténtica multiplataforma
ConfiguraciónEstática/global (no thread-safe)Basado en instancias, a prueba de hilos
Diseño de APIMixto (HtmlToPdf + ACM)Unificado y coherente
DocumentaciónLimitadoTutoriales completos
Moderno .NET.NET Standard.NET 6/7/8/9+ nativo
Soporte AsyncLimitadoAsync/await completo

Beneficios clave de la migración

  1. Huella 50 % más pequeña: empaquetado Chromium optimizado de IronPDF
  2. Verdaderamente multiplataforma: funciona de forma idéntica en Windows, Linux, macOS y Docker.
  3. Configuración segura para subprocesos: opciones de renderizador basadas en instancias
  4. API moderna: nombres de métodos consistentes e intuitivos
  5. Mejor documentación: tutoriales y ejemplos completos

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 de IronPDF(prueba gratuita disponible en ironpdf.com)

Auditar el uso de EO.Pdf

Ejecute estos comandos en su directorio de soluciones para identificar todas las referencias a EO.Pdf:

# Find all EO.Pdf references
grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" .

# Check NuGet packages
dotnet list package | grep -i "EO.Pdf"
SHELL

Espacios de nombres comunes de EO.Pdf que hay que buscar:

  • EO.Pdf - HTML básico a PDF
  • EO.Pdf.Acm - Modelo de contenido avanzado (ACM)
  • EO.Pdf.Contents - Manipulación de contenido de bajo nivel
  • EO.Pdf.Drawing - Operaciones gráficas

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

La diferencia arquitectónica más significativa entre EO.Pdf e IronPDFes el ámbito de configuración. EO.Pdf utiliza métodos estáticos con opciones globales que afectan a todas las conversiones, un patrón que causa problemas de seguridad en las aplicaciones web.IronPDF utiliza renderizadores basados en instancias con opciones locales, lo que garantiza el aislamiento de cada conversión.

Proceso de migración paso a paso

Paso 1: Actualizar paquetes NuGet

Elimine EO.Pdf e instale IronPDF:

# Remove EO.Pdf
dotnet remove package EO.Pdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Paso 2: Actualizar referencias de espacios de nombres

Sustituya los espacios de nombres EO.Pdf por IronPDF:

// Remove these
using EO.Pdf;
using EO.Pdf.Acm;

// Add this
using IronPdf;

Paso 3: Configurar la licencia

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Referencia completa de migración de API

Mapeo de clases principales

Clase EO.PdfEquivalente de IronPDF
HtmlToPdfChromePdfRenderer
PdfDocumentPdfDocument
HtmlToPdfOptionsChromePdfRenderOptions
AcmRenderNo es necesario
AcmTextHTML <span>, <p>
AcmBlockHTML <div>

Métodos

Método EO.PdfMétodo IronPDF
HtmlToPdf.ConvertHtml(html, path)renderer.RenderHtmlAsPdf(html) entonces SaveAs(path)
HtmlToPdf.ConvertUrl(url, path)renderer.RenderUrlAsPdf(url) entonces SaveAs(path)
PdfDocument.Save(path)pdf.SaveAs(path)
new PdfDocument(path)PdfDocument.FromFile(path)
doc.Append(other)PdfDocument.Merge(doc1, doc2)

Mapeo de opciones

Opción EO.PdfOpciones de renderizado de IronPDF
Options.PageSize = PdfPageSizes.A4PaperSize = PdfPaperSize.A4
Options.OutputArea (RectánguloF)MarginTop, MarginBottom, etc.

Ejemplos de migración de código

Conversión de HTML a PDF

La conversión fundamental de HTML a PDF demuestra el paso de los métodos estáticos a la renderización basada en instancias.

Ejecución de EO.Pdf:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";
        
        HtmlToPdf.ConvertHtml(html, "output.pdf");
        
        Console.WriteLine("PDF created successfully!");
    }
}

Implementación de IronPDF:

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

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";
        
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
        
        Console.WriteLine("PDF created successfully!");
    }
}

El patrón de dos pasos de IronPDF(renderizar, luego guardar) proporciona acceso al objeto PdfDocument para una manipulación adicional antes de guardar. Para más opciones, consulte la documentación HTML a PDF.

Conversión de URL a PDF

Ejecución de EO.Pdf:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";
        
        HtmlToPdf.ConvertUrl(url, "webpage.pdf");
        
        Console.WriteLine("PDF from URL created successfully!");
    }
}

Implementación de IronPDF:

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

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";
        
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
        
        Console.WriteLine("PDF from URL created successfully!");
    }
}

RenderUrlAsPdf de IronPDFproporciona ejecución completa de JavaScript y soporte CSS moderno. Para obtener más opciones, consulte URL a la documentación en PDF.

Archivo HTML con ajustes personalizados

Este ejemplo demuestra la diferencia crítica en los patrones de configuración: OutputArea de EO.Pdf con pulgadas versus las propiedades de margen individuales de IronPDFen milímetros.

Ejecución de EO.Pdf:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfOptions options = new HtmlToPdfOptions();
        options.PageSize = PdfPageSizes.A4;
        options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);
        
        HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options);
        Console.WriteLine("PDF with custom settings created.");
    }
}

Implementación de IronPDF:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;
        
        var pdf = renderer.RenderHtmlFileAsPdf("C:/input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF with custom settings created.");
    }
}

Tenga en cuenta la conversión de unidades: EO.Pdf usa pulgadas en OutputArea, mientras que IronPDF usa milímetros. Convertir usando: inches × 25.4 = mm. Para más opciones, consulte la documentación sobre opciones de renderización.

Fusión de varios PDF

La fusión de PDF demuestra la diferencia entre el patrón de bucle Append de EO.Pdf y el método estático Merge de IronPDF.

Ejecución de EO.Pdf:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument doc1 = new PdfDocument("file1.pdf");
        PdfDocument doc2 = new PdfDocument("file2.pdf");
        
        PdfDocument mergedDoc = new PdfDocument();
        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);
        
        mergedDoc.Save("merged.pdf");
        
        Console.WriteLine("PDFs merged successfully!");
    }
}

Implementación de IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");
        
        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");
        
        Console.WriteLine("PDFs merged successfully!");
    }
}

El método estático Merge de IronPDF acepta una colección de documentos, lo que simplifica la fusión de múltiples documentos. Tenga en cuenta el cambio del constructor (new PdfDocument(path)) a la fábrica estática (PdfDocument.FromFile(path)). Para obtener más opciones, consulte la documentación de fusión de PDF .

Notas de migración críticas

Conversión de unidades de margen

EO.Pdf utiliza pulgadas en OutputArea.IronPDF utiliza milímetros. Convertir usando: inches × 25.4 = mm

// EO.Pdf - 0.5 inch margins
options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

//IronPDF- equivalent in millimeters (0.5" = 12.7mm)
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;

Configuración estática a configuración basada en instancias

Reemplace todos los HtmlToPdf.Options.X con renderer.RenderingOptions.X:

// EO.Pdf - static options (NOT thread-safe!)
HtmlToPdf.Options.PageSize = PdfPageSizes.A4;

//IronPDF- instance options (thread-safe)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;

Migración de ACM a HTML

Si utiliza el modelo de contenido avanzado de EO.Pdf (AcmRender, AcmText, AcmBlock), migre a HTML/CSS estándar:

// EO.Pdf ACM approach
var acmContent = new AcmContent();
acmContent.Add(new AcmText("Sample Text"));

//IronPDFHTML approach
var html = "<div>Sample Text</div>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);

Patrón de guardado en dos pasos

EO.Pdf guarda directamente en ConvertHtml().IronPDF devuelve un objeto PdfDocument, luego llama a SaveAs():

// EO.Pdf - one step
HtmlToPdf.ConvertHtml(html, "output.pdf");

//IronPDF- two steps (enables manipulation before save)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

Constructor a fábrica estática

Reemplace new PdfDocument(path) con PdfDocument.FromFile(path):

// EO.Pdf
var doc = new PdfDocument("file.pdf");

// IronPDF
var doc = PdfDocument.FromFile("file.pdf");

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
  • Verificar que los encabezados y pies de página se representen correctamente
  • Probar la configuración de seguridad/cifrado
  • Validar operaciones de fusión
  • Evaluación comparativa del rendimiento
  • Pruebas multiplataforma (Windows, Linux, macOS)
  • Eliminar archivos de licencia EO.Pdf
  • 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 soporte nativo .NET moderno garantiza la compatibilidad a largo plazo. La arquitectura a prueba de hilos y basada en instancias de IronPDFse alinea con los patrones de aplicación web contemporáneos, especialmente importante para aplicaciones SaaS multiusuario en las que las opciones globales estáticas de EO.Pdf crean problemas de concurrencia.

Recursos adicionales


La migración de EO.Pdf a IronPDF elimina la sobrecarga del paquete de 126 MB, el bagaje heredado de la era IE y los problemas de seguridad de los hilos de las opciones globales estáticas. La transición a la configuración basada en instancias garantiza que el código de generación de PDF funcione de forma fiable en aplicaciones web multihilo, al tiempo que proporciona una verdadera compatibilidad con la implementación multiplataforma.

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 estructurados y visualmente atractivos.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta