USANDO O CONJUNTO DE FERRO

Criar PDF em C# a partir de um arquivo HTML

IronPDF converte documentos HTML para PDF de forma programática.

Como Criar um PDF em C# - Exemplo de HTML para PDF

O código fonte de todo este artigo está disponível para C# como um Download do Código Fonte do Projeto C# HTML para PDF.

O tutorial a seguir o guiará pelo processo de usar o IronPDF como um Gerador de PDF em C#. Ele cobre os fundamentos assim como muitos tópicos avançados de C# PDF.

Tutorial de HTML para PDF

Esta demonstração o guiará por exemplos de como usar o IronPdf. Solicite demonstrações de casos de uso adicionais da Iron Software.

A demonstração consiste nos exemplos de Hello World, RenderHtmlAsPdf e RenderUrlAsPdf. Todos os exemplos podem ser encontrados nos projetos correspondentes sob a solução IronPDF Demo.

Passo 1: Instalação

Você pode instalar o IronPdf via NuGet. The package name is IronPDF NuGet Package.

Or you can use the Direct Library Download.

Passo 2: Hello World

Uma vez que você tenha o IronPDF instalado e referenciado em seu projeto, você pode começar a usá-lo imediatamente digitando algumas strings:

// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

Então, se precisar transformar HTML em PDF:

// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";

// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";

// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
$vbLabelText   $csharpLabel

Ou se quiser transformar uma página da web em um arquivo PDF:

// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");

// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");

// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
$vbLabelText   $csharpLabel

E é isso! Os resultados correspondentes são:

Criar PDF em C# a partir de arquivo HTML, Figura 1: O resultado de converter HTML em PDF O resultado de converter HTML em PDF**

Criar PDF em C# a partir de arquivo HTML, Figura 2: O resultado de converter uma página web em PDF O resultado de converter uma página da web em um PDF

Por favor, encontre o exemplo de código no projeto IronPDFDemo.HelloWorld.

Passo 3: RenderHtmlAsPdf

Exemplo 1

Para avaliar um exemplo mais próximo da vida real, imagine uma fatura HTML que precisa ser convertida em PDF. Aqui está o código sobre como fazer isso.

Nota: Você pode encontrar o HTML da fatura no projeto IronPDFDemo.DemoWebSite (~/Static/TestInvoice1.html). Observe que a fatura tem CSS personalizado para o tipo de mídia "print".

A fatura fonte se parece com isto no navegador:

Criar PDF em C# a partir de arquivo HTML, Figura 4:


Para transformar isso em um arquivo PDF, códigos semelhantes ao exemplo HelloWorld acima são usados, sendo a diferença o arquivo HTML de origem.

// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
$vbLabelText   $csharpLabel

O resultado é:

Criar PDF em C# a partir de arquivo HTML, Figura 5: Gerar um arquivo PDF a partir de HTML Gerar um arquivo PDF a partir de HTML

Parece ótimo! Por favor, encontre o exemplo de código no projeto IronPDFDemo.RenderHtmlAdPdfDemo.

Veja também esta pergunta no Como usar documentos HTML ou Strings com Byte Arrays no IronPDF

Exemplo 2

Esta seção ajudará a personalizar o PDF resultante do Exemplo 1. Por exemplo, adicionará margens personalizadas, um cabeçalho com título do documento, um rodapé com a data de criação e números de página, e algum CSS personalizado para o tipo de mídia "print" que uma fatura padrão possui. Para fazer isso, uma instância de ChromePdfRenderOptions é inicializada e passada para o construtor ChromePdfRenderer.

// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};

var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};

var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
$vbLabelText   $csharpLabel

Dica: Em vez de passar opções como parâmetro no construtor, você pode definir o campo correspondente para uma instância ChromePdfRenderer:

var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
$vbLabelText   $csharpLabel

Nota: Os recursos de cabeçalho e rodapé mesclam funcionalidades, o que significa que todos os campos de mesclagem ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}) podem ser preenchidos com dados correspondentes.

O resto do código é o mesmo que o Exemplo 1. O resultado é:

Criar PDF em C# a partir de arquivo HTML, Figura 6: Gerar uma fatura com cabeçalho e rodapé Gerar uma fatura com cabeçalho e rodapé

Margens personalizadas, cabeçalhos, rodapés e CSS para o tipo de mídia "print" estão agora configurados. Por favor, encontre o exemplo de código no projeto IronPDFDemo.RenderHtmlAdPdfDemo. Mais configurações podem ser encontradas na referência de API do IronPDF.

Passo 4: RenderUrlAsPdf

Configuração

Para executar exemplos desta seção, você precisa hospedar o IronPDFDemo.DemoWebSite localmente. Para fazer isso no IIS Express:

  1. Navegue até DemoWebSite
  2. Clique com o botão direito > Definir como Projeto de Inicialização
  3. Iniciar sem depuração (Ctrl+F5)
  4. Navegue até seu {baseurl}/Static/TestInvoice1.html para garantir que está funcionando. Este é o URL http://localhost:51169/Static/TestInvoice1.html (será o mesmo para você se não alterar as configurações correspondentes do projeto).

Exemplo 1

Nesta seção, a fatura do DemoWebSite hospedado é convertida em PDF usando o mesmo código do exemplo HelloWorld. A diferença está no URL hospedado:

// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
$vbLabelText   $csharpLabel

O resultado é:

Criar PDF em C# a partir de arquivo HTML, Figura 7: Gerar um site hospedado em PDF Gerar um site hospedado em um PDF

Isso é ótimo e parece como esperado. Por favor, encontre o exemplo de código dentro do projeto IronPDFDemo.RenderUrlAsPdfDemo.

Exemplo 2

Muitos sites geralmente são protegidos por um método de autenticação. Esta seção usa um nome de usuário e senha fornecidos durante o processo de renderização de um arquivo PDF com algumas personalizações: margens personalizadas, um cabeçalho com o título do documento, um rodapé com a data de criação e páginas, e CSS personalizado para o tipo de mídia "print". O URL para a fatura está em http://localhost:51169/Invoice.

Acessar http://localhost:51169/Invoice resulta no formulário "Autenticação necessária":

Criar PDF em C# a partir de arquivo HTML, Figura 8: Formulário de autenticação necessária Formulário de autenticação necessária

Nota: As credenciais são "testUser"/"testPassword".

Então, como contornar a autenticação? Definindo HttpLoginCredentials:

// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");

// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },

    // Set login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};

using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");

// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },

    // Set login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};

using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
$vbLabelText   $csharpLabel

Nota?: A mesma personalização é utilizada como no exemplo ChromePdfRenderer Example2.

O resultado é:

Criar PDF em C# a partir de arquivo HTML, Figura 9: Gerar um site HTML com credenciais para um arquivo PDF Gere um site HTML com credenciais para um arquivo PDF

Tudo está no lugar. Por favor, encontre um exemplo de código no projeto IronPDFDemo.RenderUrlAsPdfDemo. Se você está se perguntando como o resultado ficaria sem HttpLoginCredentials, aqui está:

Criar PDF em C# a partir de arquivo HTML, Figura 10: Gerar um arquivo PDF vazio sem credenciais Gere um arquivo PDF vazio sem credenciais

Veja também o Tutorial .NET HTML para PDF de Jean

Além disso, IronPDF também pode interagir com PDF de diferentes maneiras: