USANDO O CONJUNTO DE FERRO

HTML para PDF em C# para desenvolvedores .NET (O Guia Definitivo)

Introdução

No mundo impulsionado pela web de hoje, a capacidade de converter conteúdo HTML em documentos PDF (Formato de Documento Portátil) é um recurso crucial para muitas aplicações. Quer seja para gerar arquivos PDF de relatórios, faturas ou arquivar conteúdo da web, a conversão de HTML para PDF simplifica os fluxos de trabalho e garante a formatação consistente de PDFs de alta qualidade. Bibliotecas como IronPDF oferecem uma maneira amigável ao desenvolvedor de lidar com essa conversão, suportando conteúdo dinâmico, formulários HTML e renderização precisa de CSS e JavaScript.

Para desenvolvedores .NET, usar o conversor de HTML para PDF certo impacta a eficiência, simplicidade do código e qualidade da geração de PDF. Bibliotecas modernas permitem que desenvolvedores convertam diretamente strings HTML, páginas da web inteiras ou arquivos HTML em documentos PDF renderizados em apenas algumas linhas de código, possibilitando documentos dinâmicos, cabeçalhos personalizados e versões imprimíveis de conteúdo da web.

O Que Você Vai Aprender

Neste guia, você aprenderá como converter HTML para PDF em C# em várias bibliotecas e explorar suas capacidades de conversão de PDF, incluindo manipulação de documentos PDF, formulários HTML, margens personalizadas e PDFs seguros. Os tópicos que abordaremos neste artigo são:

  1. Por que Comparar Ferramentas de HTML para PDF?
  2. IronPDF: Conversão de HTML para PDF
  3. Aspose: Conversão de HTML para PDF
  4. iText 9: Conversão de HTML para PDF
  5. wkhtmltopdf: Conversão de HTML para PDF
  6. PuppeteerSharp: Conversão de HTML para PDF
  7. Conclusão Por Que Escolher o IronPDF?

Ao final, você entenderá por que o IronPDF se destaca como um conversor de HTML para PDF amigável ao desenvolvedor e eficiente. Certifique-se de conferir nossos outros guias de comparação, onde analisamos mais detalhadamente como o IronPDF se compara com, Aspose.PDF, iText 9, wkhtmltopdf, e PuppeteerSharp para ver qual se encaixa melhor no seu projeto, e por que o IronPDF se sobressai.

Por que Comparar Ferramentas de HTML para PDF?

Selecionar a ferramenta de conversão de HTML para PDF adequada é essencial para garantir que sua aplicação atenda aos requisitos de desempenho, qualidade e custo. Com várias opções disponíveis, cada uma oferecendo diferentes capacidades de conversão de PDF, uma comparação detalhada ajuda na tomada de uma decisão informada. Aqui estão os critérios de avaliação chave a considerar:

  • Complexidade de Integração: Quão facilmente a biblioteca se integra com seus projetos .NET existentes, como usar o Gerenciador de Pacotes NuGet para instalação simples e configuração de integração de API.
  • Simplicidade do Código: A facilidade de escrever e manter o código-fonte, incluindo exemplos de código mínimos, como apenas algumas linhas para converter strings HTML ou páginas da web inteiras em documentos PDF gerados.
  • Precisão de Renderização: A capacidade do mecanismo de renderização para lidar com precisão o código HTML, execução de JavaScript, impressão de CSS, formulários HTML e outros conteúdos dinâmicos enquanto produz PDFs de alta qualidade.
  • Desempenho em Escala: Quão bem o conversor de PDF se desempenha sob carga pesada ao gerar arquivos PDF de várias páginas HTML ou conteúdo dinâmico.
  • Licenciamento e Custo-Benefício: Os modelos de preços, como licença comercial, e adequação ao orçamento do seu projeto.

Ao avaliar esses fatores, os desenvolvedores podem escolher uma ferramenta que atende tanto aos requisitos técnicos quanto às restrições financeiras, quer esteja trabalhando em projetos .NET Core ou .NET Framework no Visual Studio.

IronPDF: Conversão de HTML para PDF

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 1

