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

Como migrar do iText para o IronPDF em C#

A migração do iText para o IronPDF transforma seu fluxo de trabalho de PDF em .NET , passando de uma API programática que exigia a construção manual de objetos Paragraph, Table e Cell para uma abordagem moderna com foco em HTML e suporte completo a CSS3 e JavaScript . Este guia fornece um caminho de migração abrangente, passo a passo, que elimina as preocupações com a licença AGPL e a necessidade de complementos pdfHTML separados para desenvolvedores .NET profissionais.

Por que migrar do iText para o IronPDF?

A armadilha da licença AGPL

O iText apresenta sérios riscos legais e comerciais para aplicações comerciais, que muitas equipes de desenvolvimento descobrem tarde demais:

  1. Licença Viral AGPL: Se você usar o iText em um aplicativo web, a AGPL exige que você disponibilize o código-fonte de TODO o seu aplicativo — não apenas o código PDF, mas toda a sua base de código. Isso é inaceitável para a maioria dos softwares comerciais.

  2. Sem licença perpétua: o iText eliminou o licenciamento perpétuo, forçando renovações anuais de assinatura que aumentam o custo total de propriedade.

  3. Custo do complemento pdfHTML: A funcionalidade de conversão de HTML para PDF requer o complemento pdfHTML, vendido separadamente a um custo adicional além da licença básica.

  4. Auditorias de licenciamento complexas: as implantações empresariais enfrentam complexidades de licenciamento e riscos de auditoria que podem atrasar projetos e gerar exposição legal.

  5. API somente programática: o iText requer a construção manual de PDFs em baixo nível com objetos Paragraph, Table, Cell — um processo tedioso e propenso a erros para layouts complexos.

  6. Renderização Web Moderna Limitada: Mesmo com pdfHTML, conteúdo CSS e JavaScript complexo exige um esforço adicional significativo.

Comparação entre iText e IronPDF

Recurso iText 7 / iTextSharp IronPDF
Licença AGPL (viral) ou assinatura cara Opção comercial perpétua
HTML para PDF Complemento pdfHTML separado Renderizador Chromium integrado
Suporte a CSS CSS básico CSS3 completo, Flexbox, Grid
JavaScript Nenhum Execução completa
Paradigma de API Programático (Parágrafo, Tabela, Célula) HTML em primeiro lugar com CSS
Curva de Aprendizagem Íngreme (sistema de coordenadas PDF) amigável para desenvolvedores web
Risco de código aberto Aplicativos web de código aberto obrigatórios Sem requisitos virais
Modelo de Preços Somente por assinatura Perpétuo ou por assinatura

Para equipes que planejam a adoção do .NET 10 e do C# 14 até 2025 e 2026, o IronPDF oferece uma base preparada para o futuro com sua abordagem HTML-first, que aproveita as habilidades de desenvolvimento web que sua equipe já possui.


Avaliação da Complexidade da Migração

Esforço estimado por funcionalidade

Recurso Complexidade da Migração
HTML para PDF Muito baixo
Mesclar PDFs Baixo
Texto e imagens Baixo
Tabelas Médio
Cabeçalhos/Rodapés Médio
Segurança/Criptografia Baixo

Mudança de paradigma

A mudança fundamental nessa migração para o iText é a transição da construção programática de PDFs para a renderização com HTML como primeira opção:

iText: PdfWriter → PdfDocument → Document → Add(Paragraph) → Add(Table)
IronPDF: ChromePdfRenderer → RenderHtmlAsPdf(htmlString) → SaveAs()

Essa mudança de paradigma é libertadora: em vez de aprender o modelo de objetos do iText, você usa habilidades de HTML e CSS que os desenvolvedores web já possuem.


Antes de começar

Pré-requisitos

  1. Ambiente .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Acesso ao NuGet : Capacidade de instalar pacotes NuGet.
  3. Licença do IronPDF : Obtenha sua chave de licença em IronPDF

Alterações no pacote NuGet

# Remove iText packages
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp

# Install IronPDF
dotnet add package IronPdf
# Remove iText packages
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuração de 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

Identificar o uso do iText

# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .
# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .
SHELL

Referência completa da API

Mapeamentos de Classes

Classe iText 7 Classe iTextSharp Equivalente ao IronPDF
PdfWriter PdfWriter ChromePdfRenderer
PdfDocument Document PdfDocument
Document Document ChromePdfRenderer.RenderHtmlAsPdf()
Paragraph Paragraph HTML <p>, <h1>, etc.
Table PdfPTable HTML <table>
Cell PdfPCell HTML <td>, <th>
Image Image HTML <img>
PdfReader PdfReader PdfDocument.FromFile()
PdfMerger N / D PdfDocument.Merge()

Mapeamentos de Namespace

Espaço de nomes do iText 7 Equivalente ao IronPDF
iText.Kernel.Pdf IronPdf
iText.Layout IronPdf
iText.Layout.Element Utilize elementos HTML
iText.Html2Pdf IronPdf (embutido)
iText.IO.Image Use HTML <img>
iText.Kernel.Utils IronPdf

Exemplos de migração de código

Exemplo 1: Conversão de HTML para PDF

Antes (iText 7):

// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
        string outputPath = "output.pdf";

        using (FileStream fs = new FileStream(outputPath, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, fs);
        }
    }
}
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
        string outputPath = "output.pdf";

        using (FileStream fs = new FileStream(outputPath, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, fs);
        }
    }
}
Imports iText.Html2pdf
Imports System.IO

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

        Using fs As FileStream = New FileStream(outputPath, FileMode.Create)
            HtmlConverter.ConvertToPdf(html, fs)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

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

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

A abordagem iText requer o pacote separado iText.Html2pdf (complemento pdfHTML, vendido separadamente), criando um FileStream e envolvendo tudo em instruções using para descarte adequado. O método HtmlConverter.ConvertToPdf() escreve diretamente no fluxo.

A abordagem do IronPDF é mais limpa: crie um ChromePdfRenderer, chame RenderHtmlAsPdf() com sua string HTML e chame SaveAs() no PdfDocument resultante. Sem pacotes separados, sem gerenciamento de fluxos, e o mecanismo de renderização Chromium oferece suporte superior a CSS3 e JavaScript . Consulte a documentação de conversão de HTML para PDF para obter opções de renderização adicionais.

Exemplo 2: Mesclar vários PDFs

Antes (iText 7):

// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;

class Program
{
    static void Main()
    {
        string outputPath = "merged.pdf";
        string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdfDoc = new PdfDocument(writer))
        {
            PdfMerger merger = new PdfMerger(pdfDoc);

            foreach (string file in inputFiles)
            {
                using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
                {
                    merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
                }
            }
        }
    }
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;

class Program
{
    static void Main()
    {
        string outputPath = "merged.pdf";
        string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdfDoc = new PdfDocument(writer))
        {
            PdfMerger merger = new PdfMerger(pdfDoc);

            foreach (string file in inputFiles)
            {
                using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
                {
                    merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
                }
            }
        }
    }
}
Imports iText.Kernel.Pdf
Imports iText.Kernel.Utils
Imports System.IO

Class Program
    Shared Sub Main()
        Dim outputPath As String = "merged.pdf"
        Dim inputFiles As String() = {"document1.pdf", "document2.pdf", "document3.pdf"}

        Using writer As New PdfWriter(outputPath)
            Using pdfDoc As New PdfDocument(writer)
                Dim merger As New PdfMerger(pdfDoc)

                For Each file As String In inputFiles
                    Using sourcePdf As New PdfDocument(New PdfReader(file))
                        merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
                    End Using
                Next
            End Using
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        var pdfDocuments = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        };

        var merged = PdfDocument.Merge(pdfDocuments);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfDocuments = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        };

        var merged = PdfDocument.Merge(pdfDocuments);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf
Imports System.Collections.Generic

