IRONSOFTWAREHOME
VÍDEOS

Como gerenciar fontes na conversão de HTML para PDF

Curtis Chau
Curtis Chau
Updated: 18 de maio de 2026

O EO.Pdf apresenta diversos desafios arquitetônicos que levam as equipes de desenvolvimento a avaliar alternativas. Compreender essas questões é essencial para planejar sua estratégia de migração.

Os problemas do arquivo EO.Pdf

  1. Impacto do Chromium Integrado: EO.Pdf (versão atual do NuGet 26.1.34, março de 2026) envia seu próprio renderizador baseado em Chromium, o que aumenta o impacto da instalação em relação a bibliotecas não-‭‭Chromium e adiciona peso a imagens do Docker e pipelines de CI/CD.

  2. Bagagem de Arquitetura Legada: O conversor HTML para PDF do EO.Pdf foi originalmente construído em um mecanismo Internet Explorer / Trident incorporado antes de o projeto migrar para um renderizador baseado em Chromium. A transição deixou para trás algumas peculiaridades de API e diferenças de comportamento entre versões.

  3. Somente Windows no .NET Core: Apesar de ser anunciado como "multiplataforma", a própria documentação do .NET Core da Essential Objects afirma que EO.Pdf suporta .NET Core 3.1+ e .NET 5/6 apenas no Windows — Linux e macOS não são oficialmente suportados.

  4. Opções Globais Estáticas: O principal ponto de entrada de HTML para PDF do EO.Pdf é a classe estática HtmlToPdf com HtmlToPdf.Options compartilhado. Modificar esse estado global de múltiplos threads não é seguro e é difícil em aplicações web multi-tenant.

  5. Licença Comercial Paga: EO.Pdf é vendido em níveis de Licença Única, Pacote de 3 Licenças, Corporativo e Corporativo Plus (sem nível gratuito permanente — apenas um teste de 30 dias com marca d'água). Os preços exatos aparecem na página de pedidos.

Comparação de arquitetura

AspectoEO.PdfIronPDF
RenderizadorChromium integrado (transitado do IE/Trident)Chromium incorporado
Problemas LegadosBagagem de migração do IE/TridentConstruído em Chromium desde o início
Suporte da plataformaSomente Windows no .NET CoreWindows, Linux, macOS, Docker, Azure
ConfiguraçãoEstático HtmlToPdf.Options (não seguro para threads)Baseado em instância ChromePdfRenderer (seguro para threads)
Design de APIMisto (HtmlToPdf estático + modelo de objeto ACM)Unificado ChromePdfRenderer + HTML/CSS
Modelo de licençaÚnico / 3-licenças / Corporativo / Corporativo Plus (teste de 30 dias)Comercial por desenvolvedor; teste de desenvolvedor gratuito
.NET moderno.NET Framework + .NET Core 3.1+ (somente Windows).NET Framework, .NET 6/7/8/9 multiplataforma
Suporte assíncronoLimitadoCompleto RenderHtmlAsPdfAsync / RenderUrlAsPdfAsync

Principais benefícios da migração

  1. Multiplataforma no .NET Core / .NET 6+: Funciona no Linux, macOS e Docker — não apenas no Windows
  2. Configuração Segura para Threads: Opções de renderizador baseadas em instâncias em vez de globais estáticos
  3. API Moderna: Nomes de métodos consistentes — RenderHtmlAsPdf, RenderUrlAsPdf, PdfDocument.Merge
  4. Suporte Total a Async: RenderHtmlAsPdfAsync e RenderUrlAsPdfAsync para pipelines não bloqueantes
  5. Documentação: Tutoriais extensivos, guias de como fazer e uma referência de objetos ativa

Preparação pré-migratória

Pré-requisitos

Certifique-se de que seu ambiente atenda a estes requisitos:

  • .NET Framework 4.6.2 ou superior ou .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019 ou superior ou VS Code com extensão C#
  • Acesso ao Gerenciador de Pacotes NuGet
  • Chave de licença do IronPDF(teste gratuito disponível em IronPDF )

Uso do arquivo Audit EO.Pdf

Execute estes comandos no diretório da sua solução para identificar todas as referências 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

Namespaces comuns de EO.Pdf a serem procurados:

  • EO.Pdf - HTML para PDF básico
  • EO.Pdf.Acm - Modelo de Conteúdo Avançado (ACM)
  • EO.Pdf.Contents - Manipulação de conteúdo de baixo nível
  • EO.Pdf.Drawing - Operações gráficas

Entendendo a mudança no padrão central

A diferença arquitetônica mais significativa entre EO.Pdf e IronPDF reside no escopo de configuração. O arquivo EO.Pdf utiliza métodos estáticos com opções globais que afetam todas as conversões — um padrão que causa problemas de segurança de threads em aplicações web. O IronPDF utiliza renderizadores baseados em instâncias com opções locais, garantindo que cada conversão seja isolada.

Processo de migração passo a passo

Passo 1: Atualizar pacotes NuGet

Remova o arquivo EO.Pdf e instale o IronPDF:

# Remove EO.Pdf
dotnet remove package EO.Pdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Etapa 2: Atualizar referências de namespace

Substitua os namespaces EO.Pdf por IronPDF:

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

// Add this
using IronPdf;

Etapa 3: Configurar a licença

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

Referência completa para migração de API

Mapeamento de Classes Principais

Classe EO.PdfEquivalente ao IronPDF
HtmlToPdfChromePdfRenderer
PdfDocumentPdfDocument
HtmlToPdfOptionsChromePdfRenderOptions
AcmRenderNão é necessário
AcmTextHTML <span>, <p>
AcmBlockHTML <div>

Mapeamento de Métodos

Método EO.PdfMétodo IronPDF
HtmlToPdf.ConvertHtml(html, path)renderer.RenderHtmlAsPdf(html) então SaveAs(path)
HtmlToPdf.ConvertUrl(url, path)renderer.RenderUrlAsPdf(url) então SaveAs(path)
PdfDocument.Save(path)pdf.SaveAs(path)
new PdfDocument(path)PdfDocument.FromFile(path)
PdfDocument.Merge(doc1, doc2) (estático)PdfDocument.Merge(doc1, doc2) (estático)

Mapeamento de opções

Opção EO.PdfOpções de renderização do IronPDF
Options.PageSize = PdfPageSizes.A4PaperSize = PdfPaperSize.A4
Options.OutputArea (RectangleF)MarginTop, MarginBottom, etc.

Exemplos de migração de código

Conversão de HTML para PDF

A conversão fundamental de HTML para PDF demonstra a mudança de métodos estáticos para renderização baseada em instâncias.

Implementação do 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!");
    }
}

Implementação do 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!");
    }
}

O padrão de dois passos do IronPDF(renderizar, depois salvar) fornece acesso ao objeto PdfDocument para manipulação adicional antes de salvar. Para mais opções, consulte a documentação de conversão de HTML para PDF .

Conversão de URL para PDF

Implementação do 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!");
    }
}

Implementação do 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!");
    }
}

O RenderUrlAsPdf do IronPDF oferece execução total de JavaScript e suporte moderno a CSS. Para mais opções, consulte o link para a documentação em PDF .

Arquivo HTML com configurações personalizadas

Este exemplo demonstra a diferença crítica nos padrões de configuração — o OutputArea do EO.Pdf com polegadas versus as propriedades de margem individual do IronPDF em milímetros.

Implementação do 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.");
    }
}

Implementação do 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.");
    }
}

Observe a conversão de unidades: EO.Pdf usa polegadas em OutputArea, enquanto IronPDF usa milímetros. Converter usando: inches × 25.4 = mm. Para mais opções, consulte a documentação de opções de renderização .

Unir vários PDFs

Ambas as bibliotecas expõem um PdfDocument.Merge estático para combinar documentos — EO.Pdf não tem método de instância Append, então qualquer código usando doc.Append(other) é inválido e precisa ser movido para Merge.

Implementação do 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");

        // EO.Pdf has no Append; merge is a static method that returns a new PdfDocument.
        PdfDocument mergedDoc = PdfDocument.Merge(doc1, doc2);

        mergedDoc.Save("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}

Implementação do 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!");
    }
}

O Merge estático do IronPDF aceita uma lista de documentos ou um List<PdfDocument>. Observe a mudança do construtor (new PdfDocument(path)) para a fábrica estática (PdfDocument.FromFile(path)). Para mais opções, consulte a documentação sobre mesclagem de PDFs .

Notas críticas sobre migração

Conversão de Unidades de Margem

EO.Pdf usa polegadas em OutputArea. O IronPDF usa milímetros. Converter 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;

Configuração estática para configuração baseada em instâncias

Substitua todos os HtmlToPdf.Options.X por 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;

Migração de ACM para HTML

Se estiver usando o Modelo de Conteúdo Avançado do EO.Pdf (AcmRender, AcmText, AcmBlock), migre para HTML/CSS padrão:

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

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

Padrão de economia em duas etapas

EO.Pdf salva diretamente em ConvertHtml().IronPDF retorna um objeto PdfDocument, então você chama 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");

Construtor para Fábrica Estática

Substitua new PdfDocument(path) por PdfDocument.FromFile(path):

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

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

Lista de verificação pós-migração

Após concluir a migração do código, verifique o seguinte:

  • Comparação visual dos PDFs gerados
  • Verificar se os cabeçalhos/rodapés estão sendo exibidos corretamente.
  • Testar as configurações de segurança/criptografia
  • Validar operações de mesclagem
  • Análise comparativa de desempenho
  • Testes multiplataforma (Windows, Linux, macOS)
  • Remover arquivos de licença EO.Pdf
  • Atualizar documentação

Recursos adicionais


A migração do EO.Pdf para o IronPDF aborda as preocupações legadas do IE/Trident e a segurança de threads das opções globais estáticas do EO.Pdf. A transição para configuração baseada em instâncias garante que seu código de geração de PDF funcione de forma confiável sob carga concorrente, enquanto o suporte multiplataforma do IronPDF estende a implantação além do Windows para Linux, macOS e Docker.

Observe: EO.Pdf e Essential Objects são marcas registradas de seus respectivos proprietários. Este site não é afiliado, endossado ou patrocinado por Essential Objects. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.
Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.