IronPDF é uma biblioteca .NET completa, projetada especificamente para desenvolvedores. Ele fornece métodos prontos para uso para converter HTML strings, arquivos locais e URLs ao vivo em PDFs com configuração mínima. Seu mecanismo de renderização baseado no Chrome garante alta precisão, incluindo suporte para CSS e JavaScript. IronPDF é comercial, mas oferece forte suporte e uma API direta.

HTML String para PDF

Converter HTML de uma string para um PDF é simples com IronPDF. Esta abordagem é ideal para geração de conteúdo dinâmico ou pequenos trechos de HTML.

Exemplo:

using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
        pdf.SaveAs("output.pdf");
    }
}
using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

Documento PDF Gerado

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 2

Explicação:

  1. ChromePdfRenderer: A classe ChromePdfRenderer é a ferramenta principal para converter HTML em PDF no IronPDF. Ele vem pré-configurado para lidar com a maioria dos casos de uso com configuração mínima.
  2. RenderHtmlAsPdf: Este método recebe uma string HTML como entrada e gera um documento PDF.
  3. SaveAs: O PDF gerado é salvo no caminho especificado (output.pdf).

Arquivo HTML Local para PDF

Para aplicativos que precisam converter um arquivo HTML local (com recursos externos como CSS ou JavaScript), o IronPDF facilita.

Exemplo:

using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("template.html");
        pdf.SaveAs("report.pdf");
    }
}
using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("template.html");
        pdf.SaveAs("report.pdf");
    }
}
$vbLabelText   $csharpLabel

Arquivo HTML de Entrada

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 3

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 4

Explicação:

  • RenderHtmlFileAsPdf: Recebe um arquivo HTML local e o converte em PDF.
  • Lida com recursos vinculados automaticamente, como arquivos externos de CSS e JavaScript.

URL para PDF

IronPDF é especialmente poderoso ao converter conteúdo dinâmico da web de URLs, incluindo páginas que usam JavaScript.

Exemplo:

using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
        renderer.RenderingOptions.WaitFor.RenderDelay(3000); // Wait up to 3 seconds for JS to load

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://apple.com");
        pdf.SaveAs("url-to-pdf.pdf");
    }
}
using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
        renderer.RenderingOptions.WaitFor.RenderDelay(3000); // Wait up to 3 seconds for JS to load

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://apple.com");
        pdf.SaveAs("url-to-pdf.pdf");
    }
}
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 5

Explicação:

  • RenderUrlAsPdf: Busca o conteúdo da URL, incluindo elementos renderizados em JavaScript, e os converte em PDF.

Veredito / Quando Usar

IronPDF é perfeito para desenvolvedores que precisam de fácil integração com API, código mínimo e suporte para manipular documentos PDF, criar documentos dinâmicos, formulários HTML, cabeçalhos personalizados e versões imprimíveis de conteúdo da web. Ideal para projetos .NET Core ou .NET Framework no Visual Studio.

Aspose: Conversão de HTML para PDF

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 6

Aspose.PDF é outra poderosa biblioteca para manipulação de PDF, com suporte para converter HTML em PDF. Vamos ver como a Aspose lida com cada cenário de conversão:

String HTML para PDF

Aspose requer um pouco mais de configuração ao converter strings HTML em comparação ao IronPDF.

Exemplo:

using Aspose.Html;
using Aspose.Html.Saving;

Document doc = new Document();
Page page = doc.getPages().Add();
HtmlFragment htmlFragment = new HtmlFragment("<h1>HTML String</h1>");
page.getParagraphs().Add(htmlFragment);
doc.Save("HTMLStringUsingDOM.pdf");
using Aspose.Html;
using Aspose.Html.Saving;

Document doc = new Document();
Page page = doc.getPages().Add();
HtmlFragment htmlFragment = new HtmlFragment("<h1>HTML String</h1>");
page.getParagraphs().Add(htmlFragment);
doc.Save("HTMLStringUsingDOM.pdf");
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 7

Explicação:

  • Document doc: Cria um novo documento para salvar a string HTML convertida.
  • Page page: Esta linha adiciona uma nova página ao documento vazio que criamos.
  • HtmlFragment htmlFragment: Esta é a string HTML que estamos convertendo.
  • page.getParagraphs().Add(htmlFragment): Adiciona o HTML ao documento.
  • doc.Save: Salva o documento com o conteúdo HTML como um documento PDF.

Arquivo HTML Local para PDF

A Aspose também lida com a conversão de arquivos HTML locais para PDFs, mas requer mais configuração que o IronPDF.

Exemplo:

using Aspose.Html;
using Aspose.Html.Converters;
using Aspose.Html.Saving;

var document = new HTMLDocument("document.html");
var options = new PdfSaveOptions();
Converter.ConvertHTML(document, options, "output.pdf");
using Aspose.Html;
using Aspose.Html.Converters;
using Aspose.Html.Saving;

var document = new HTMLDocument("document.html");
var options = new PdfSaveOptions();
Converter.ConvertHTML(document, options, "output.pdf");
$vbLabelText   $csharpLabel

Entrada HTML:

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 8

Saída:

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 9

Explicação:

  • var document = new HTMLDocument("document.html"): Carrega o arquivo HTML.
  • var options: Cria um novo objeto PdfSaveOptions.
  • Converter.ConvertHTML(): Converte o HTML em PDF.

URL para PDF

A Aspose oferece funcionalidade semelhante para URLs, mas requer configuração extra.

Exemplo:

using System.IO;
using System;
using System.Net.Http;
using Aspose.Pdf;

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://www.apple.com");
response.EnsureSuccessStatusCode();
string responseFromServer = await response.Content.ReadAsStringAsync();
MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseFromServer));
HtmlLoadOptions options = new HtmlLoadOptions("https://www.apple.com");
Document pdfDocument = new Document(stream, options);
pdfDocument.Save("WebPageToPDF_out.pdf");
using System.IO;
using System;
using System.Net.Http;
using Aspose.Pdf;

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://www.apple.com");
response.EnsureSuccessStatusCode();
string responseFromServer = await response.Content.ReadAsStringAsync();
MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseFromServer));
HtmlLoadOptions options = new HtmlLoadOptions("https://www.apple.com");
Document pdfDocument = new Document(stream, options);
pdfDocument.Save("WebPageToPDF_out.pdf");
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 10

Explicação:

  • A variável dataDir contém o diretório onde o PDF gerado será salvo.
  • Um WebRequest é criado para acessar o URL da página principal da Wikipedia, e credenciais padrão são usadas para a solicitação.
  • O método GetResponse() envia a solicitação e recupera a resposta como um HttpWebResponse.
  • Um fluxo é obtido da resposta e um StreamReader lê todo o conteúdo HTML da página na string responseFromServer.
  • O conteúdo HTML de responseFromServer é convertido em um array de bytes e em seguida carregado em um MemoryStream.
  • HtmlLoadOptions é usado para especificar a URL base para links relativos e outras configurações.
  • Um Aspose.Pdf.Document é criado a partir do fluxo de memória contendo o HTML, e o documento é salvo como PDF no diretório especificado.

Veredito / Quando Usar

Aspose.PDF é melhor para projetos empresariais que requerem manipulação avançada de PDF além da conversão. É poderoso, mas menos simplificado para tarefas rápidas de conversão de HTML para PDF.

iText 9: Conversão de HTML para PDF

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 11

iText 9 é a última versão da biblioteca iText PDF, oferecendo recursos aprimorados para gerar e manipular documentos PDF em aplicações .NET. Ele introduz uma API mais simplificada e extensível, melhorando o desempenho e proporcionando melhor suporte para os padrões modernos de PDF.

String HTML para PDF

Aqui está um exemplo básico de como converter uma string HTML em um documento PDF usando iText 9.

Exemplo:

using iText.Html2pdf;
using System.IO;

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

        using (var pdfStream = new FileStream(outputFile, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, pdfStream);
        }

        System.Console.WriteLine("PDF generated: " + outputFile);
    }
}
using iText.Html2pdf;
using System.IO;

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

        using (var pdfStream = new FileStream(outputFile, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, pdfStream);
        }

        System.Console.WriteLine("PDF generated: " + outputFile);
    }
}
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 12

Arquivo HTML Local para PDF

iText 9 pode converter tipos de arquivos HTML para PDF usando a classe HtmlConverter.ConvertToPdf.

Exemplo:

using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string htmlFile = "document.html";
        string outputPdf = "html-file-to-pdf.pdf";

        // Read HTML content from file
        string htmlContent = File.ReadAllText(htmlFile);

        // Convert HTML string to PDF
        HtmlConverter.ConvertToPdf(htmlContent, new FileStream(outputPdf, FileMode.Create));

        System.Console.WriteLine("PDF generated: " + outputPdf);
    }
}
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string htmlFile = "document.html";
        string outputPdf = "html-file-to-pdf.pdf";

        // Read HTML content from file
        string htmlContent = File.ReadAllText(htmlFile);

        // Convert HTML string to PDF
        HtmlConverter.ConvertToPdf(htmlContent, new FileStream(outputPdf, FileMode.Create));

        System.Console.WriteLine("PDF generated: " + outputPdf);
    }
}
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 13

Explicação:

  • HtmlConverter: Converte diretamente um arquivo HTML para um PDF.

URL para PDF

iText7 também suporta a conversão de conteúdo de URLs.

Exemplo:

using iText.Html2pdf;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        string url = "https://apple.com";
        string outputPdf = "url-to-pdf.pdf";

        using var httpClient = new HttpClient();
        // Fetch the HTML content from the URL
        string htmlContent = await httpClient.GetStringAsync(url);

        // Convert HTML content to PDF
        HtmlConverter.ConvertToPdf(htmlContent, new FileStream(outputPdf, FileMode.Create));

        Console.WriteLine("PDF generated: " + outputPdf);
    }
}
using iText.Html2pdf;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        string url = "https://apple.com";
        string outputPdf = "url-to-pdf.pdf";

        using var httpClient = new HttpClient();
        // Fetch the HTML content from the URL
        string htmlContent = await httpClient.GetStringAsync(url);

        // Convert HTML content to PDF
        HtmlConverter.ConvertToPdf(htmlContent, new FileStream(outputPdf, FileMode.Create));

        Console.WriteLine("PDF generated: " + outputPdf);
    }
}
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 14

Explicação:

  • HttpClient.GetStringAsync(url): Faz o download do conteúdo HTML real da URL.
  • HtmlConverter.ConvertToPdf(htmlContent, …): Converte a string HTML capturada em um PDF renderizado.

Veredito / Quando Usar

O iText 9 é adequado para desenvolvedores que precisam de uma solução robusta e de nível empresarial para criação, manipulação e conversão de HTML para PDF. Funciona bem quando se requer controle preciso sobre o PDF gerado, integração com fluxos de trabalho iText existentes ou recursos avançados de PDF como assinaturas digitais e formulários. No entanto, para tarefas simples de HTML para PDF, o iText 9 é mais pesado e complexo do que bibliotecas simplificadas como o IronPDF.

wkhtmltopdf: Conversão de HTML para PDF

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 15

Status de Arquivamento & Manutenção

É importante notar que wkhtmltopdf não é mais mantido ativamente. Seu repositório no GitHub foi oficialmente arquivado em janeiro de 2023 e marcado como somente leitura, o que significa que não estão sendo aplicadas futuras atualizações, correções de bugs ou patches de segurança.

Implicações para desenvolvedores: Embora o wkhtmltopdf ainda possa ser eficaz para casos de uso muito básicos, seu status não mantido e motor de renderização desatualizado o tornam uma escolha arriscada especialmente para ambientes de produção ou aplicativos que lidam com conteúdo HTML dinâmico ou externo.

O wkhtmltopdf é uma ferramenta de linha de comando que converte arquivos HTML para PDF usando renderização Webkit. Veja como funciona para diferentes cenários:

String HTML para PDF

wkhtmltopdf requer a conversão de strings HTML escrevendo-as primeiro em um arquivo.

Exemplo:

using System;
using System.IO;
using System.Diagnostics;
class Program
{
    static void Main(string[] args)
    {
        // HTML string to be converted to PDF
        string html = "<html><body><h1>Hello, World!</h1></body></html>";
        // Write HTML string to temporary file
        string tempHtmlFile = Path.Combine(Path.GetTempPath(), "temp.html");
        File.WriteAllText(tempHtmlFile, html);
        // Set output PDF path
        string outputPdfFile = Path.Combine(Path.GetTempPath(), "html-string-to-pdf.pdf");
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{tempHtmlFile}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        // Clean up the temporary HTML file
        File.Delete(tempHtmlFile);
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
using System;
using System.IO;
using System.Diagnostics;
class Program
{
    static void Main(string[] args)
    {
        // HTML string to be converted to PDF
        string html = "<html><body><h1>Hello, World!</h1></body></html>";
        // Write HTML string to temporary file
        string tempHtmlFile = Path.Combine(Path.GetTempPath(), "temp.html");
        File.WriteAllText(tempHtmlFile, html);
        // Set output PDF path
        string outputPdfFile = Path.Combine(Path.GetTempPath(), "html-string-to-pdf.pdf");
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{tempHtmlFile}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        // Clean up the temporary HTML file
        File.Delete(tempHtmlFile);
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 16

Explicação:

  • wkhtmltopdf requer um arquivo de entrada, então primeiro escrevemos a string HTML em um arquivo temporário (temp.html).
  • Em seguida, usamos a classe Process para executar o comando do wkhtmltopdf, passando o caminho do arquivo do HTML temporário e o caminho do PDF desejado como argumentos.
  • Após a conversão, deletamos o arquivo HTML temporário para limpeza.

Arquivo HTML Local para PDF

Para converter um arquivo HTML local para PDF usando wkhtmltopdf, você pode apontar diretamente para o caminho do arquivo HTML.

Exemplo:

using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        // Path to the local HTML file
        string htmlFilePath = @"C:\path\to\your\document.html";
        // Path for the output PDF file
        string outputPdfFile = @"C:\path\to\output\html-file-to-pdf.pdf";
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{htmlFilePath}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        // Path to the local HTML file
        string htmlFilePath = @"C:\path\to\your\document.html";
        // Path for the output PDF file
        string outputPdfFile = @"C:\path\to\output\html-file-to-pdf.pdf";
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{htmlFilePath}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 17

Explicação:

  • Este exemplo simplesmente fornece o caminho para o arquivo HTML local (template.html) e o caminho de saída para o PDF.
  • wkhtmltopdf lida diretamente com arquivos locais, tornando o comando direto.

URL para PDF

Converter uma URL para PDF é fácil com o wkhtmltopdf. Basta passar a URL diretamente para o comando.

Exemplo:

using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        // URL to be converted to PDF
        string url = "https://apple.com";
        // Path for the output PDF file
        string outputPdfFile = @"C:\path\to\output\url-to-pdf.pdf";
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{url}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        // URL to be converted to PDF
        string url = "https://apple.com";
        // Path for the output PDF file
        string outputPdfFile = @"C:\path\to\output\url-to-pdf.pdf";
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{url}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 18

Explicação:

  • Neste exemplo, wkhtmltopdf aceita diretamente URLs como entrada.
  • O URL é passado como um argumento para wkhtmltopdf, e a saída é salva como PDF no caminho especificado.

PuppeteerSharp: Conversão de HTML para PDF

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 19

PuppeteerSharp é um wrapper .NET para o Puppeteer do Google, proporcionando controle sobre o Chrome/Chromium headless. Ele se destaca na renderização de páginas dinâmicas e pesadas em JavaScript, mas requer o download e gerenciamento de uma instância do Chromium, o que adiciona sobrecarga. É de código aberto sob a licença Apache 2.0.

String HTML para PDF

O Puppeteer é projetado para renderizar páginas inteiras, então converter uma string HTML requer escrevê-la em um arquivo ou renderizá-la diretamente em um navegador.

Exemplo:

using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
       // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync();
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();
        string htmlContent = "<h1>Hello, World!</h1><p>This is a PDF generated from HTML string.</p>";
        await page.SetContentAsync(htmlContent);
        // Save the page as a PDF
        await page.PdfAsync("html-string-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
       // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync();
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();
        string htmlContent = "<h1>Hello, World!</h1><p>This is a PDF generated from HTML string.</p>";
        await page.SetContentAsync(htmlContent);
        // Save the page as a PDF
        await page.PdfAsync("html-string-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 20

Explicação:

  • Puppeteer.LaunchAsync: Inicia uma nova instância do Chromium no modo headless.
  • page.SetContentAsync: Carrega a string HTML na página do navegador.
  • page.PdfAsync: Converte o HTML carregado em PDF e salva em um arquivo.

Arquivo HTML Local para PDF

Para converter um arquivo HTML local em PDF usando o PuppeteerSharp, você pode carregar o arquivo em um navegador headless e gerar o PDF.

Exemplo:

using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();

        // Load the local HTML file
        await page.GoToAsync("file:///path/to/your/template.html");

        // Save the page as a PDF
        await page.PdfAsync("html-file-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();

        // Load the local HTML file
        await page.GoToAsync("file:///path/to/your/template.html");

        // Save the page as a PDF
        await page.PdfAsync("html-file-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 21

Explicação:

  • page.GoToAsync: Carrega o arquivo HTML local (certifique-se de usar o caminho [file://]() correto).
  • page.PdfAsync: Converte o conteúdo do arquivo HTML local em um PDF.

URL para PDF

Converter uma URL para um PDF é uma das principais características do PuppeteerSharp, pois ele pode lidar com páginas complexas com JavaScript.

Exemplo:

using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();

        // Navigate to the URL
        await page.GoToAsync("https://example.com");

        // Save the page as a PDF
        await page.PdfAsync("url-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();

        // Navigate to the URL
        await page.GoToAsync("https://example.com");

        // Save the page as a PDF
        await page.PdfAsync("url-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
$vbLabelText   $csharpLabel

Saída

HTML para PDF em C# para Desenvolvedores .NET (O Guia Definitivo): Figura 22

Explicação:

  • page.GoToAsync: Navega para a URL especificada.
  • page.PdfAsync: Converte a página web na URL em um PDF e salva.

Veredito / Quando Usar

PuppeteerSharp é ideal quando você precisa de uma renderização perfeita de aplicativos web modernos e pesados em JavaScript. É mais complexo que o IronPDF, mas se destaca no manuseio de conteúdo web dinâmico.

Por que escolher o IronPDF?

IronPDF se destaca por sua facilidade de uso, flexibilidade e integração perfeita com aplicativos .NET. É simples de implementar, suporta renderização de HTML, CSS e JavaScript, e não requer configuração adicional ou dependências externas. Além da conversão de HTML para PDF, o IronPDF oferece uma ampla gama de recursos para criar documentos PDF de vários tipos de arquivo, editar e adicionar a documentos PDF existentes, marca d'água, segurança de arquivo PDF e mais! Para ver mais dessa biblioteca em ação, não deixe de conferir os Guias de Como Fazer que demonstram cada um de seus recursos em funcionamento.

Conclusão

Quando se trata de converter arquivos HTML para PDF em C#, há várias ferramentas poderosas disponíveis, cada uma oferecendo recursos e capacidades únicas. IronPDF, Aspose, iText 9, wkhtmltopdf, e PuppeteerSharp oferecem soluções robustas para transformar conteúdo HTML em documentos PDF de nível profissional. No entanto, escolher a ferramenta certa para seu projeto depende de fatores como facilidade de integração, suporte para conteúdo dinâmico, desempenho e flexibilidade.

Ferramenta String HTML para PDF Arquivo HTML para PDF URL para PDF Notas
logo do IronPDF
IronPDF
Simples com `RenderHtmlAsPdf` para strings HTML. Fácil de usar e integra-se perfeitamente com aplicativos .NET. Usa `RenderHtmlFileAsPdf`, lida automaticamente com recursos vinculados (CSS, JS). Usa `RenderUrlAsPdf`, suporta páginas pesadas em JavaScript e conteúdo dinâmico. Totalmente integrado ao .NET, tornando-o ideal para desenvolvedores .NET. Suporta strings HTML, arquivos e URLs.
logo do Aspose
Aspose
Requer mais configuração. Usa `HtmlFragment` em um objeto `Document` para converter strings HTML. Requer `HtmlDocument` e `PdfSaveOptions` para a conversão de arquivos HTML locais. Necessita de mais configuração que o IronPDF. Requer uma configuração extra usando `WebRequest` para buscar conteúdo antes de converter com `HtmlLoadOptions`. Robusto para várias manipulações de documentos, mas a configuração pode ser mais envolvida. Bom para necessidades de PDF mais complexas.
logo do iText
iText7
Usa `HtmlConverter.ConvertToPdf` para converter strings HTML em PDF. Usa `HtmlConverter.ConvertToPdf` para converter arquivos HTML locais em PDFs. Semelhante ao manuseio de arquivos locais, usa `HtmlConverter.ConvertToPdf`. Ótimo para desenvolvedores que precisam de mais controle sobre a manipulação de PDFs além da conversão de HTML para PDF.
logo do wkhtmltopdf
wkhtmltopdf
Converte strings HTML escrevendo-as primeiro em um arquivo. Usa a ferramenta de linha de comando para gerar PDFs. Converte diretamente arquivos HTML locais em PDFs apontando para caminhos de arquivos. Converte diretamente URLs em PDFs passando a URL para a ferramenta de linha de comando. Principalmente uma ferramenta de linha de comando, pode exigir etapas extras para integração no .NET. Melhor para conversões simples.
logo do PuppeteerSharp
PuppeteerSharp
Usa `page.SetContentAsync` para carregar a string HTML e depois `page.PdfAsync` para gerar um PDF. Carrega um arquivo HTML local via `page.GoToAsync` e depois o converte em um PDF. Carrega uma URL e a converte em um PDF usando `page.GoToAsync` e `page.PdfAsync`. Mais adequado para páginas dinâmicas, especialmente conteúdo pesado de JavaScript. Requer baixar e iniciar o Chromium.
  • IronPDF se destaca por sua simplicidade, integração direta com .NET e capacidade de lidar com HTML complexo, incluindo páginas renderizadas em JavaScript. É perfeito para desenvolvedores que buscam uma solução fácil de usar com configuração mínima.

  • Aspose oferece extensas funcionalidades de manipulação de PDF, mas suas capacidades de conversão de HTML para PDF exigem mais configuração, especialmente para o manuseio de arquivos locais e recursos externos.

  • iText 9 fornece uma base sólida para quem deseja criar documentos PDF, embora possa exigir codificação adicional para converter HTML em PDF, especialmente para conteúdo dinâmico. É uma ótima escolha para projetos onde a manipulação personalizada de PDF é necessária.

wkhtmltopdf é ideal para conversão básica de HTML para PDF com uma interface de linha de comando, mas carece da integração e flexibilidade de uma biblioteca completa do .NET.

  • PuppeteerSharp, aproveitando o Chrome headless, é a ferramenta ideal para renderizar páginas da web complexas e dinâmicas e convertê-las em PDFs, especialmente quando se lida com conteúdo pesado em JavaScript.

Para a maioria dos desenvolvedores .NET que procuram uma solução completa e simples, IronPDF vale a pena experimentar hoje para viver suas poderosas funcionalidades você mesmo. Desde a geração de novos documentos PDF até a edição de PDFs existentes, explore toda a gama de recursos do IronPDF por si mesmo. Basta instalar o IronPDF e usar a versão de teste gratuita para experimentá-lo você mesmo. Veja como ele pode elevar seus fluxos de trabalho de PDF hoje.

Em última análise, a ferramenta certa depende de seus requisitos específicos, mas com as opções discutidas aqui, você está bem equipado para encontrar a solução perfeita para o seu projeto.

Por favor, note: Aspose, iText, wkhtmltopdf e PuppeteerSharp são marcas registradas de seus respectivos proprietários. Este site não é afiliado, endossado ou patrocinado por Aspose, iText, wkhtmltopdf ou Puppeteer. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são fornecidas apenas para fins informativos e baseiam-se em informações disponíveis publicamente no momento da redação.