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.
- Baixe a biblioteca C# para converter HTML para PDF
- Crie PDF a partir de string HTML no código
- Crie PDF a partir de arquivo HTML no código
- Converta URL para documento PDF com facilidade
- Exporte os arquivos PDF para o local desejado
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();
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"));
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"));
E é isso! Os resultados correspondentes são:
O resultado de converter HTML 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:

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"));
O resultado é:
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);
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;
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 é:
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:
- Navegue até DemoWebSite
- Clique com o botão direito > Definir como Projeto de Inicialização
- Iniciar sem depuração (Ctrl+F5)
- Navegue até seu
{baseurl}/Static/TestInvoice1.htmlpara garantir que está funcionando. Este é o URLhttp://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"));
O resultado é:
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":
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"));
Nota?: A mesma personalização é utilizada como no exemplo ChromePdfRenderer Example2.
O resultado é:
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á:
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: