Ir para o conteúdo do rodapé
COMPARAçãO DE PRODUTOS

Comparação entre iTextSharp e IronPDF para edição de PDFs

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.

View Full Comparison

Em aplicações .NET modernas, a criação e o gerenciamento de arquivos PDF são requisitos comuns, seja para gerar relatórios, faturas ou registros digitais. Os desenvolvedores frequentemente recorrem a bibliotecas PDF de terceiros para esta tarefa, e duas das opções mais populares no ecossistema .NET são IronPDF e iText (o sucessor do iText).

Cada biblioteca oferece um conjunto de ferramentas poderoso para diferentes casos de uso. Mas qual é a mais adequada para gerar um PDF a partir de um [array de bytes](https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2013/dd831853(v=vs.120) em C#? Este artigo explica tudo em detalhes, com comparações, exemplos de código e informações para ajudar os desenvolvedores .NET a fazerem a escolha certa.

Quer esteja a desenvolver aplicações de nível empresarial ou pequenas ferramentas internas, escolher a biblioteca PDF certa pode poupar tempo de desenvolvimento e garantir um resultado robusto. Vamos explorar o que cada biblioteca oferece.

Introdução às Bibliotecas de PDF

Para que servem as bibliotecas de PDF?

As bibliotecas PDF em C# permitem que os desenvolvedores gerem, manipulem e leiam arquivos PDF programaticamente. Eles atendem a uma ampla gama de casos de uso, tais como:

  • Exportação de relatórios e faturas
  • Geração de conteúdo dinâmico a partir de formulários web
  • Converter páginas ou modelos HTML em PDFs
  • Adicionando elementos visuais aos seus arquivos PDF, como números de página, gráficos, imagens e muito mais.
  • Fusão ou divisão de documentos
  • Assinatura digital de PDFs

Eles também desempenham um papel crucial na portabilidade de dados e na conformidade com padrões como o PDF/A para arquivamento ou requisitos de acessibilidade.

iText e IronPDF: Os Principais Concorrentes

Entre as bibliotecas PDF disponíveis no .NET, iText e IronPDF emergiram como soluções líderes -- cada uma com forças únicas:

  • iText é uma biblioteca madura e de código aberto baseada no iText do Java, oferecendo controle robusto sobre PDFs com uma curva de aprendizado acentuada e ressalvas de licenciamento.
  • IronPDF , uma biblioteca comercial moderna, foca-se na simplicidade, velocidade e integração web, permitindo-lhe converter visualizações HTML e ASP.NET diretamente em ficheiros PDF.

Por que escolher a biblioteca certa é importante

A escolha entre os dois não é apenas uma questão de preferência — ela impacta a produtividade, a manutenção, o desempenho e até mesmo a conformidade com as licenças legais. Projetos que exigem prazos de entrega rápidos, alterações frequentes de formatação ou renderização de PDF a partir de modelos HTML se beneficiam do desenvolvimento ágil, enquanto aplicações de nível empresarial podem priorizar a conformidade com padrões e a manutenção a longo prazo.

Comparação de recursos

iText for .NET (Successor to iText)

iText é o sucessor oficial do iText e oferece uma arquitetura completamente redesenhada. É uma biblioteca poderosa e extensível, adequada para criar, editar e validar PDFs em setores com alta exigência de conformidade, como o jurídico, o financeiro e o governamental. A suíte iText inclui suporte para PDF/A, PDF/UA, assinaturas digitais, redação e criação de formulários.

Embora ainda seja de código aberto sob a licença AGPL, o licenciamento comercial está disponível para projetos proprietários.

Recursos Principais do iText

  • API moderna, substituindo a estrutura mais antiga do iText
  • Suporte modular: HTML para PDF, PDF/A, formulários, redação, assinaturas digitais
  • Alto desempenho para aplicações empresariais
  • Ótimo para PDF/A, acessibilidade e conformidade.

ObserveVocê precisará usar o iText para operações principais de PDF e pode incluir complementos opcionais como html2pdf separadamente.

Instalação (NuGet)

Para baixar o pacote principal do iText para geração de PDF:

Install-Package itext7

Instalando o iText via Console do Gerenciador de Pacotes NuGet

Você também pode instalar o iText via o Gerenciador de Pacotes para a tela de Solução. Para fazer isso, primeiro você precisa acessar o menu suspenso Ferramentas e, em seguida, encontrar "Gerenciador de Pacotes NuGet > Gerenciar Pacotes NuGet para a Solução".

Menu suspenso de ferramentas do Visual Studio

Em seguida, basta procurar por iText, e clicar em 'Instalar'.

Página do pacote NuGet do iText

Exemplo de Código: Criar documentos PDF a partir de Array de Bytes usando iText

using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIText7();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIText7()
    {
        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            var doc = new Document(pdf);

            doc.Add(new Paragraph("Hello from iText 7 for .NET!"));

            doc.Close(); // Always close the document to finalize content  
            return ms.ToArray();
        }
    }
}
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIText7();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIText7()
    {
        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            var doc = new Document(pdf);

            doc.Add(new Paragraph("Hello from iText 7 for .NET!"));

            doc.Close(); // Always close the document to finalize content  
            return ms.ToArray();
        }
    }
}
Imports System.IO
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfWithIText7()
		' Save the PDF to a file
		File.WriteAllBytes("output.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfWithIText7() As Byte()
		Using ms = New MemoryStream()
			Dim writer = New PdfWriter(ms)
			Dim pdf = New iText.Kernel.Pdf.PdfDocument(writer)
			Dim doc = New Document(pdf)

			doc.Add(New Paragraph("Hello from iText 7 for .NET!"))

			doc.Close() ' Always close the document to finalize content
			Return ms.ToArray()
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

Arquivo PDF de saída

Saída de PDF do iText

Explicação

  • PdfWriter escreve o conteúdo em um MemoryStream.
  • PdfDocument gerencia a estrutura interna do PDF.
  • Document é usado para adicionar conteúdo de alto nível (texto, imagens, tabelas).
  • Após chamar doc.Close(), o conteúdo do PDF é totalmente escrito e pronto para ser retornado como um array de bytes.

Este exemplo destaca a API mais modular e legível do iText em comparação com o iText. No entanto, ainda falta suporte nativo para renderização de HTML/CSS, a menos que você inclua o pdfhtml, que é licenciado separadamente.

Prós e Contras do iText

Prós:

  • Controle abrangente de PDFs iText fornece controle total sobre elementos de PDF, como tabelas, formulários e assinaturas digitais. Isso o torna ideal para aplicações com requisitos de conformidade rigorosos que exigem padrões PDF específicos, como PDF/A ou PDF/UA.

  • Modular e escalável iText é modular, o que significa que você pode instalar apenas os módulos específicos de que precisa (por exemplo, pdfhtml para conversão de HTML para PDF). Isso permite uma implementação mais leve caso você não esteja utilizando todos os recursos.

  • Suporta padrões PDF complexos iText suporta padrões ISO como PDF/A (arquivamento), PDF/UA (acessibilidade) e PDF/X (impressão), tornando-o adequado para ambientes profissionais e legais onde a conformidade é crucial.

  • Documentação e suporte completos iText possui documentação abrangente e uma grande comunidade. A empresa também oferece suporte profissional, garantindo que os desenvolvedores possam obter assistência quando necessário.

  • Versão gratuita disponível (AGPL) Os desenvolvedores podem usar o iText gratuitamente sob a licença AGPL, que é ideal para projetos de código aberto ou uso pessoal.

Contras:

  • Licença AGPL para uso comercial Embora o iText ofereça uma versão gratuita, usuários comerciais devem cumprir a licença AGPL, que requer a liberação do código-fonte de qualquer software que use o iText ou o pagamento de uma licença comercial.

  • Curva de Aprendizagem Íngreme A API do iText é mais complexa e rica em recursos, o que pode resultar em uma curva de aprendizado mais íngreme em comparação com bibliotecas mais simples como o IronPDF. Os desenvolvedores precisam se familiarizar com sua estrutura de documentos de baixo nível e arquitetura baseada em módulos.

  • Peso pesado para tarefas simples O iText pode parecer complicado para tarefas básicas de PDF, como criação simples de documentos ou conversão básica de HTML para PDF, especialmente quando comparado a bibliotecas como IronPDF, que simplificam o processo.

  • Requer módulos externos para conversão de HTML para PDF A conversão de HTML para PDF no iText está disponível apenas por meio do módulo adicional pdfhtml, que requer uma instalação separada e pode não lidar com conteúdo web moderno de forma tão perfeita quanto o IronPDF.

IronPDF for .NET: Uma poderosa biblioteca de PDF

IronPDF é uma biblioteca .NET de alto nível projetada para simplificar a geração de documentos PDF com foco na produtividade do desenvolvedor. É particularmente eficaz para renderizar conteúdo HTML e estilizar, tornando-o ideal para fluxos de trabalho modernos de conversão da web para PDF.

Principais características:

  • Crie arquivos PDF a partir de matrizes de bytes e trabalhe com documentos PDF sem precisar instalar o Adobe Reader.
  • Renderização direta de HTML para PDF usando o mecanismo Chromium completo para criar documentos PDF a partir de conteúdo HTML.
  • Funciona com Views MVC, Razor Pages e URLs locais/remotos
  • Suporta arquivos de imagem, JavaScript, CSS e layouts responsivos nativamente.
  • Sintaxe fácil de usar e configuração mínima necessária
  • Licenciamento perpétuo e sem restrições da AGPL

Instalando o IronPDF

O IronPDF também pode ser instalado via NuGet , executando o seguinte comando no Console do Gerenciador de Pacotes NuGet :

Install-Package IronPdf

Instalando o IronPDF através do Console do Gerenciador de Pacotes

Alternativamente, você pode instalá-lo através do gerenciador de pacotes NuGet para a tela de solução. Para isso, acesse "Ferramentas > Gerenciador de Pacotes NuGet > Gerenciar Pacotes NuGet para a Solução".

Menu suspenso Ferramentas no Visual Studio

Em seguida, procure por IronPDF e clique em "Instalar".

 Tela do gerenciador de pacotes NuGet do IronPDF

Após a instalação, você pode começar a renderizar páginas HTML completas em PDF em segundos — sem necessidade de módulos adicionais. Ele oferece suporte a CSS moderno, JavaScript e até mesmo conteúdo web interativo sem configuração adicional.

Exemplo de código: Criar documentos PDF a partir de um array de bytes com o IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIronPdf();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
        return pdfDoc.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIronPdf();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
        return pdfDoc.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfWithIronPdf()
		' Save the PDF to a file
		File.WriteAllBytes("output.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfWithIronPdf() As Byte()
		Dim renderer = New ChromePdfRenderer()
		Dim pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>")
		Return pdfDoc.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

Arquivo PDF de saída

 Saída do IronPDF

Explicação

  • A declaração using IronPdf importa a biblioteca IronPDF para acesso a todas as classes relacionadas a PDF.
  • var renderer = new ChromePdfRenderer() cria um novo renderizador de HTML para PDF alimentado por um motor Chromium sem cabeça.
  • renderer.RenderHtmlAsPdf(...) converte a string HTML fornecida em um documento PDF. Você também pode inserir caminhos de arquivos ou URLs.
  • pdfDoc.BinaryData retorna o PDF final como um array de bytes, pronto para ser salvo, transmitido ou armazenado em banco de dados.

Prós e contras do IronPDF

Prós:

  • Renderização de HTML para PDF sem esforço \ Renderize conteúdo HTML, CSS e JavaScript diretamente em PDFs com estilo completo, incluindo Bootstrap e fontes personalizadas — sem necessidade de código de layout complexo ou módulos extras.

  • Início rápido e API intuitiva Crie arquivos PDF totalmente formatados com apenas algumas linhas de código, com sintaxe limpa e total compatibilidade com .NET Core e .NET Framework .

  • Suporte abrangente para tecnologias web O IronPDF oferece suporte a JavaScript, CSS moderno, SVGs e media queries — algo com que a maioria das bibliotecas tem dificuldades, a menos que usem navegadores sem interface gráfica como o Chromium (o que o IronPDF faz internamente).

  • Gerenciamento integrado de imagens e ativos Inclua facilmente imagens, arquivos locais ou até mesmo obtenha recursos de URLs remotos sem configuração adicional.

  • Licenciamento perpétuo e sem AGPL \ Ao contrário do iText, o IronPDF oferece licenciamento comercial flexível sem as restrições das obrigações de código aberto da AGPL.

  • Excelente para MVC e Razor Views Converte facilmente Views Razor .cshtml em PDFs imprimíveis em aplicações ASP.NET .

Contras:

  • O uso comercial requer licença . Embora ofereça um período de teste gratuito, o IronPDF não é de código aberto. Projetos com orçamentos apertados podem precisar avaliar os custos de licenciamento.

  • Tamanho inicial da embalagem maior Por incluir um mecanismo Chromium sem interface gráfica, o pacote NuGet é mais pesado do que algumas alternativas.

Comparação de exemplos práticos de código

Os exemplos de código a seguir nesta seção demonstram essas bibliotecas em ação, durante o qual compararemos IronPDF e iText usando as mesmas tarefas. Ambas as bibliotecas serão submetidas aos mesmos cenários: geração de um PDF a partir de uma URL, renderização de uma imagem como PDF e conversão de HTML formatado em PDF, tudo isso utilizando arrays de bytes para manipular o conteúdo do PDF. Isso permitirá que os desenvolvedores avaliem como cada biblioteca aborda esses casos de uso comuns.

1. Gere um PDF simples a partir de uma URL usando um array de bytes.

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfFromUrlWithIronPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfFromUrlWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitForJavaScript(5000);
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

        var pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfFromUrlWithIronPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfFromUrlWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitForJavaScript(5000);
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

        var pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfFromUrlWithIronPdf()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfFromUrlWithIronPdf() As Byte()
		Dim renderer = New ChromePdfRenderer()
		renderer.RenderingOptions.EnableJavaScript = True
		renderer.RenderingOptions.WaitForJavaScript(5000)
		renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print

		Dim pdf = renderer.RenderUrlAsPdf("https://www.apple.com")
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

PDF de saída

URL para saída PDF do IronPDF

O IronPDF utiliza um mecanismo Chromium sem interface gráfica para renderização de páginas web com precisão de pixels, com suporte completo a JavaScript e CSS.

iText

using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using System.Net.Http;
using System.Threading.Tasks;
using iText.Html2pdf;
using System.IO;

class Program
{
    static async Task Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = await pdfGenerator.GeneratePdfFromUrlWithIText7Async();

        // Save the PDF to a file
        File.WriteAllBytes("itext7-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public async Task<byte[]> GeneratePdfFromUrlWithIText7Async()
    {
        using var httpClient = new HttpClient();
        string html = await httpClient.GetStringAsync("https://www.apple.com");

        using var stream = new MemoryStream();
        HtmlConverter.ConvertToPdf(html, stream);
        return stream.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using System.Net.Http;
using System.Threading.Tasks;
using iText.Html2pdf;
using System.IO;

class Program
{
    static async Task Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = await pdfGenerator.GeneratePdfFromUrlWithIText7Async();

        // Save the PDF to a file
        File.WriteAllBytes("itext7-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public async Task<byte[]> GeneratePdfFromUrlWithIText7Async()
    {
        using var httpClient = new HttpClient();
        string html = await httpClient.GetStringAsync("https://www.apple.com");

        using var stream = new MemoryStream();
        HtmlConverter.ConvertToPdf(html, stream);
        return stream.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports System.Net.Http
Imports System.Threading.Tasks
Imports iText.Html2pdf
Imports System.IO

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = Await pdfGenerator.GeneratePdfFromUrlWithIText7Async()

		' Save the PDF to a file
		File.WriteAllBytes("itext7-from-url.pdf", pdfBytes)
	End Function
End Class

Friend Class PdfGenerator
	Public Async Function GeneratePdfFromUrlWithIText7Async() As Task(Of Byte())
		Dim httpClient As New HttpClient()
		Dim html As String = Await httpClient.GetStringAsync("https://www.apple.com")

		Dim stream = New MemoryStream()
		HtmlConverter.ConvertToPdf(html, stream)
		Return stream.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

Saída

URL do iText para saída de PDF

iText busca HTML bruto com o HttpClient e renderiza usando HtmlConverter, mas não suporta execução de JavaScript (conforme confirmado pela documentação oficial do iText, que recomenda o uso de Selenium ou automação de navegador semelhante para pré-processamento de JavaScript) e possui estilização CSS limitada. Embora o iText tenha adicionado suporte parcial a flexbox na versão 7.1.15 (2021), muitas propriedades CSS3 permanecem não suportadas, especialmente para layouts modernos complexos.

2. Criando um novo arquivo PDF a partir de uma imagem usando uma matriz de bytes

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        var pdf = ImageToPdfConverter.ImageToPdf("example.png");
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        var pdf = ImageToPdfConverter.ImageToPdf("example.png");
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreatePdfWithImage()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreatePdfWithImage() As Byte()
		Dim pdf = ImageToPdfConverter.ImageToPdf("example.png")
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

Saída

 Saída de imagem para PDF do IronPDF

Gere facilmente imagens para PDF com a ferramenta ImageToPdfConverter do IronPDF. Com isso, você pode criar facilmente arquivos PDF a partir de imagens como arquivos PNG ou JPG.

iText

using iText.Kernel.Pdf;
using iText.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("iText-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        using var ms = new MemoryStream();
        using var writer = new PdfWriter(ms);
        using var pdfDoc = new iText.Kernel.Pdf.PdfDocument(writer);
        var document = new Document(pdfDoc);

        var img = new Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"));
        document.Add(img);
        document.Close();

        return ms.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("iText-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        using var ms = new MemoryStream();
        using var writer = new PdfWriter(ms);
        using var pdfDoc = new iText.Kernel.Pdf.PdfDocument(writer);
        var document = new Document(pdfDoc);

        var img = new Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"));
        document.Add(img);
        document.Close();

        return ms.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.IO.Image
Imports iText.Layout.Element
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreatePdfWithImage()

		' Save the PDF to a file
		File.WriteAllBytes("iText-with-image.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreatePdfWithImage() As Byte()
		Dim ms = New MemoryStream()
		Dim writer = New PdfWriter(ms)
		Dim pdfDoc = New iText.Kernel.Pdf.PdfDocument(writer)
		Dim document As New Document(pdfDoc)

		Dim img = New Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"))
		document.Add(img)
		document.Close()

		Return ms.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

Saída

PDF do iText com saída de imagem

Criação manual do layout do documento e inserção explícita de imagens usando ImageDataFactory.

3. Converter conteúdo HTML estilizado em PDF usando uma matriz de bytes

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>";

        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>";

        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreateStyledPdf()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreateStyledPdf() As Byte()
		Dim html As String = "
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>"

		Dim pdf = (New ChromePdfRenderer()).RenderHtmlAsPdf(html)
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

Saída

 Saída HTML para PDF estilizada IronPDF

O IronPDF oferece suporte completo a CSS em tags ou folhas de estilo externas graças ao seu mecanismo Chromium.

iText + pdfHTML

using iText.Kernel.Pdf;
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the new document to the specified file location
        File.WriteAllBytes("iText-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>";

        using var ms = new MemoryStream();
        ConverterProperties properties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties);
        return ms.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the new document to the specified file location
        File.WriteAllBytes("iText-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>";

        using var ms = new MemoryStream();
        ConverterProperties properties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties);
        return ms.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Html2pdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreateStyledPdf()

		' Save the new document to the specified file location
		File.WriteAllBytes("iText-styled-html.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreateStyledPdf() As Byte()
		Dim html As String = "
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>"

		Dim ms = New MemoryStream()
		Dim properties As New ConverterProperties()
		HtmlConverter.ConvertToPdf(New MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties)
		Return ms.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

Saída

iText com HTML estilizado para saída de PDF

Requer a instalação do complemento pago pdfHTML para lidar com tarefas de conversão de HTML.

Resumo da comparação

Recurso IronPDF iText (com pdfHTML)
Converter URL para PDF Renderização completa do Chromium Busca HTML, sem suporte nativo a JS.
Adicionar imagem Incorpore via HTML ou através da ferramenta dedicada de inserção de imagens. Fábrica de imagens manuais
Renderizar HTML estilizado Suporte completo a CSS Suporte a CSS apenas via pdfHTML
Retorna um array de bytes. Sim Sim
Complexidade de configuração Simples Moderado (layout manual)
Qualidade da produção Perfeito em cada pixel Bom, mas estático

Conclusão: Qual biblioteca .NET você deve escolher?

Escolher entre IronPDF e iText depende das necessidades do seu projeto — mas quando se trata de experiência do desenvolvedor, facilidade de uso e precisão de renderização moderna, o IronPDF se destaca claramente.

Se você trabalha com conteúdo HTML dinâmico, renderização web ou precisa criar arquivos PDF a partir de URLs com suporte completo a JavaScript e CSS, o mecanismo baseado no Chromium do IronPDF oferece fidelidade incomparável. Sua API intuitiva e configuração rápida a tornam ideal para desenvolvimento ágil e uso em produção no mundo real — especialmente ao trabalhar com matrizes de bytes, fluxos de arquivos ou geração de PDFs baseada na web.

Por outro lado, o iText é uma biblioteca poderosa e respeitada com uma abordagem mais tradicional, orientada por layout. Oferece um controle sólido sobre a estrutura do documento e é ótimo para desenvolvedores que precisam de manipulação precisa, mas possui uma curva de aprendizado mais acentuada e carece de recursos modernos de renderização HTML.

Em resumo:

Deseja resultados perfeitos em termos de pixels para conteúdo web moderno, HTML estilizado ou prototipagem rápida? Escolha o IronPDF.

  • Precisa de ferramentas de criação de PDFs de baixo nível com controle granular? O iText pode ser a escolha certa.

Pronto para começar a usar o IronPDF? Baixe a versão de avaliação gratuita e veja como é fácil criar PDFs profissionais baseados em matrizes de bytes em C# com apenas algumas linhas de código.

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

Perguntas frequentes

Como posso converter um array de bytes em um PDF em C#?

Você pode usar o IronPDF para converter um array de bytes em um PDF em C#. Basta carregar o array de bytes em um documento IronPDF usando o método `PdfDocument.FromBytes`, que analisará os dados e gerará um documento PDF.

Quais são os benefícios de usar o IronPDF para conversão de HTML em PDF?

O IronPDF se destaca na conversão de HTML para PDF devido ao uso de um mecanismo Chromium sem interface gráfica, que oferece suporte a CSS e JavaScript modernos. Isso o torna ideal para renderizar conteúdo web dinâmico em documentos PDF com qualidade impecável.

Quais são as principais vantagens de usar o IronPDF em vez do iText 7 para geração de PDFs?

O IronPDF oferece uma API mais simples e uma configuração mais rápida para projetos que precisam converter HTML em PDF, com suporte completo para CSS e JavaScript. É particularmente adequado para aplicações que exigem desenvolvimento rápido e integração de conteúdo web.

Como o iText 7 lida com a conformidade com PDFs?

O iText 7 foi projetado para setores com altos padrões de conformidade, oferecendo suporte a padrões como PDF/A, PDF/UA e PDF/X. Ele proporciona um controle robusto sobre a criação de PDFs, tornando-o ideal para aplicações onde a conformidade é fundamental.

Qual é o processo para instalar o IronPDF em um projeto .NET?

Para instalar o IronPDF, você pode usar o Gerenciador de Pacotes NuGet no Visual Studio. Execute o comando `Install-Package IronPDF` no Console do Gerenciador de Pacotes para adicioná-lo ao seu projeto.

O IronPDF consegue criar PDFs a partir de views ASP.NET?

Sim, o IronPDF pode renderizar visualizações ASP.NET diretamente em documentos PDF. Esse recurso permite que os desenvolvedores convertam páginas da web com layouts e estilos complexos em PDFs com facilidade.

Que tipos de aplicações se beneficiam mais com o uso do IronPDF?

Aplicações que exigem a conversão de conteúdo web dinâmico, como relatórios e faturas, em PDFs, são as que mais se beneficiam do uso do IronPDF. Sua configuração rápida e suporte a tecnologias web o tornam ideal para projetos que necessitam de atualizações frequentes e design moderno.

De que forma a arquitetura modular do iText 7 afeta sua utilização?

A arquitetura modular do iText 7 permite a adição de funcionalidades específicas de PDF, como conversão para HTML ou assinatura digital, conforme a necessidade. Isso proporciona flexibilidade, mas pode exigir aprendizado e instalação adicionais para cada módulo.

Quais são as diferenças de licenciamento entre o IronPDF e o iText 7?

O IronPDF oferece licenciamento perpétuo adequado para aplicações comerciais, sem as restrições da AGPL. Em contrapartida, o iText 7 está disponível sob a licença AGPL para projetos de código aberto, sendo que o uso comercial requer uma licença paga.

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 Iron

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