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

Como migrar do DynamicPDF para o IronPDF em C#

Por que migrar do PDF dinâmico para o IronPDF?

A fragmentação dos produtos da PDF dinâmico representa o principal fator que impulsiona a migração. Compreender o modelo de licenciamento é essencial para avaliar o custo real da sua implementação atual.

O problema da fragmentação do produto

O PDF dinâmico é vendido como um produto separado, com licenças individuais:

  1. DynamicPDF Generator: Crie PDFs do zero
  2. DynamicPDF Merger: Mescle, divida e manipule PDFs existentes (adquirido separadamente)
  3. DynamicPDF Core Suite: Gerador e Fusão Combinados
  4. DynamicPDF ReportWriter: Geração de relatórios
  5. DynamicPDF HTML Converter: Conversão de HTML para PDF (complemento separado)
  6. DynamicPDF Print Manager: Imprima PDFs programaticamente

Uma solução completa em PDF requer de 3 a 5 licenças separadas do DynamicPDF. O IronPDF inclui tudo em um único pacote.

Comparação de arquitetura

Aspecto PDF dinâmico IronPDF
Modelo do produto Fragmentado (5+ produtos) Biblioteca completa
Licenciamento É necessário possuir várias licenças. Licença única
HTML para PDF compra adicional separada Integrado, baseado no Chromium
Suporte a CSS Limitado (requer complemento) CSS3 completo com Flexbox/Grid
Estilo API Posicionamento baseado em coordenadas API de manipulação de HTML/CSS
Curva de Aprendizagem Íngreme (múltiplas APIs) Suave (tecnologias web)
.NET moderno .NET Standard 2.0 .NET 6/7/8/9+ nativo

Principais benefícios da migração

  1. Pacote único: Um único pacote NuGet substitui de 3 a 5 pacotes DynamicPDF.
  2. Renderização moderna: mecanismo Chromium versus renderização legada
  3. Tecnologias Web: Utilize HTML/CSS em vez de posicionamento baseado em coordenadas.
  4. API mais simples: Menos código, mais legível, manutenção mais fácil.
  5. Sem compras adicionais: HTML, mesclagem e segurança, tudo incluído.

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 )

Auditoria de uso do DynamicPDF

Execute estes comandos no diretório da sua solução para identificar todas as referências ao DynamicPDF:

# Find all PDF dinâmico references
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep -i dynamic
# Find all PDF dinâmico references
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep -i dynamic
SHELL

Pacotes comuns a serem procurados:

  • ceTe.DynamicPDF.CoreSuite.NET
  • ceTe.DynamicPDF.Generator.NET
  • ceTe.DynamicPDF.Merger.NET
  • ceTe.DynamicPDF.HtmlConverter.NET

Entendendo a Mudança de Paradigma

A mudança mais significativa ao migrar do PDF dinâmico para o IronPDF é a abordagem fundamental para a criação de documentos. O PDF dinâmico utiliza posicionamento baseado em coordenadas, onde você coloca elementos em coordenadas X,Y específicas em uma página. O IronPDF utiliza renderização HTML/CSS, permitindo que você crie designs com tecnologias web.

Essa mudança de paradigma significa converter os elementos Label, TextArea e Table2 em seus equivalentes HTML — uma alteração que normalmente resulta em um código mais legível e de fácil manutenção.

Processo de migração passo a passo

Passo 1: Atualizar pacotes NuGet

Remova todos os pacotes do PDF dinâmico e instale o IronPDF:

# Remove PDF dinâmico packages
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.Generator.NET
dotnet remove package ceTe.DynamicPDF.Merger.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET

# Install IronPDF
dotnet add package IronPdf
# Remove PDF dinâmico packages
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.Generator.NET
dotnet remove package ceTe.DynamicPDF.Merger.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

Etapa 2: Atualizar referências de namespace

Substitua os namespaces do PDF dinâmico pelo IronPDF:

// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;

// Add this
using IronPdf;
// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;

// 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 PDF dinâmico Equivalente ao IronPDF
Document ChromePdfRenderer
Document PdfDocument
Page HTML <div> com quebra de página
MergeDocument PdfDocument.Merge()
HtmlConverter ChromePdfRenderer

Mapeamento de elementos da página para HTML

Elemento de página PDF dinâmico Equivalente a IronPDF/HTML
Label <p>, <span>, <div>
TextArea <div>, <p> com CSS
Image <img> tag
Table2 HTML <table>
PageNumberingLabel {page} / {total-pages} marcadores de posição

Mapeamentos de API principais