Class Program
    Shared Sub Main()
        Dim pdfDocuments As New List(Of PdfDocument) From {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        }

        Dim merged = PdfDocument.Merge(pdfDocuments)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

A operação de mesclagem do iText requer um código repetitivo significativo: criar um PdfWriter para a saída, envolvê-lo em um PdfDocument, criar um PdfMerger e, em seguida, iterar pelos arquivos de origem com instruções using aninhadas para cada PdfDocument e PdfReader. Você também deve especificar intervalos de páginas com merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages()).

O IronPDF reduz isso a três etapas: carregar documentos com PdfDocument.FromFile(), chamar o método estático PdfDocument.Merge() com a lista e salvar. Toda a operação de mesclagem torna-se legível e de fácil manutenção. Saiba mais sobre como mesclar e dividir PDFs .

Exemplo 3: Criar PDF com texto e imagens

Antes (iText 7):

// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;

class Program
{
    static void Main()
    {
        string outputPath = "document.pdf";

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdf = new PdfDocument(writer))
        using (Document document = new Document(pdf))
        {
            document.Add(new Paragraph("Sample PDF Document"));
            document.Add(new Paragraph("This document contains text and an image."));

            Image img = new Image(ImageDataFactory.Create("image.jpg"));
            img.SetWidth(200);
            document.Add(img);
        }
    }
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;

class Program
{
    static void Main()
    {
        string outputPath = "document.pdf";

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdf = new PdfDocument(writer))
        using (Document document = new Document(pdf))
        {
            document.Add(new Paragraph("Sample PDF Document"));
            document.Add(new Paragraph("This document contains text and an image."));

            Image img = new Image(ImageDataFactory.Create("image.jpg"));
            img.SetWidth(200);
            document.Add(img);
        }
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.IO.Image

Class Program
    Shared Sub Main()
        Dim outputPath As String = "document.pdf"

        Using writer As New PdfWriter(outputPath),
              pdf As New PdfDocument(writer),
              document As New Document(pdf)

            document.Add(New Paragraph("Sample PDF Document"))
            document.Add(New Paragraph("This document contains text and an image."))

