Ir para o conteúdo do rodapé
GUIAS DE MIGRAçãO

Como migrar de EO.PDF para IronPDF em C#

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. Tamanho de pacote enorme de 126 MB: O EO.Pdf inclui seu próprio mecanismo Chromium, resultando em um tamanho de implantação de 126 MB. Isso aumenta o tamanho das imagens do Docker, torna os pipelines de CI/CD mais lentos e eleva os custos de infraestrutura.

  2. Herança da arquitetura legada: O EO.Pdf foi originalmente construído com base no mecanismo de renderização do Internet Explorer antes de migrar para o Chromium. Esse legado introduz problemas de compatibilidade da era do Internet Explorer, dívida técnica no projeto da API e comportamento inconsistente entre versões.

  3. Design centrado no Windows: Apesar de ser comercializado como "multiplataforma", o suporte do EO.Pdf para Linux e macOS é limitado. Muitos desenvolvedores relatam problemas com implantações em sistemas não Windows.

  4. Opções Globais Estáticas: EO.Pdf usa opções estáticas HtmlToPdf.Options para configuração, o que não é seguro para uso em múltiplas threads e é problemático em aplicações web multi-tenant.

  5. US$ 799 por licença: Com um preço de US$ 799 por licença de desenvolvedor, o EO.Pdf é caro em comparação com alternativas que oferecem funcionalidades semelhantes ou melhores.

Comparação de arquitetura

Aspecto EO.Pdf IronPDF
Tamanho da embalagem 126 MB Otimizado (aproximadamente 50 MB)
Problemas Legados bagagem migratória da Irlanda Código limpo e moderno
Suporte da plataforma Focado no Windows Verdadeiramente multiplataforma
Configuração Estático/global (não seguro para threads) Baseado em instâncias e seguro para threads.
Design de API Misto (HtmlToPdf + ACM) Unificado, consistente
Documentação Limitado Tutoriais completos
.NET moderno .NET Standard .NET 6/7/8/9+ nativo
Suporte assíncrono Limitado assíncrono/await completo

Principais benefícios da migração

  1. Tamanho 50% menor: Pacote Chromium otimizado do IronPDF
  2. Verdadeiramente multiplataforma: funciona de forma idêntica no Windows, Linux, macOS e Docker.
  3. Configuração à prova de threads: opções de renderização baseadas em instâncias
  4. API moderna: nomes de métodos consistentes e intuitivos
  5. Melhor documentação: tutoriais e exemplos abrangentes.

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"
# 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 básico para PDF
  • 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
# 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;
// Remove these
using EO.Pdf;
using EO.Pdf.Acm;

// Add this
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Etapa 3: Configurar a licença

// 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";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Referência completa para migração de API

Mapeamento de Classes Principais

Classe EO.Pdf Equivalente ao IronPDF
HtmlToPdf ChromePdfRenderer
PdfDocument PdfDocument
HtmlToPdfOptions ChromePdfRenderOptions
AcmRender Não é necessário
AcmText HTML <span>, <p>
AcmBlock HTML <div>

Mapeamento de Métodos

Método EO.Pdf Mé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)
doc.Append(other) PdfDocument.Merge(doc1, doc2)

Mapeamento de opções

Opção EO.Pdf Opções de renderização do IronPDF
Options.PageSize = PdfPageSizes.A4 PaperSize = PdfPaperSize.A4
Options.OutputArea (RetânguloF) 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!");
    }
}
// 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!");
    }
}
Imports EO.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim html As String = "<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!")
    End Sub
End Class
$vbLabelText   $csharpLabel

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!");
    }
}
// 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!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>"

        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")

        Console.WriteLine("PDF created successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

O padrão de duas etapas do IronPDF (renderizar e 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!");
    }
}
// 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!");
    }
}
Imports EO.Pdf
Imports System

Module Program
    Sub Main()
        Dim url As String = "https://www.example.com"

        HtmlToPdf.ConvertUrl(url, "webpage.pdf")

        Console.WriteLine("PDF from URL created successfully!")
    End Sub