PDF dinâmico IronPDF
Document + Page ChromePdfRenderer
Label, TextArea HTML <p>, <div>
Table2 HTML <table>
MergeDocument PdfDocument.Merge()
HtmlConverter ChromePdfRenderer
document.Draw() pdf.SaveAs() / pdf.BinaryData
PageNumberingLabel %%CP%% {page} espaço reservado

Exemplos de migração de código

Conversão de HTML para PDF

A conversão de HTML para PDF demonstra a necessidade do PDF dinâmico de um complemento separado HtmlConverter em comparação com a renderização Chromium integrada do IronPDF.

Implementação do DynamicPDF:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        HtmlConverter converter = new HtmlConverter(html);
        converter.Convert("output.pdf");
    }
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        HtmlConverter converter = new HtmlConverter(html);
        converter.Convert("output.pdf");
    }
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Conversion

Class Program
    Shared Sub Main()
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
        Dim converter As New HtmlConverter(html)
        converter.Convert("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Implementação do IronPDF :

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

O ChromePdfRenderer do IronPDF oferece renderização baseada no Chromium com suporte completo a CSS3 — sem necessidade de adquirir nenhum complemento separadamente. Para mais opções, consulte a documentação de conversão de HTML para PDF .

Unir vários PDFs

A fusão de PDFs demonstra a diferença entre a classe MergeDocument do PDF dinâmico (que requer a licença do produto Merger) e o método estático integrado Merge do IronPDF.

Implementação do DynamicPDF:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;

class Program
{
    static void Main()
    {
        MergeDocument document = new MergeDocument("document1.pdf");
        document.Append("document2.pdf");
        document.Draw("merged.pdf");
    }
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;

class Program
{
    static void Main()
    {
        MergeDocument document = new MergeDocument("document1.pdf");
        document.Append("document2.pdf");
        document.Draw("merged.pdf");
    }
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Merger

Class Program
    Shared Sub Main()
        Dim document As New MergeDocument("document1.pdf")
        document.Append("document2.pdf")
        document.Draw("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Implementação do IronPDF :

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim pdf1 = PdfDocument.FromFile("document1.pdf")
        Dim pdf2 = PdfDocument.FromFile("document2.pdf")
        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

O método estático Merge do IronPDF aceita vários objetos PdfDocument diretamente. Para mais opções, consulte a documentação sobre mesclagem de PDFs .

Adicionando texto a PDFs

O posicionamento do texto demonstra a mudança de paradigma dos elementos Label baseados em coordenadas do PDF dinâmico para os elementos TextStamper baseados em HTML do IronPDF.

Implementação do DynamicPDF:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Page page = new Page(PageSize.Letter);
        Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
        page.Elements.Add(label);
        document.Pages.Add(page);
        document.Draw("output.pdf");
    }
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Page page = new Page(PageSize.Letter);
        Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
        page.Elements.Add(label);
        document.Pages.Add(page);
        document.Draw("output.pdf");
    }
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.PageElements

Class Program
    Shared Sub Main()
        Dim document As New Document()
        Dim page As New Page(PageSize.Letter)
        Dim label As New Label("Hello from DynamicPDF!", 0, 0, 504, 100)
        page.Elements.Add(label)
        document.Pages.Add(page)
        document.Draw("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Implementação do IronPDF :

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalAlignment = VerticalAlignment.Top
        };
        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalAlignment = VerticalAlignment.Top
        };
        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>")
        Dim textStamper As New TextStamper() With {
            .Text = "Hello from IronPDF!",
            .FontSize = 20,
            .VerticalAlignment = VerticalAlignment.Top
        }
        pdf.ApplyStamp(textStamper)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

O recurso TextStamper do IronPDF oferece posicionamento baseado em alinhamento em vez de posicionamento baseado em coordenadas, tornando os layouts mais adaptáveis ​​a diferentes tamanhos de página. Para mais opções, consulte a documentação sobre marcas d'água e carimbos .

Exemplo completo de geração de documentos

Este exemplo completo mostra a conversão de um documento PDF dinâmico com múltiplos elementos para a abordagem HTML do IronPDF.

Implementação do DynamicPDF:

using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;

// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);

Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");

// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;

// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);

Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");

// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.PageElements
Imports ceTe.DynamicPDF.Merger

' Generation (requires Generator license)
Dim document As New Document()
Dim page As New Page(PageSize.A4)
Dim title As New Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18)
title.Align = TextAlign.Center
page.Elements.Add(title)

Dim table As New Table2(40, 60, 515, 500)
' ... complex table setup with columns, rows, cells...
page.Elements.Add(table)
document.Pages.Add(page)
document.Draw("invoice.pdf")

