IRONSOFTWAREHOME
VÍDEOS

Como usar JavaScript com HTML para gerar PDF usando C#

Curtis Chau
Curtis Chau
Updated: 18 de maio de 2026

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

A fragmentação de produtos do PDF dinâmico é um motor comum para a migração. Entender o modelo de licenciamento ajuda a avaliar o custo real de sua implementação atual.

O problema da fragmentação do produto

DynamicPDF (ceTe Software) envia funcionalidade PDF como pacotes licenciados separadamente:

  1. DynamicPDF Core Suite (ceTe.DynamicPDF.CoreSuite.NET, v12.43.0): Bundles Generator, Merger, and ReportWriter
  2. DynamicPDF HTML Converter (ceTe.DynamicPDF.HtmlConverter.NET, v3.3.0): HTML-para-PDF como um complemento separado
  3. DynamicPDF Converter (ceTe.DynamicPDF.Converter.NET, v3.32.0): Conversão de Office e mais de 50 formatos de arquivo
  4. DynamicPDF PrintManager (ceTe.DynamicPDF.Printing.NET): Impressão programática
  5. DynamicPDF Rasterizer (ceTe.DynamicPDF.Rasterizer.NET): PDF-to-image
  6. DynamicPDF Viewer (ceTe.DynamicPDF.Viewer.NET): Controle de visualização WinForms/WPF

Generator, Merger e ReportWriter estão incluídos no Core Suite, mas renderização HTML, rasterização, impressão e visualização ainda exigem uma compra separada.IronPDF agrupa essas capacidades em uma única biblioteca e licença.

Comparação de arquitetura

AspectoPDF dinâmicoIronPDF
Modelo do produtoFragmentado (5+ produtos)Biblioteca completa
LicenciamentoÉ necessário possuir várias licenças.Licença única
HTML para PDFcompra adicional separadaIntegrado, baseado no Chromium
Suporte a CSSLimitado (requer complemento)CSS3 completo com Flexbox/Grid
Estilo APIPosicionamento baseado em coordenadasAPI de manipulação de HTML/CSS
Curva de AprendizagemÍngreme (múltiplas APIs)Suave (tecnologias web)
.NET moderno.NET Standard 2.0 / .NET 6 / .NET 8 / .NET Framework 4.6.2.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+ or .NET 6/7/8/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
SHELL

Pacotes comuns a serem procurados:

  • ceTe.DynamicPDF.CoreSuite.NET (Generator + Merger + ReportWriter)
  • ceTe.DynamicPDF.HtmlConverter.NET (complemento HTML-para-PDF)
  • ceTe.DynamicPDF.Converter.NET (Office / multi-format to PDF)
  • ceTe.DynamicPDF.Rasterizer.NET, ceTe.DynamicPDF.Printing.NET, ceTe.DynamicPDF.Viewer.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 elementos Label, TextArea e Table2 para seus equivalentes HTML — uma mudança que normalmente resulta em um código mais legível e mantido.

Processo de migração passo a passo

Passo 1: Atualizar pacotes NuGet

Remova os pacotes PDF dinâmico que você realmente instalou e adicione IronPDF:

# Remove PDF dinâmico packages (only those you actually have)
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET
dotnet remove package ceTe.DynamicPDF.Converter.NET
dotnet remove package ceTe.DynamicPDF.Rasterizer.NET
dotnet remove package ceTe.DynamicPDF.Printing.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;

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 PDF dinâmicoEquivalente ao IronPDF
DocumentChromePdfRenderer
DocumentPdfDocument
PageHTML <div> com quebra de página
MergeDocumentPdfDocument.Merge()
HtmlConverterChromePdfRenderer

Mapeamento de elementos da página para HTML

Elemento de página PDF dinâmicoEquivalente a IronPDF/HTML
Label<p>, <span>, <div>
TextArea<div>, <p> com CSS
ImageTag <img>
Table2HTML <table>
PageNumberingLabelEspaços reservados {page} / {total-pages}

Mapeamentos de API principais

PDF dinâmicoIronPDF
Document + PageChromePdfRenderer
Label, TextAreaHTML <p>, <div>
Table2HTML <table>
MergeDocumentPdfDocument.Merge()
HtmlConverterChromePdfRenderer
document.Draw()pdf.SaveAs() / pdf.BinaryData
PageNumberingLabel %%CP%%Espaço reservado {page}

Exemplos de migração de código

Conversão de HTML para PDF

A conversão de HTML para PDF demonstra a necessidade de um complemento separado HtmlConverter para DynamicPDF, em contraste com a renderização Chromium embutida do IronPDF.

Implementação do DynamicPDF:

// NuGet: Install-Package ceTe.DynamicPDF.Converter.NET
// HTML-to-PDF is a separate add-on; CoreSuite alone does not include it.
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");
    }
}

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

O ChromePdfRenderer do IronPDF fornece renderização baseada em Chromium com suporte completo a CSS3, sem necessidade de compra de complemento separado. Para mais opções, consulte a documentação de conversão de HTML para PDF .

Unir vários PDFs

A mesclagem 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 embutido 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");
    }
}

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

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

Adicionando texto a PDFs

O posicionamento de texto demonstra a mudança de paradigma dos elementos baseados em coordenadas Label do PDF dinâmico para o TextStamper baseado 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");
    }
}

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

O TextStamper do IronPDF fornece posicionamento baseado em alinhamento em vez de 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");

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

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>";
C#

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}"
C#

Cabeçalhos e rodapés

Converter elementos Template do PDF dinâmico para HtmlHeaderFooter do IronPDF:

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

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

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

Recursos adicionais


Migrar do PDF dinâmico para IronPDF consolida várias licenças de produto em uma única biblioteca e substitui o posicionamento baseado em coordenadas por renderização HTML/CSS no Chromium. Equipes já acostumadas com tecnologias web geralmente acham o código resultante mais fácil de manter.

Observe: DynamicPDF é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pela ceTe Software. 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.