HOWTO · Csharp
HTML a PDF en C#
Convierta una cadena HTML en un PDF A4 en C# con HtmlRenderer.PdfSharp.
En esta página
Use HtmlRenderer.PdfSharp en un proyecto de C# para representar una cadena HTML en páginas PDF y, a continuación, guardar el documento en una ruta con permiso de escritura. El paquete conecta un representador HTML con PdfSharp. Los estilos básicos pueden representarse, mientras que los diseños complejos y el CSS avanzado pueden diferir de la salida del navegador.
Primeros pasos con HtmlRenderer.PdfSharp
Instale HtmlRenderer.PdfSharp con el Administrador de paquetes NuGet de Visual Studio, o ejecute dotnet add package HtmlRenderer.PdfSharp desde el directorio que contiene el archivo de su proyecto. NuGet selecciona una versión compatible del paquete. Si su proyecto requiere una versión fijada, compruebe los marcos de destino de esa versión frente a su proyecto antes de elegirla.
La conversión basada en el paquete requiere los ensamblados de NuGet en el proyecto de su aplicación. Su API usa PdfGenerator de TheArtOfDev.HtmlRenderer.PdfSharp, PdfDocument de PdfSharp.Pdf y PageSize.A4 de PdfSharp. Mantenga estas referencias de paquete en el proyecto que compila el conversor.
Convertir una cadena HTML en PDF
El siguiente programa independiente de C# realiza la conversión con el paquete instalado: crea un PdfDocument, pasa la cadena HTML a PdfGenerator.AddPdfPages con PageSize.A4, guarda el documento en la ruta de salida y libera el 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
Ejecute este programa en el proyecto donde está instalado HtmlRenderer.PdfSharp. En su aplicación, use un destino en el que el proceso pueda escribir; un nombre de archivo relativo se resuelve desde el directorio de trabajo actual. Use una ruta absoluta cuando necesite un destino fijo.
Representar HTML con CSS e imágenes
Incluya un bloque <style> y elementos de imagen en la cadena HTML antes de pasarla al generador. HtmlRenderer.PdfSharp puede representar CSS básico, pero no se garantiza que su salida coincida con un navegador. Revise los documentos que usan selectores avanzados, fuentes personalizadas o posicionamiento complejo.
Una fuente de imagen debe estar disponible para la aplicación durante la conversión. Las URL de imágenes externas necesitan acceso a la red desde ese proceso. Para imágenes locales, use un formato de origen y una ruta compatibles con la versión del paquete de su proyecto, y asegúrese de que el proceso pueda leerla. Si falta una imagen, compruebe que su origen sea correcto y accesible. La captura de pantalla disponible no pudo confirmarse con este ejemplo, por lo que se omite.
Limitaciones y solución de problemas
La representación de HTML a PDF difiere de abrir la misma página en un navegador. Mantenga el marcado bien formado, use estilos compatibles con el representador e inspeccione el PDF generado en busca de cambios de diseño. Los diseños complejos y el CSS avanzado pueden no representarse como se espera.
Si falta el PDF, compruebe la ruta de salida y el acceso de escritura de la aplicación a su directorio. Si faltan estilos, reduzca el HTML y vuelva a agregar el CSS por etapas. Si falta una imagen, confirme que su URL o su origen local esté disponible durante la conversión. Estas comprobaciones ayudan a distinguir un problema de ruta o de acceso a recursos de una diferencia de representación.
FAQ
- ¿Qué hace HtmlRenderer.PdfSharp? Representa contenido HTML en páginas PDF usando PdfSharp, lo que permite que una aplicación de C# guarde documentos generados a partir de marcado.
- ¿Puedo usar CSS? Se admite CSS básico. El CSS avanzado y los diseños complejos pueden verse diferentes de un navegador, así que revise el PDF resultante.
- ¿Cómo funcionan las imágenes? La fuente de la imagen debe estar disponible para el representador durante la conversión. Las URL externas requieren acceso a la red desde la aplicación; las fuentes locales requieren una ruta que el proceso pueda leer.
- ¿Puedo personalizar el PDF? Establezca el tamaño de página mediante la API de generación de PDF y ajuste el HTML y los estilos compatibles. Consulte la API para ver otras opciones en su versión instalada.
- ¿Qué debo esperar del HTML complejo? El representador admite un subconjunto de HTML y CSS. Pruebe su documento real y simplifique o ajuste el marcado cuando su apariencia difiera de su intención.