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

Criar PDF a partir de um array de bytes em C# com iTextSharp (em vez de IronPDF)

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 costumam recorrer a bibliotecas PDF de terceiros para essa tarefa, e duas das opções mais populares no ecossistema .NET são o IronPDF e o iText 7 (o sucessor do iTextSharp).

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.

iTextSharp e IronPDF: os principais concorrentes

Dentre as bibliotecas .NET PDF disponíveis, iTextSharp e IronPDF se destacaram como soluções líderes, cada uma com pontos fortes exclusivos:

  • O iTextSharp é uma biblioteca madura e de código aberto baseada no iText do Java, que oferece um controle robusto de PDFs, porém com uma curva de aprendizado acentuada e ressalvas quanto ao 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 7 for .NET (Sucessor do iTextSharp)

O iText 7 é o sucessor oficial do iTextSharp 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. O pacote iText 7 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.

Principais funcionalidades do iText 7

  • API moderna, substituindo a estrutura antiga do iTextSharp
  • 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.

Você precisará usar o iText7 para operações básicas de PDF e poderá incluir complementos opcionais como o html2pdf separadamente.

Instalação (NuGet)

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

Install-Package itext7

Instalando o iText 7 através do Console do Gerenciador de Pacotes NuGet

Você também pode instalar o iText 7 através do Gerenciador de Pacotes na tela de Soluções. 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 pesquisar por iText 7 e clicar em "Instalar".

página do pacote NuGet do iText 7

Exemplo de código: Criar documentos PDF a partir de um array de bytes usando o iText 7

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 PDF do iText 7

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 gravado e está pronto para ser retornado como uma matriz de bytes.

Este exemplo demonstra a API mais modular e legível do iText 7 em comparação com o iTextSharp. No entanto, ainda não há suporte nativo para renderização de HTML/CSS, a menos que você inclua o pdfhtml, que possui licença separada.

Prós e contras do iText 7

Prós:

  • Controle abrangente de PDFs O iText 7 oferece 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 O iText 7 é 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 em PDF). Isso permite uma implementação mais leve caso você não esteja utilizando todos os recursos.

  • Suporta padrões PDF complexos O iText 7 é compatível com padrões ISO como PDF/A (arquivamento), PDF/UA (acessibilidade) e PDF/X (impressão), tornando-o adequado para ambientes profissionais e jurídicos onde a conformidade é crucial.

  • Documentação e suporte completos O iText 7 possui documentação completa 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 7 gratuitamente sob a licença AGPL, o que é ideal para projetos de código aberto ou uso pessoal.

Contras:

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

  • Curva de Aprendizagem Íngreme A API do iText 7 é mais complexa e rica em recursos, o que pode resultar em uma curva de aprendizado mais acentuada 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 7 pode parecer complicado para tarefas básicas em PDF, como a criação de documentos simples ou a conversão básica de HTML para PDF, especialmente quando comparado a bibliotecas como o 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 7 está disponível apenas através do módulo adicional pdfhtml, que requer uma instalação separada e pode não lidar com conteúdo web moderno tão perfeitamente 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 baseado em um mecanismo Chromium sem interface gráfica.
  • 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 uma matriz 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 \ Diferentemente do iText 7, o IronPDF oferece licenciamento comercial flexível, sem as restrições das obrigações da licença AGPL de código aberto.

  • 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 os quais compararemos o IronPDF e o iText 7 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 7

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

iText 7 URL para saída em PDF

O iText 7 busca HTML bruto com o HttpClient e o renderiza usando o HtmlConverter, mas não suporta a execução de JavaScript (conforme confirmado pela documentação oficial do iText, que recomenda o uso do Selenium ou automação de navegador similar para o pré-processamento de JavaScript ) e possui opções limitadas de estilização CSS . Embora o iText7 tenha adicionado suporte parcial ao flexbox na versão 7.1.15 (2021), muitas propriedades do CSS3 permanecem sem suporte, principalmente 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 7

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

iText 7 PDF 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 7 + 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 7 formatado em HTML para saída 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 7 (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?

A escolha entre IronPDF e iText 7 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 7 é uma biblioteca poderosa e respeitada, com uma abordagem mais tradicional, orientada ao 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 7 pode ser a opção ideal.

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

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