Ir para o conteúdo do rodapé
USANDO O IRONPDF

Comparação de 7 bibliotecas para geração de PDF em C# (ferramentas gratuitas e pagas)

A funcionalidade de geração de PDF em C# é essencial para muitas aplicações modernas, desde a criação de relatórios até sistemas de faturamento. Neste artigo, exploraremos seis maneiras populares de gerar arquivos PDF usando C#, destacando tanto bibliotecas baseadas em código, como o IronPDF , quanto APIs e ferramentas online. Quer você precise gerar arquivos PDF dinamicamente em um aplicativo da web ou simplesmente criar arquivos PDF a partir de documentos existentes, essas ferramentas atendem às suas necessidades.

1. IronPDF

IronPDF é uma biblioteca PDF .NET premium projetada para desenvolvedores que precisam de conversão de arquivos HTML para PDF de alta qualidade. O IronPDF utiliza um mecanismo de renderização baseado no Chromium para garantir conversões precisas, tornando-o a escolha perfeita para aplicações web que desejam converter páginas HTML ou relatórios baseados na web em arquivos PDF em C#. A ferramenta é conhecida por sua robustez no processamento de documentos PDF existentes e oferece recursos para editar, mesclar ou dividir PDFs.

O IronPDF se integra facilmente a projetos C# através do NuGet Package Manager e, com apenas algumas linhas de código, você pode começar a gerar documentos PDF. É uma ferramenta versátil tanto para conteúdo HTML dinâmico quanto para arquivos PDF gerados pelo servidor.

Principais características

  • Conversão de HTML para PDF: O IronPDF se destaca na conversão de páginas HTML complexas, incluindo suporte para execução de JavaScript e CSS moderno, diretamente em um PDF. Ele utiliza um mecanismo de renderização baseado no Chromium, garantindo que a saída seja idêntica à que você veria em um navegador da web.
  • Manipulação de PDF: O IronPDF permite mesclar, dividir e modificar documentos PDF existentes com facilidade.
  • Opções avançadas de estilo: O IronPDF suporta folhas de estilo externas, fontes personalizadas e JavaScript, permitindo que você crie documentos com estilo sofisticado. É perfeito para faturas, relatórios e conteúdo online.
  • Recursos de segurança: O IronPDF oferece recursos para adicionar proteção por senha, assinaturas digitais e definir permissões para restringir ações como impressão, cópia ou edição do PDF.
  • Manipulação de formulários: O IronPDF permite que os desenvolvedores criem, preencham e leiam formulários PDF programaticamente, tornando-o uma boa opção para aplicativos que precisam de entrada de dados do usuário em formato PDF.
  • Gerenciador de Pacotes NuGet : Instale e gerencie facilmente através do console do gerenciador de pacotes no Visual Studio.

Exemplo de código

using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";

        // Create an instance of ChromePdfRenderer
        ChromePdfRenderer renderer = new ChromePdfRenderer(); 

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); 

        // Save the PDF to a specified file
        pdf.SaveAs("Generated.pdf"); 
    }
}
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";

        // Create an instance of ChromePdfRenderer
        ChromePdfRenderer renderer = new ChromePdfRenderer(); 

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); 

        // Save the PDF to a specified file
        pdf.SaveAs("Generated.pdf"); 
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		Dim html As String = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>"

		' Create an instance of ChromePdfRenderer
		Dim renderer As New ChromePdfRenderer()

		' Render the HTML as a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

		' Save the PDF to a specified file
		pdf.SaveAs("Generated.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
  1. Importação de namespace: using IronPdf; importa a biblioteca IronPDF para acessar suas classes e métodos.
  2. String HTML: A variável 'html' contém o conteúdo HTML que você deseja converter para PDF.
  3. Instância do Renderizador: new ChromePdfRenderer(); cria uma instância da classe ChromePdfRenderer, fornecendo métodos para renderizar conteúdo HTML em formato PDF.
  4. Renderizar PDF: PdfDocument pdf = renderer.RenderHtmlAsPdf(html); converte a string HTML em um documento PDF.
  5. Salvar PDF: pdf.SaveAs("Generated.pdf"); salva o PDF gerado no caminho de arquivo especificado.

Prós

  • Excelente qualidade de renderização para conteúdo web.
  • Suporte robusto para formulários, hiperlinks e favoritos.

Contras

  • As taxas de licenciamento podem ser um fator a considerar em projetos de maior porte. Funcionalidades mais avançadas podem exigir um aprendizado mais aprofundado.

2. iTextSharp

Comparação de 7 bibliotecas para geração de PDF em C# (ferramentas gratuitas e pagas): Figura 2

iTextSharp é uma biblioteca .NET para PDF bem estabelecida que oferece ampla funcionalidade para criação e edição de arquivos PDF. É amplamente utilizado em setores como o financeiro e o jurídico, onde os documentos precisam ser personalizados e protegidos. O iTextSharp permite criar arquivos PDF do zero, preencher formulários e modificar arquivos PDF, proporcionando amplo controle sobre o conteúdo do documento. É particularmente útil para aplicações empresariais que precisam gerar arquivos PDF com layouts precisos e dados dinâmicos, como faturas ou contratos.

Principais características

  • Recursos completos de criação de PDFs: O iTextSharp facilita a criação de um arquivo PDF em C# do zero, permitindo que os desenvolvedores adicionem texto, imagens, tabelas e gráficos vetoriais. Ele oferece controle total sobre o layout do documento, incluindo a capacidade de definir tamanhos de página, margens e metadados.
  • Preenchimento de formulários: Um ponto forte significativo do iTextSharp é sua capacidade de lidar com formulários em PDF (AcroForms). Você pode criar formulários com vários campos de entrada e preenchê-los programaticamente posteriormente, um recurso útil em fluxos de trabalho automatizados de geração de documentos.
  • Conversão de XML para PDF: o iTextSharp oferece suporte robusto para a conversão de dados XML em PDF usando XFA (XML Forms Architecture). Isso é particularmente valioso em setores onde os dados XML precisam ser formatados em formulários ou relatórios padrão.
  • Segurança de PDF: O iTextSharp inclui recursos avançados, como criptografia, assinaturas digitais e marcas d'água, para garantir a autenticidade do documento e proteger dados confidenciais.
  • Extração e manipulação de texto: você pode extrair texto de PDFs existentes, reorganizar o conteúdo do documento ou manipular elementos da página, tornando-o útil para pós-processamento de documentos ou geração de relatórios resumidos a partir de PDFs complexos.

Exemplo de código

using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;

namespace Helpers
{
    public class PdfGenerator
    {
        public static byte[] GeneratePdfFromFragment(string htmlFragment)
        {
            var html = string.Format(@"
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment);
            return Generate(html);
        }

        public static byte[] GeneratePdfFromPage(string htmlPage)
        {
            return Generate(htmlPage);
        }

        private static byte[] Generate(string html)
        {
            using (var memoryStream = new MemoryStream())
            {
                var pdfDocument = new Document(PageSize.LETTER);
                var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
                pdfDocument.Open();
                using (var fw = new StringReader(html))
                {
                    XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
                }
                pdfDocument.Close();
                return memoryStream.ToArray();
            }
        }
    }
}
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;

namespace Helpers
{
    public class PdfGenerator
    {
        public static byte[] GeneratePdfFromFragment(string htmlFragment)
        {
            var html = string.Format(@"
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment);
            return Generate(html);
        }

        public static byte[] GeneratePdfFromPage(string htmlPage)
        {
            return Generate(htmlPage);
        }

        private static byte[] Generate(string html)
        {
            using (var memoryStream = new MemoryStream())
            {
                var pdfDocument = new Document(PageSize.LETTER);
                var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
                pdfDocument.Open();
                using (var fw = new StringReader(html))
                {
                    XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
                }
                pdfDocument.Close();
                return memoryStream.ToArray();
            }
        }
    }
}
Imports System
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml

Namespace Helpers
	Public Class PdfGenerator
		Public Shared Function GeneratePdfFromFragment(ByVal htmlFragment As String) As Byte()
			Dim html = String.Format("
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment)
			Return Generate(html)
		End Function

		Public Shared Function GeneratePdfFromPage(ByVal htmlPage As String) As Byte()
			Return Generate(htmlPage)
		End Function

		Private Shared Function Generate(ByVal html As String) As Byte()
			Using memoryStream As New MemoryStream()
				Dim pdfDocument = New Document(PageSize.LETTER)
				Dim pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream)
				pdfDocument.Open()
				Using fw = New StringReader(html)
					XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw)
				End Using
				pdfDocument.Close()
				Return memoryStream.ToArray()
			End Using
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel
  1. GeneratePdfFromFragment: Recebe um fragmento HTML (como um documento HTML parcial) e o converte em uma estrutura HTML completa, envolvendo-o em um modelo básico <html> e <body>. Em seguida, chama o método interno Generate.
  2. GeneratePdfFromPage: Aceita uma página HTML completa e chama diretamente o método Generate.
  3. Gerar: Este método lida com a conversão de HTML para PDF.
    • Inicializa um MemoryStream para armazenar o PDF gerado na memória.
    • Cria um objeto Documento iTextSharp com páginas em formato carta.
    • O XMLWorkerHelper analisa o conteúdo HTML e o grava no documento PDF usando o StringReader fornecido.

Prós

  • Altamente personalizável e com um conjunto abrangente de recursos.
  • Documentação completa e amplo suporte da comunidade.

Contras

  • O iTextSharp (que é gratuito para uso pessoal, mas requer uma licença comercial para projetos de maior escala) pode ter limitações no processamento de CSS ou JavaScript complexos.
  • O XMLWorker (usado aqui) é uma ferramenta obsoleta do iTextSharp para análise de HTML/CSS. O iText7 (a versão mais recente do iText) utiliza um analisador HTML mais robusto, o pdfHTML , que pode oferecer melhor suporte aos padrões web modernos.
  • Curva de aprendizado mais acentuada para iniciantes.

3. PDFsharp

Comparação de 7 bibliotecas para geração de PDF em C# (ferramentas gratuitas e pagas): Figura 3

PDFSharp é uma biblioteca .NET leve e de código aberto, ideal para tarefas básicas de criação de PDFs. Se sua aplicação requer apenas operações simples, como adicionar texto, imagens ou tabelas, o PDFSharp é uma opção fácil de usar para gerar documentos PDF em C#. Embora não possua recursos avançados como conversão de HTML para PDF, destaca-se pela simplicidade na geração de arquivos PDF de pequeno a médio porte em C#.

Principais características

  • Criação básica de PDFs: API simples e fácil de usar para desenhar texto e gráficos. Ideal para criar documentos simples.
  • Manipulação de documentos: Combine e modifique PDFs existentes com facilidade, permitindo flexibilidade no gerenciamento de documentos.
  • Suporte para desenho e gráficos: O PDFsharp oferece um conjunto de ferramentas para desenhar em páginas PDF, incluindo linhas, retângulos e outros gráficos vetoriais. Ele também permite incorporar imagens em seus PDFs.
  • Gratuito e de código aberto: O PDFsharp é totalmente gratuito para uso comercial e não comercial, tornando-se uma opção atraente para pequenas empresas e desenvolvedores que trabalham em projetos de código aberto.

Exemplo de código

using PdfSharp.Pdf;
using PdfSharp.Drawing;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PdfSharp";

        // Add a page to the document
        PdfPage page = document.AddPage();

        // Create an XGraphics object to draw on the page
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Set a font to use for drawing text
        XFont font = new XFont("Verdana", 20, XFontStyle.Bold);

        // Draw the text on the PDF page
        gfx.DrawString("Hello, World!", font, XBrushes.Black, 
                       new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);

        // Save the document to disk
        document.Save("Generated.pdf");
    }
}
using PdfSharp.Pdf;
using PdfSharp.Drawing;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PdfSharp";

        // Add a page to the document
        PdfPage page = document.AddPage();

        // Create an XGraphics object to draw on the page
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Set a font to use for drawing text
        XFont font = new XFont("Verdana", 20, XFontStyle.Bold);

        // Draw the text on the PDF page
        gfx.DrawString("Hello, World!", font, XBrushes.Black, 
                       new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);

        // Save the document to disk
        document.Save("Generated.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing

Friend Class Program
	Shared Sub Main()
		' Create a new PDF document
		Dim document As New PdfDocument()
		document.Info.Title = "Created with PdfSharp"

		' Add a page to the document
		Dim page As PdfPage = document.AddPage()

		' Create an XGraphics object to draw on the page
		Dim gfx As XGraphics = XGraphics.FromPdfPage(page)

		' Set a font to use for drawing text
		Dim font As New XFont("Verdana", 20, XFontStyle.Bold)

		' Draw the text on the PDF page
		gfx.DrawString("Hello, World!", font, XBrushes.Black, New XRect(0, 0, page.Width, page.Height), XStringFormats.Center)

		' Save the document to disk
		document.Save("Generated.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
  • PdfDocument: Representa o documento PDF completo. Você pode adicionar páginas, definir metadados e manipular o documento.
  • PdfPage: Representa uma única página dentro do documento. Novas páginas são adicionadas usando o método AddPage.
  • XGraphics: Utilizado para desenhar texto, imagens e formas em uma página específica. É semelhante ao GDI+ no .NET.
  • XFont: Especifica a fonte e o estilo para renderização do texto. Neste exemplo, "Verdana" é usado com estilo em negrito.
  • DrawString: Desenha a string especificada na posição definida dentro do documento.

Prós

  • Gratuito e de código aberto, sem restrições de licenciamento. Simples e leve, facilitando o início da geração básica de PDFs.
  • Funciona bem para projetos que não exigem funcionalidades complexas.

Contras

  • Funcionalidade limitada em comparação com outras bibliotecas.
  • Não há suporte nativo para conversão de HTML em PDF.

4. Biblioteca de PDF da Syncfusion

Comparação de 7 bibliotecas para geração de PDF em C# (ferramentas gratuitas e pagas): Figura 4

A Syncfusion PDF Library é uma ferramenta abrangente e de alto desempenho, projetada para empresas que precisam trabalhar com PDFs em uma ampla gama de aplicações. Faz parte do pacote mais amplo da Syncfusion, que oferece bibliotecas para uma variedade de formatos e plataformas. A biblioteca de PDFs se destaca por seu extenso conjunto de recursos que vai além da simples criação de documentos e permite manipulação detalhada, incluindo preenchimento de formulários, assinaturas digitais e segurança de documentos.

Principais características

  • API de PDF abrangente: Capaz de gerar PDFs altamente personalizados, incluindo aqueles com layouts complexos, fontes incorporadas e imagens de alta resolução. Oferece controle detalhado sobre todos os aspectos da criação de PDFs, desde a formatação de páginas até opções avançadas de layout.
  • Processamento de formulários: A biblioteca se destaca na criação, preenchimento e extração de dados de formulários PDF interativos (AcroForms). Útil para criar PDFs preenchíveis para entrada de dados do usuário, automatizar a entrada de dados ou processar formulários preenchidos.
  • Assinaturas e Criptografia Digitais: Oferece recursos de segurança robustos, incluindo a capacidade de criptografar documentos PDF, adicionar proteção por senha e aplicar assinaturas digitais. Essencial para setores como saúde e serviços jurídicos que exigem autenticidade e segurança de documentos.

Exemplo de código

using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;

class Program
{
    static void Main()
    {
        // Create a new PDF document.
        PdfDocument document = new PdfDocument();

        // Add a page to the document.
        PdfPage page = document.Pages.Add();

        // Create PDF graphics for the page.
        PdfGraphics graphics = page.Graphics;

        // Set the standard font.
        PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);

        // Draw the text.
        graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));

        // Save the document.
        document.Save("Output.pdf");

        // Close the document.
        document.Close(true);
    }
}
using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;

class Program
{
    static void Main()
    {
        // Create a new PDF document.
        PdfDocument document = new PdfDocument();

        // Add a page to the document.
        PdfPage page = document.Pages.Add();

        // Create PDF graphics for the page.
        PdfGraphics graphics = page.Graphics;

        // Set the standard font.
        PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);

        // Draw the text.
        graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));

        // Save the document.
        document.Save("Output.pdf");

        // Close the document.
        document.Close(true);
    }
}
Imports Syncfusion.Pdf
Imports Syncfusion.Pdf.Graphics