End Module
$vbLabelText   $csharpLabel

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!");
    }
}
// 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!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim url As String = "https://www.example.com"

        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf(url)
        pdf.SaveAs("webpage.pdf")

        Console.WriteLine("PDF from URL created successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

O RenderUrlAsPdf do IronPDF oferece execução completa 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 crucial nos padrões de configuração — o OutputArea do EO.Pdf em polegadas versus as propriedades de margem individuais 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.");
    }
}
// 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.");
    }
}
Imports EO.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim options As 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.")
    End Sub
End Class
$vbLabelText   $csharpLabel

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.");
    }
}
// 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.");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
        renderer.RenderingOptions.MarginTop = 20
        renderer.RenderingOptions.MarginBottom = 20
        renderer.RenderingOptions.MarginLeft = 20
        renderer.RenderingOptions.MarginRight = 20

        Dim pdf = renderer.RenderHtmlFileAsPdf("C:/input.html")
        pdf.SaveAs("output.pdf")
        Console.WriteLine("PDF with custom settings created.")
    End Sub
End Class
$vbLabelText   $csharpLabel

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

A fusão de PDFs demonstra a diferença entre o padrão de loop Append do EO.Pdf e o método estático Merge do IronPDF.

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");

        PdfDocument mergedDoc = new PdfDocument();
        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
// 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!");
    }
}
Imports EO.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim doc1 As New PdfDocument("file1.pdf")
        Dim doc2 As New PdfDocument("file2.pdf")

        Dim mergedDoc As New PdfDocument()
        mergedDoc.Append(doc1)
        mergedDoc.Append(doc2)

        mergedDoc.Save("merged.pdf")

        Console.WriteLine("PDFs merged successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

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!");
    }
}
// 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!");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim pdf1 = PdfDocument.FromFile("file1.pdf")
        Dim pdf2 = PdfDocument.FromFile("file2.pdf")

        Dim merged = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
        merged.SaveAs("merged.pdf")

        Console.WriteLine("PDFs merged successfully!")
    End Sub
End Module
$vbLabelText   $csharpLabel

O método estático Merge do IronPDF aceita uma coleção de documentos, simplificando a mesclagem de vários documentos. 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;
// 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;
' 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
$vbLabelText   $csharpLabel

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

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);
// 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);
' EO.Pdf ACM approach
Dim acmContent = New AcmContent()
acmContent.Add(New AcmText("Sample Text"))

' IronPDF HTML approach
Dim html = "<div>Sample Text</div>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

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");
// 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");
' EO.Pdf - one step
HtmlToPdf.ConvertHtml(html, "output.pdf")

' IronPDF - two steps (enables manipulation before save)
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

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");
// EO.Pdf
var doc = new PdfDocument("file.pdf");

// IronPDF
var doc = PdfDocument.FromFile("file.pdf");
' EO.Pdf
Dim doc = New PdfDocument("file.pdf")

' IronPDF
Dim doc = PdfDocument.FromFile("file.pdf")
$vbLabelText   $csharpLabel

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

Preparando sua infraestrutura de PDF para o futuro

Com o .NET 10 no horizonte e o C# 14 introduzindo novos recursos de linguagem, escolher uma biblioteca PDF com suporte nativo moderno ao .NET garante compatibilidade a longo prazo. A arquitetura baseada em instâncias e thread-safe do IronPDF está alinhada com os padrões contemporâneos de aplicações web — algo particularmente importante para aplicações SaaS multi-tenant, onde as opções globais estáticas do EO.Pdf criam problemas de concorrência.

Recursos adicionais


A migração do EO.Pdf para o IronPDF elimina o inchaço do pacote de 126 MB, os problemas herdados da era do Internet Explorer e as preocupações com a segurança de threads decorrentes de opções globais estáticas. A transição para a configuração baseada em instâncias garante que seu código de geração de PDF funcione de forma confiável em aplicativos web multithread, ao mesmo tempo que oferece suporte real à implantação multiplataforma.

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 ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim