HOWTO · Csharp
HTML para PDF em C#
Converta uma string HTML em um PDF A4 em C# com HtmlRenderer.PdfSharp.
Nesta página
Use HtmlRenderer.PdfSharp em um projeto C# para renderizar uma string HTML em páginas PDF e, em seguida, salvar o documento em um caminho gravável. O pacote conecta um renderizador HTML ao PdfSharp. Estilos básicos podem ser renderizados, enquanto layouts complexos e CSS avançado podem diferir da saída do navegador.
Primeiros passos com HtmlRenderer.PdfSharp
Instale HtmlRenderer.PdfSharp com o Gerenciador de Pacotes NuGet do Visual Studio, ou execute dotnet add package HtmlRenderer.PdfSharp a partir do diretório que contém o arquivo do seu projeto. O NuGet seleciona uma versão de pacote compatível. Se o seu projeto exigir uma versão fixada, verifique as estruturas de destino dessa versão em relação ao seu projeto antes de escolhê-la.
A conversão baseada em pacote requer os assemblies do NuGet no projeto da sua aplicação. Sua API usa PdfGenerator de TheArtOfDev.HtmlRenderer.PdfSharp, PdfDocument de PdfSharp.Pdf e PageSize.A4 de PdfSharp. Mantenha essas referências de pacote no projeto que compila o conversor.
Converter uma string HTML em PDF
O programa C# autônomo a seguir realiza a conversão com o pacote instalado: ele cria um PdfDocument, passa a string HTML para PdfGenerator.AddPdfPages com PageSize.A4, salva o documento no caminho de saída e descarta o documento.
using System;
using PdfSharp;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;
class Program
{
static void Main()
{
string html = "<html><body><h1>Monthly report</h1><p>Revenue increased this month.</p></body></html>";
string outputPath = "monthly-report.pdf";
using (PdfDocument document = new PdfDocument())
{
PdfGenerator.AddPdfPages(document, html, PageSize.A4);
document.Save(outputPath);
}
Console.WriteLine("Saved " + outputPath);
}
}
Saved monthly-report.pdf
Execute este programa no projeto onde HtmlRenderer.PdfSharp está instalado. Na sua aplicação, use um destino no qual o processo possa gravar; um nome de arquivo relativo é resolvido a partir do diretório de trabalho atual. Use um caminho absoluto quando precisar de um destino fixo.
Renderizar HTML com CSS e imagens
Inclua um bloco <style> e elementos de imagem na string HTML antes de passá-la ao gerador. O HtmlRenderer.PdfSharp pode renderizar CSS básico, mas sua saída não tem garantia de corresponder a um navegador. Revise documentos que usam seletores avançados, fontes personalizadas ou posicionamento complexo.
Uma fonte de imagem deve estar disponível para a aplicação durante a conversão. URLs de imagens externas precisam de acesso à rede a partir desse processo. Para imagens locais, use um formato de fonte e um caminho compatíveis com a versão do pacote no seu projeto, e certifique-se de que o processo possa lê-la. Se uma imagem estiver faltando, verifique se sua fonte está correta e acessível. A captura de tela disponível não pôde ser confirmada em relação a este exemplo, portanto ela é omitida.
Limitações e solução de problemas
A renderização de HTML para PDF difere de abrir a mesma página em um navegador. Mantenha a marcação bem formada, use estilos compatíveis com o renderizador e inspecione o PDF gerado quanto a alterações de layout. Layouts complexos e CSS avançado podem não ser renderizados como esperado.
Se o PDF estiver faltando, verifique o caminho de saída e o acesso de gravação da aplicação ao seu diretório. Se estilos estiverem faltando, reduza o HTML e adicione o CSS de volta em etapas. Se uma imagem estiver faltando, confirme que sua URL ou fonte local está disponível durante a conversão. Essas verificações ajudam a distinguir um problema de caminho ou de acesso a recursos de uma diferença de renderização.
FAQ
- O que o HtmlRenderer.PdfSharp faz? Ele renderiza conteúdo HTML em páginas PDF usando o PdfSharp, permitindo que uma aplicação C# salve documentos gerados a partir de marcação.
- Posso usar CSS? CSS básico é compatível. CSS avançado e layouts complexos podem parecer diferentes de um navegador, portanto revise o PDF resultante.
- Como as imagens funcionam? A fonte da imagem deve estar disponível para o renderizador durante a conversão. URLs externas exigem acesso à rede a partir da aplicação; fontes locais exigem um caminho que o processo possa ler.
- Posso personalizar o PDF? Defina o tamanho da página por meio da API de geração de PDF e ajuste o HTML e os estilos compatíveis. Consulte a API para outras opções na sua versão instalada.
- O que devo esperar de HTML complexo? O renderizador é compatível com um subconjunto de HTML e CSS. Teste seu documento real e simplifique ou ajuste a marcação quando sua aparência diferir da sua intenção.