Friend Class Program
	Shared Sub Main()
		' Create a new PDF document.
		Dim document As New PdfDocument()

		' Add a page to the document.
		Dim page As PdfPage = document.Pages.Add()

		' Create PDF graphics for the page.
		Dim graphics As PdfGraphics = page.Graphics

		' Set the standard font.
		Dim font As PdfFont = New PdfStandardFont(PdfFontFamily.Helvetica, 20)

		' Draw the text.
		graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, New PointF(0, 0))

		' Save the document.
		document.Save("Output.pdf")

		' Close the document.
		document.Close(True)
	End Sub
End Class
$vbLabelText   $csharpLabel
  • PdfDocument: Representa o documento PDF. Você pode adicionar páginas, definir propriedades e manipular seu conteúdo.
  • PdfPage: Representa uma página dentro do documento PDF.
  • PdfFont: Define a fonte para renderização do texto. Neste caso, é utilizada uma fonte Helvetica padrão.
  • DrawString: Desenha a string especificada na página PDF nas coordenadas fornecidas.

Prós

  • Conjunto de funcionalidades avançadas, adequado para a criação de PDFs complexos.
  • O suporte profissional e a documentação tornam-no ideal para aplicações de grande escala.
  • Suporta funcionalidades avançadas de PDF, como preenchimento de formulários, criptografia e anotações.

Contras

  • As taxas de licenciamento para uso comercial são relativamente altas.
  • API complexa, que pode exigir tempo para ser dominada.

5. PDFShift (Ferramenta online)

Comparação de 7 bibliotecas para geração de PDF em C# (ferramentas gratuitas e pagas): Figura 5

O PDFShift é um serviço baseado na nuvem, projetado para converter arquivos HTML em PDF. Ele se integra perfeitamente com aplicativos C# por meio de sua API, permitindo que você converta páginas da web HTML geradas dinamicamente em PDFs de qualidade profissional. O PDFShift é particularmente útil para desenvolvedores web que desejam gerar documentos PDF sob demanda a partir de conteúdo HTML, como faturas ou relatórios. Como o PDFShift opera inteiramente por meio de sua API REST, você pode enviar apenas algumas linhas de HTML para o serviço e receber um arquivo PDF para download em resposta. É uma solução simples e escalável para geração de arquivos PDF baseada na web.

Principais características

  • Conversão de HTML para PDF: O PDFShift se destaca na conversão de documentos HTML em PDFs de alta qualidade. Ele lida com estilos CSS complexos, JavaScript e layouts de design responsivos, garantindo que sua página da web tenha exatamente a mesma aparência no formato PDF.
  • Integração de API: A API do PDFShift foi projetada para integração perfeita em aplicativos da web. É muito fácil de usar: basta enviar uma solicitação HTTP POST com o conteúdo HTML e o serviço retorna um documento PDF.
  • Opções de personalização: Permite personalizar o PDF gerado, incluindo definir o tamanho da página, a orientação, as margens e os cabeçalhos/rodapés. Você também pode adicionar conteúdo dinâmico aos cabeçalhos e rodapés, como números de página ou metadados do documento.

Como funciona

  • Envie uma solicitação POST com conteúdo HTML para o endpoint da API do PDFShift. Receba o PDF gerado como resposta, pronto para baixar ou salvar.

Código de exemplo

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
            var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
            var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using client As New HttpClient()
			Dim htmlContent As String = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>"
			Dim content = New StringContent(htmlContent, Encoding.UTF8, "application/json")

			Dim response As HttpResponseMessage = Await client.PostAsync("https://api.pdfshift.io/v3/convert", content)

			Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel
  • HttpClient: Envia o conteúdo HTML como uma solicitação POST para a API do PDFShift.
  • PostAsync: Envia a solicitação para a API, que processa o HTML e retorna o PDF.
  • ReadAsByteArrayAsync: Lê a resposta do PDF como uma matriz de bytes, que pode então ser salva como um arquivo.

Prós

  • API simples com configuração mínima.
  • Ideal para aplicações web que exigem conversão dinâmica de HTML para PDF.
  • Não há necessidade de gerenciar bibliotecas ou servidores de PDF.

Contras

  • Limitado à conversão de HTML para PDF; Não suporta recursos de PDF mais complexos.
  • Requer conexão com a internet e gera custos após um determinado limite de uso.

6. DocRaptor (Ferramenta Online)

Comparação de 7 bibliotecas para geração de PDF em C# (ferramentas gratuitas e pagas): Figura 6

O DocRaptor é outro poderoso serviço de geração de PDFs baseado em API que converte HTML e CSS em PDFs de alta qualidade. É conhecido pela sua excelente renderização de documentos HTML, particularmente no tratamento de estilos CSS complexos, consultas de mídia e fontes da web. Isso faz do DocRaptor uma ótima opção para gerar documentos com aparência profissional, como relatórios, faturas e eBooks, diretamente a partir de modelos HTML.

Principais características

  • Suporte a HTML e CSS: Converte documentos HTML com estilos CSS complexos, incluindo consultas de mídia e fontes.
  • Integração de API: API REST para integração perfeita em aplicações web.
  • Cabeçalhos/Rodapés Personalizados: Adicione cabeçalhos e rodapés dinâmicos, incluindo números de página e formatação personalizada.
  • Segurança de PDF: Suporta criptografia e proteção por senha.

Como funciona

  • Enviar uma solicitação POST para a API do DocRaptor com conteúdo HTML.
  • Personalize a saída em PDF com parâmetros para tamanho da página, margens, cabeçalhos e rodapés.
  • Receba o PDF gerado como resposta.

Código de exemplo

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string apiKey = "YOUR_API_KEY";
            string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
            string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string apiKey = "YOUR_API_KEY";
            string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
            string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using client As New HttpClient()
			Dim apiKey As String = "YOUR_API_KEY"
			Dim htmlContent As String = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>"
			Dim jsonData As String = $"{{""test"": true, ""document_content"": ""{htmlContent}"", ""name"": ""Generated.pdf"", ""document_type"": ""pdf""}}"
			Dim content = New StringContent(jsonData, Encoding.UTF8, "application/json")

			Dim response As HttpResponseMessage = Await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content)

			Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel
  • Chave de API: Você precisa fornecer uma chave de API para autenticação ao usar o DocRaptor. Substitua "YOUR_API_KEY" pela sua chave de API real.
  • JsonData: Esta string JSON contém o conteúdo HTML, o nome do documento e o tipo (PDF neste caso).
  • PostAsync: Envia o conteúdo HTML e os parâmetros para a API do DocRaptor para geração de PDF.

Prós

  • Renderização de alta qualidade com suporte completo para HTML, CSS e JavaScript.
  • Opções avançadas de personalização para layout e segurança do documento.
  • Não há necessidade de manter bibliotecas ou infraestrutura para geração de PDFs.

Contras

  • Serviço pago após exceder o limite de uso gratuito.
  • Dependente da conexão com a internet.

7. Ferramentas online sem código

Se você não quer escrever código ou precisa de uma solução rápida para gerar PDFs, existem diversas ferramentas online que permitem criar PDFs de forma rápida e fácil. Aqui estão algumas opções notáveis:

7.1. Pequenopdf

Comparação de 7 bibliotecas para geração de PDF em C# (ferramentas gratuitas e pagas): Figura 7

Smallpdf é uma plataforma online que oferece diversas ferramentas relacionadas a PDFs, incluindo a possibilidade de criar PDFs a partir de uma ampla variedade de formatos de arquivo. Ele foi projetado para usuários que desejam uma interface simples de arrastar e soltar, sem precisar escrever código. O Smallpdf é amplamente utilizado para conversões rápidas de arquivos, como transformar documentos do Word, planilhas do Excel ou imagens em PDFs. Ele também oferece ferramentas para mesclar, compactar e dividir PDFs, tornando-se uma ferramenta versátil para tarefas básicas com PDFs.

Principais características

  • Conversão de arquivos: Suporta a conversão de arquivos Word, Excel, PowerPoint e de imagem (JPG, PNG) para PDF. Isso o torna ideal para usuários que precisam criar PDFs a partir de diversos tipos de documentos rapidamente.
  • Fusão e divisão de PDFs: Oferece uma interface simples para mesclar vários PDFs em um único arquivo ou dividir um PDF em páginas individuais.
  • Integração com armazenamento em nuvem: você pode facilmente fazer upload de arquivos do Google Drive ou Dropbox e salvar os PDFs convertidos nessas plataformas, simplificando o gerenciamento de arquivos.
  • Ferramentas de edição de PDF: Oferece ferramentas básicas de edição de PDF para editar qualquer documento PDF existente, como adicionar anotações, preencher formulários e assinar documentos digitalmente.