' Merging (requires Merger license)
Dim mergeDoc As New MergeDocument("cover.pdf")
mergeDoc.Append("invoice.pdf")
mergeDoc.Draw("final.pdf")
$vbLabelText   $csharpLabel

Implementação do IronPDF :

using IronPdf;

var renderer = new ChromePdfRenderer();

// All features in one library
var html = @"
<html>
<head>
    <style>
        body { font-family: Helvetica, sans-serif; padding: 40px; }
        h1 { text-align: center; font-size: 18pt; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #ccc; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice Report</h1>
    <table>
        <tr><th>Product</th><th>Qty</th><th>Price</th></tr>
        <tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
    </table>
</body>
</html>";

var invoice = renderer.RenderHtmlAsPdf(html);

// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// All features in one library
var html = @"
<html>
<head>
    <style>
        body { font-family: Helvetica, sans-serif; padding: 40px; }
        h1 { text-align: center; font-size: 18pt; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #ccc; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice Report</h1>
    <table>
        <tr><th>Product</th><th>Qty</th><th>Price</th></tr>
        <tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
    </table>
</body>
</html>";

var invoice = renderer.RenderHtmlAsPdf(html);

// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' All features in one library
Dim html As String = "
<html>
<head>
    <style>
        body { font-family: Helvetica, sans-serif; padding: 40px; }
        h1 { text-align: center; font-size: 18pt; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #ccc; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice Report</h1>
    <table>
        <tr><th>Product</th><th>Qty</th><th>Price</th></tr>
        <tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
    </table>
</body>
</html>"

Dim invoice As PdfDocument = renderer.RenderHtmlAsPdf(html)

' Merging included - no separate license
Dim cover As PdfDocument = PdfDocument.FromFile("cover.pdf")
Dim final As PdfDocument = PdfDocument.Merge(cover, invoice)
final.SaveAs("final.pdf")
$vbLabelText   $csharpLabel

Notas críticas sobre migração

Posicionamento baseado em coordenadas para HTML/CSS

A mudança de paradigma fundamental exige a conversão do posicionamento por coordenadas X,Y em layouts baseados em CSS:

// PDF dinâmico - coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);

// IronPDF - CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";

// IronPDF - preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";
// PDF dinâmico - coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);

// IronPDF - CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";

// IronPDF - preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";
' PDF dinâmico - coordinate-based
Dim label = New Label("Hello World", 100, 200, 300, 50)

' IronPDF - CSS positioning (if absolute positioning needed)
Dim html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>"

' IronPDF - preferred approach (flow-based)
html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>"
$vbLabelText   $csharpLabel

Sintaxe de numeração de páginas

O PDF dinâmico e o IronPDF usam sintaxes diferentes para representar números de página:

// PDF dinâmico placeholders
"Page %%CP%% of %%TP%%"

// IronPDF placeholders
"Page {page} of {total-pages}"
// PDF dinâmico placeholders
"Page %%CP%% of %%TP%%"

// IronPDF placeholders
"Page {page} of {total-pages}"
' PDF dinâmico placeholders
"Page %%CP%% of %%TP%%"

' IronPDF placeholders
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

Cabeçalhos e rodapés

Converter elementos PDF dinâmico Template para IronPDF HtmlHeaderFooter:

// IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};
// IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};
$vbLabelText   $csharpLabel

Para mais opções de cabeçalho/rodapé, consulte a documentação de cabeçalhos e rodapés .

Configurações de segurança

// IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";
// IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";
$vbLabelText   $csharpLabel

Para obter opções de segurança abrangentes, consulte a documentação de criptografia .

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 o posicionamento e o layout do texto
  • Testar a renderização e o estouro de tabelas
  • Verificar cabeçalhos/rodapés em todas as páginas
  • Testar a funcionalidade de preenchimento de formulários
  • Verificar segurança/criptografia
  • Análise comparativa de desempenho
  • Remover arquivos de licença PDF dinâmico não utilizados
  • 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 que adote os padrões modernos do .NET garante compatibilidade a longo prazo. O suporte nativo do IronPDF for .NET 6/7/8/9+ oferece um caminho claro para o futuro à medida que os projetos se estendem até 2025 e 2026, sem a complexidade de gerenciar várias licenças de produtos ou navegar por APIs fragmentadas.

Recursos adicionais


A migração do PDF dinâmico para o IronPDF elimina a complexidade de gerenciar várias licenças de produtos, ao mesmo tempo que oferece renderização moderna baseada no Chromium e suporte completo ao CSS3. A transição do posicionamento baseado em coordenadas para o design em HTML/CSS geralmente resulta em um código mais fácil de manter, que aproveita tecnologias web já conhecidas.

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