            Dim img As New Image(ImageDataFactory.Create("image.jpg"))
            img.SetWidth(200)
            document.Add(img)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("document.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Este exemplo ilustra a mudança de paradigma com maior clareza. O iText requer:

  • Declarações triplamente aninhadas using (PdfWriter, PdfDocument, Document)
  • Criando objetos Paragraph para cada elemento de texto com new Paragraph()
  • Usando ImageDataFactory.Create() para carregar imagens
  • Criando um objeto Image e chamando SetWidth() separadamente
  • Chamando document.Add() para cada elemento

O IronPDF usa HTML padrão: <h1> para títulos, <p> para parágrafos e <img> para imagens com um atributo width. Os desenvolvedores web podem aproveitar imediatamente suas habilidades existentes, e os designers podem estilizar documentos usando o CSS que já conhecem.


Notas críticas sobre migração

Mudança de paradigma: da programação para o HTML em primeiro lugar

A mudança mais significativa nesta migração para o iText é conceitual. O iText cria PDFs programaticamente:

// iText approach
document.Add(new Paragraph("Title")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(24)
    .SetBold());

var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines
// iText approach
document.Add(new Paragraph("Title")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(24)
    .SetBold());

var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines
' iText approach
document.Add(New Paragraph("Title") _
    .SetTextAlignment(TextAlignment.CENTER) _
    .SetFontSize(24) _
    .SetBold())

Dim table = New Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth()
table.AddHeaderCell(New Cell().Add(New Paragraph("ID")))
table.AddHeaderCell(New Cell().Add(New Paragraph("Name")))
' ... many more lines
$vbLabelText   $csharpLabel

O IronPDF utiliza HTML e CSS:

// IronPDF approach
string html = @"
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>";

var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF approach
string html = @"
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>";

var pdf = renderer.RenderHtmlAsPdf(html);
' IronPDF approach
Dim html As String = "
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>"

Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Licença AGPL eliminada

A licença AGPL do iText exige que você torne todo o seu aplicativo web de código aberto ou compre uma licença comercial cara. A licença comercial do IronPDF permite a implantação em softwares proprietários sem a necessidade de licenciamento viral.

Não é necessário o complemento pdfHTML.

O iText requer o complemento pdfHTML separado para conversão de HTML para PDF, vendido separadamente. O IronPDF inclui renderização HTML completa baseada no Chromium no pacote básico.

Padrões de Substituição de Métodos

Padrão iText Substituto do IronPDF
SetTextAlignment(TextAlignment.CENTER) CSS text-align: center
SetFontSize(24) CSS font-size: 24px
SetBold() CSS font-weight: bold
new Table(3) HTML <table>
AddHeaderCell(new Cell().Add(new Paragraph())) HTML <th>
AddCell(new Cell().Add(new Paragraph())) HTML <td>

Solução de problemas

Problema 1: Padrão PdfWriter/Documento

Problema: O código usa o padrão de aninhamento PdfWriterPdfDocumentDocument.

Solução: Substitua por ChromePdfRenderer:

// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))

// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))

// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
$vbLabelText   $csharpLabel

Problema 2: HtmlConverter não encontrado

Problema: O código usa iText.Html2pdf.HtmlConverter que requer o complemento pdfHTML.

Solução: Utilize a renderização HTML integrada do IronPDF:

// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);

// IronPDF (built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);

// IronPDF (built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
' iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream)

' IronPDF (built-in)
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
$vbLabelText   $csharpLabel

Problema 3: Complexidade do PdfMerger

Problema: O PdfMerger do iText requer leitores aninhados e especificação de intervalo de páginas.

Solução: Utilize o método de mesclagem estática do IronPDF:

// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
//     PdfMerger merger = new PdfMerger(pdfDoc);
//     foreach (string file in inputFiles)
//     {
//         using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
//         {
//             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
//         }
//     }
// }

// IronPDF (simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
//     PdfMerger merger = new PdfMerger(pdfDoc);
//     foreach (string file in inputFiles)
//     {
//         using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
//         {
//             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
//         }
//     }
// }

// IronPDF (simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
' iText merger pattern (delete this)
' Using pdfDoc As New PdfDocument(writer)
'     Dim merger As New PdfMerger(pdfDoc)
'     For Each file As String In inputFiles
'         Using sourcePdf As New PdfDocument(New PdfReader(file))
'             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
'         End Using
'     Next
' End Using

' IronPDF (simple)
Dim merged = PdfDocument.Merge(pdfDocuments)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

Lista de verificação para migração

Pré-migração

  • Inventariar todas as chamadas da API iText no código-fonte.
  • Identificar padrões programáticos de construção de PDF (Parágrafo, Tabela, Célula)
  • Utilização do HtmlConverter (complemento pdfHTML)
  • Avaliar o risco de conformidade com a AGPL
  • Obtenha a chave de licença do IronPDF

Migração de código

  • Remover pacotes NuGet do iText: dotnet remove package itext7
  • Instale o pacote NuGet IronPDF : dotnet add package IronPdf
  • Atualizar importações de namespace (using iText.*using IronPdf)
  • Substitua o padrão Document por ChromePdfRenderer
  • Converter Cell em elementos HTML
  • Substitua HtmlConverter.ConvertToPdf() por RenderHtmlAsPdf()
  • Atualizar operações de mesclagem para PdfDocument.Merge()
  • Adicionar inicialização da chave de licença na inicialização do sistema

Testando

  • Testar todos os caminhos de geração de PDF
  • Verificar se a saída visual corresponde às expectativas.
  • Teste com conteúdo HTML/CSS complexo
  • Desempenho de referência

Pós-migração

  • Remover arquivos de licença e referências do iText
  • Atualizar documentação
  • Cancelar assinatura do iText (se aplicável)
  • Arquivar código iText legado

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