Prós

  • Muito fácil de usar, mesmo para quem não é desenvolvedor.
  • Gratuito para uso básico, com opções de atualização para obter mais recursos.
  • Oferece uma ampla variedade de ferramentas relacionadas a PDFs, como mesclar, dividir e compactar PDFs.

Contras

  • Personalização limitada em comparação com soluções baseadas em código.
  • O plano gratuito pode ter algumas restrições de recursos.

7.2. PDFescape

Comparação de 7 bibliotecas para geração de PDF em C# (ferramentas gratuitas e pagas): Figura 8

O PDFescape é um editor de PDF online e fácil de usar, que permite aos usuários criar, editar e visualizar PDFs sem a necessidade de instalar qualquer software. É uma ótima ferramenta para quem precisa fazer edições rápidas em PDFs, como preencher formulários, adicionar anotações de texto ou inserir imagens. O PDFescape também oferece ferramentas para criar novos PDFs do zero, tornando-se uma opção flexível para a criação de documentos básicos.

Principais características

  • Preenchimento e edição de formulários: Excelente no manuseio de formulários em PDF. Os usuários podem preencher formulários ou editar campos existentes em documentos PDF com facilidade, o que é útil para contratos, candidaturas e outros documentos.
  • Criação básica de PDF: Oferece ferramentas para adicionar texto, formas, imagens e campos de formulário. Útil para criar documentos simples, como cartas ou formulários.
  • Anotações e comentários: Adicione comentários, notas adesivas e outras anotações a PDFs existentes, tornando o PDFescape uma ótima ferramenta para revisão e colaboração em documentos.
  • Não requer instalação: Funciona inteiramente no seu navegador, sem necessidade de instalar nenhum software. Isso o torna ideal para usuários que precisam de acesso rápido a ferramentas de PDF em qualquer lugar.

Prós

  • Fácil de usar, mesmo para usuários sem conhecimento técnico.
  • Plano gratuito para criação e edição básica de PDFs.
  • Adequado para tarefas simples de edição de PDFs.

Contras

  • Não possui recursos avançados para a criação de PDFs complexos.
  • Opções limitadas de design e formatação.

7.3. PDF Doces

Comparação de 7 bibliotecas para geração de PDF em C# (ferramentas gratuitas e pagas): Figura 9

O PDF Candy é um conjunto de ferramentas online gratuitas para PDF que abrange uma ampla gama de tarefas relacionadas a PDFs, desde a conversão de arquivos até a edição. É uma excelente opção para usuários que precisam realizar operações rápidas com PDFs sem precisar criar uma conta ou instalar qualquer software. O PDF Candy suporta a conversão de vários tipos de arquivos, como documentos do Word, imagens e arquivos de texto, em PDFs. Também oferece ferramentas para mesclar, dividir e compactar PDFs.

Principais características

  • Ampla variedade de opções de conversão: Permite converter diversos formatos de arquivo, incluindo documentos do Word, imagens e arquivos de texto, em PDFs. Isso a torna uma ferramenta flexível para lidar com diferentes tipos de conteúdo.
  • Fusão e divisão de PDFs: Permite aos usuários mesclar vários PDFs em um só ou dividir PDFs grandes em arquivos menores e mais fáceis de gerenciar.
  • Privacidade de Arquivos: Exclui automaticamente os arquivos de seus servidores após um curto período, garantindo que seus documentos permaneçam privados.
  • Gratuito para usar: A maioria das ferramentas é gratuita e não requer cadastro, tornando-as acessíveis a um público amplo. No entanto, também oferece uma versão premium com recursos mais avançados para quem precisa de uso mais frequente ou conversões de arquivos maiores.

Prós

  • Fácil de usar e totalmente gratuito para a maioria dos usuários.
  • Suporta diversos tipos de arquivo para conversão em PDF.
  • Não é necessário criar uma conta para usar o recurso básico.

Contras

  • Recursos limitados de personalização avançada de PDF. Algumas ferramentas podem ter restrições quanto ao tamanho do arquivo ou à complexidade da conversão.

Conclusão

Comparação de 7 bibliotecas para geração de PDF em C# (ferramentas gratuitas e pagas): Figura 10

A escolha da ferramenta certa para gerar arquivos PDF em C# depende das suas necessidades. Se você precisa gerar documentos PDF a partir de conteúdo HTML, o IronPDF e o PDFShift são excelentes opções. O iTextSharp e o Syncfusion oferecem amplas opções de personalização e controle sobre a estrutura do documento para projetos mais complexos. Para soluções mais simples e de código aberto, o PDFsharp é uma escolha confiável para modificar arquivos PDF ou criar PDFs básicos. Por fim, para quem não é desenvolvedor, o Smallpdf, o PDFescape e o PDF Candy oferecem opções fáceis e sem código para trabalhar com arquivos PDF.

Para quem tem interesse em experimentar [o IronPDF](trial license) , ele se torna uma excelente opção para desenvolvedores testarem seus recursos de conversão de HTML para PDF e manipulação de PDF antes de adquirirem uma licença paga. O período de teste permite explorar os recursos premium, como geração de arquivos PDF de alta qualidade, opções de segurança e modificação de documentos PDF existentes, proporcionando experiência prática com as funcionalidades da ferramenta. Se o seu projeto exige conversões frequentes de HTML para PDF ou edição complexa de PDFs, o teste gratuito do IronPDF é uma ótima maneira de verificar se ele atende às suas necessidades.

Ao avaliar as características específicas de cada ferramenta e o escopo do seu projeto, você pode escolher a melhor solução para gerar arquivos PDF de forma eficiente em C#.

Perguntas frequentes

Como posso converter HTML para PDF em C#?

Você pode usar o método RenderHtmlAsPdf do IronPDF para converter strings HTML em PDFs. Você também pode converter arquivos HTML em PDFs usando o RenderHtmlFileAsPdf .

Quais são as diferenças entre bibliotecas PDF gratuitas e pagas em C#?

Bibliotecas gratuitas como o PDFsharp são excelentes para a criação e manipulação básica de PDFs, enquanto bibliotecas pagas como o IronPDF oferecem recursos avançados como conversão de HTML para PDF, processamento de formulários e segurança aprimorada.

Qual é a melhor biblioteca de código aberto para tarefas básicas de PDF em C#?

O PDFsharp é uma biblioteca .NET leve e de código aberto, ideal para tarefas básicas de criação de PDFs. É gratuito tanto para uso comercial quanto não comercial.

Como o iTextSharp oferece suporte à criação segura de documentos PDF?

O iTextSharp oferece amplas opções de personalização para a criação de documentos PDF seguros, incluindo suporte para assinaturas digitais e criptografia, tornando-o adequado para setores que exigem o manuseio seguro de documentos.

Posso usar ferramentas online para conversão de HTML para PDF em aplicações C#?

Sim, ferramentas online como PDFShift e DocRaptor oferecem conversão de HTML para PDF baseada em API, o que é ideal para aplicações web que necessitam de geração dinâmica de PDFs.

Quais são as vantagens de usar uma biblioteca com um mecanismo de renderização baseado no Chromium para geração de PDFs?

Bibliotecas como o IronPDF, que utilizam um mecanismo de renderização baseado no Chromium, oferecem conversão de HTML para PDF de alta qualidade, com suporte para estilos complexos e JavaScript.

Como a Biblioteca de PDFs da Syncfusion beneficia as aplicações empresariais?

A biblioteca Syncfusion PDF oferece recursos abrangentes para aplicações empresariais, incluindo processamento de formulários, assinaturas digitais e criptografia, tornando-a altamente adequada para requisitos profissionais complexos.

O IronPDF é compatível com a próxima versão do .NET 10?

Sim — o IronPDF é compatível com o .NET 10 nativamente. Ele é listado como compatível com o .NET 10 juntamente com as versões 9, 8, 7, 6, Core, Standard e Framework, e nenhuma solução alternativa especial é necessária. (ironpdf.com)

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