Convertir HTML a PDF en C#

En esta guía, encontrará información sobre cómo convertir un documento HTML a un formato de archivo de formato de documento portátil (PDF) utilizando la biblioteca Aspose.HTML for .NET. Vamos a cubrir en detalle cómo convertir HTML a PDF usando los métodos ConvertHTML() de la clase Converter y cómo aplicar los parámetros PdfSaveOptions y ICreateStreamProvider.

Para continuar siguiendo este tutorial, debe instalar y configurar la biblioteca Aspose.HTML for .NET en su proyecto C#. Nuestros ejemplos de código le ayudan a convertir HTML a PDF y generar archivos PDF utilizando la biblioteca C#.

HTML a PDF mediante una sola línea de código

La conversión de HTML a PDF es muy popular. Para realizar esta función, Aspose.HTML for .NET ofrece los métodos estáticos de la clase Converter como una forma comprensible y sencilla de convertir código HTML en un archivo PDF literalmente con una sola línea de código.

1// Invoke the ConvertHTML() method to convert HTML to PDF
2Converter.ConvertHTML(@"<h1>Convert HTML to PDF!</h1>", ".", new PdfSaveOptions(), Path.Combine(OutputDir, "convert-with-single-line.pdf"));

Convertidor HTML en línea

Puede comprobar la funcionalidad de la API Aspose.HTML y convertir HTML en tiempo real. Cargue HTML desde el sistema de archivos local, seleccione el formato de salida y ejecute el ejemplo. En el ejemplo, las opciones de guardar están configuradas de forma predeterminada. Recibirá inmediatamente el resultado en un archivo separado.

                
            

Si desea convertir HTML a PDF mediante programación, consulte los siguientes ejemplos de código C#.

Convertir HTML a PDF en C#

Cualquier conversión de HTML a PDF que desee realizar implica cargar un documento HTML y guardarlo en formato PDF. Puede cargar HTML desde un archivo, código HTML, secuencia o URL (consulte el artículo Creación de un documento HTML). Pueden ser diferentes escenarios, pero se pueden realizar con algunos pasos necesarios:

  1. Cargue un archivo HTML usando uno de los constructores HTMLDocument() de la clase HTMLDocument. En el ejemplo utilizamos el constructor HTMLDocument(string) que inicializa un documento HTML a partir de un archivo.
  2. Cree un nuevo objeto PdfSaveOptions.
  3. Utilice el método ConvertHTML() de la clase Converter para guardar HTML como un archivo PDF. Debe pasar HTMLDocument, PdfSaveOptions y la ruta del archivo de salida al método ConvertHTML() para convertir HTML a PDF.

Para continuar en esta guía, necesitaremos algún archivo HTML con el que trabajar. Aquí hay un archivo HTML de muestra que usaremos en el siguiente ejemplo de C#: spring.html. Si lo abres en tu navegador, deberías ver:

Texto “La figura ilustra el archivo spring.html”

Eche un vistazo al siguiente fragmento de código C# que muestra el proceso de conversión de HTML a PDF para el archivo spring.html.

 1// Prepare a path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "spring.html");
 3
 4// Prepare a path to save the converted file
 5string savePath = Path.Combine(OutputDir, "spring-output.pdf");
 6
 7// Initialize an HTML document from the file
 8using var document = new HTMLDocument(documentPath);
 9
10// Initialize PdfSaveOptions 
11var options = new PdfSaveOptions();
12
13// Convert HTML to PDF
14Converter.ConvertHTML(document, options, savePath);

Opciones de guardado – PdfSaveOptions

La funcionalidad de creación de PDF se puede mejorar con opciones de guardado según sus necesidades. Aspose.HTML permite convertir HTML a PDF usando opciones de guardado predeterminadas o personalizadas. El uso de PdfSaveOptions le permite personalizar el proceso de renderizado; puede especificar el tamaño de la página, márgenes, permisos de archivos, CSS, etc.

PropertyDescription
JpegQualitySpecifies the quality of JPEG compression for images. The default value is 95.
CssGets a CssOptions object which is used for configuration of CSS properties processing.
DocumentInfoThis property contains information about the output PDF document.
BackgroundColorThis property sets the color that will fill the background of every page. By default, this property is Transparent.
PageSetupThis property gets a page setup object and uses it for configuration output page-set.
HorizontalResolutionSets horizontal resolution for output images in pixels per inch. The default value is 300 dpi.
VerticalResolutionSets vertical resolution for output images in pixels per inch. The default value is 300 dpi.
EncryptionThis property gets or sets encryption details. If it is not set, then no encryption will be performed.

Para obtener más información sobre PdfSaveOptions, lea el artículo Convertidores de ajuste fino. Puede descargar los ejemplos completos y los archivos de datos desde GitHub.

Convierta HTML a PDF en C# usando PdfSaveOptions

Con Aspose.HTML, puede convertir archivos mediante programación con control total sobre una amplia gama de parámetros de conversión. Para convertir HTML a PDF con la especificación PdfSaveOptions, debe seguir algunos pasos:

  1. Cargue un archivo HTML usando uno de los constructores HTMLDocument() de la clase HTMLDocument.
  2. Cree un nuevo objeto PdfSaveOptions y especifique las propiedades requeridas. La clase PdfSaveOptions proporciona numerosas propiedades que le brindan control total sobre una amplia gama de parámetros y mejoran el proceso de conversión de HTML a formato PDF.
  3. Utilice el método ConvertHTML() de la clase Converter para guardar HTML como un archivo PDF. El método ConvertHTML() toma el document, las options, la ruta del archivo de salida savePath y realiza la operación de conversión.

El siguiente ejemplo muestra cómo utilizar PdfSaveOptions y crear un archivo PDF con opciones de guardado personalizadas:

 1// Prepare a path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "drawing.html");
 3
 4// Prepare a path to save the converted file
 5string savePath = Path.Combine(OutputDir, "drawing-options.pdf");
 6
 7// Initialize an HTML document from the file
 8using var document = new HTMLDocument(documentPath);
 9
10// Initialize PdfSaveOptions. Set up the page-size 600x300 pixels, margins, resolutions and change the background color to AliceBlue 
11var options = new PdfSaveOptions()
12{                
13    HorizontalResolution = 200,
14    VerticalResolution = 200,
15    BackgroundColor = System.Drawing.Color.AliceBlue,
16    JpegQuality = 100
17};
18options.PageSetup.AnyPage = new Page(new Aspose.Html.Drawing.Size(600, 300), new Margin(20, 10, 10, 10));           
19
20// Convert HTML to PDF
21Converter.ConvertHTML(document, options, savePath);

En el ejemplo anterior, usamos:

La conversión de HTML a PDF se puede personalizar de forma flexible para obtener el resultado deseado. En los siguientes artículos, encontrará respuestas a preguntas populares sobre la conversión de HTML a PDF:

Proveedores de flujo de salida – Output Stream Providers

Si es necesario guardar archivos en el almacenamiento remoto (por ejemplo, nube, base de datos, etc.), puede implementar la interfaz ICreateStreamProvider para tener control manual sobre el proceso de creación de archivos. Esta interfaz está diseñada como un objeto de devolución de llamada para crear una secuencia al comienzo del documento/página (según el formato de salida) y liberar la secuencia creada inicialmente después de renderizar el documento/página.

La biblioteca Aspose.HTML C# permite realizar la clase MemoryStreamProvider como una implementación personalizada de la interfaz ICreateStreamProvider. La clase MemoryStreamProvider proporciona objetos C# MemoryStream como flujos de salida para escribir datos, que se pueden almacenar en la memoria como un flujo:

 1class MemoryStreamProvider : Aspose.Html.IO.ICreateStreamProvider
 2{
 3    // List of MemoryStream objects created during the document rendering
 4    public List<MemoryStream> Streams { get; } = new List<MemoryStream>();
 5
 6    public Stream GetStream(string name, string extension)
 7    {
 8        // This method is called when only one output stream is required, for instance for XPS, PDF or TIFF formats
 9        MemoryStream result = new MemoryStream();
10        Streams.Add(result);
11        return result;
12    }
13
14    public Stream GetStream(string name, string extension, int page)
15    {
16        // This method is called when the creation of multiple output streams are required. For instance, during the rendering HTML to list of image files (JPG, PNG, etc.)
17        MemoryStream result = new MemoryStream();
18        Streams.Add(result);
19        return result;
20    }
21
22    public void ReleaseStream(Stream stream)
23    {
24        // Here you can release the stream filled with data and, for instance, flush it to the hard-drive
25    }
26
27    public void Dispose()
28    {
29        // Releasing resources
30        foreach (var stream in Streams)
31            stream.Dispose();
32    }
33}

Aspose.HTML for .NET proporciona varios tipos de formatos de salida para operaciones de renderizado. Algunos de estos formatos producen un único archivo de salida (por ejemplo, PDF, XPS), mientras que otros crean varios archivos (formatos de imagen JPG, PNG, etc.).

El siguiente código C# demuestra cómo utilizar la clase MemoryStreamProvider y la biblioteca Aspose.HTML for .NET para convertir HTML a PDF y guardar el resultado en un archivo.

 1// Create an instance of MemoryStreamProvider
 2using var streamProvider = new MemoryStreamProvider();
 3
 4// Initialize an HTML document
 5using var document = new HTMLDocument(@"<h1>Convert HTML to PDF File Format!</h1>", ".");
 6
 7// Convert HTML to PDF using the MemoryStreamProvider
 8Converter.ConvertHTML(document, new PdfSaveOptions(), streamProvider);
 9
10// Get access to the memory stream that contains the result data
11var memory = streamProvider.Streams.First();
12memory.Seek(0, SeekOrigin.Begin);
13
14// Flush the result data to the output file
15using (FileStream fs = File.Create(Path.Combine(OutputDir, "stream-provider.pdf")))
16{
17    memory.CopyTo(fs);
18}

Puede descargar los ejemplos completos y los archivos de datos desde GitHub.

Descargue nuestra biblioteca Aspose.HTML for .NET que le permite convertir con éxito, rápida y fácilmente sus documentos HTML, MHTML, EPUB, SVG y Markdown a los formatos más populares.

Aspose.HTML ofrece un Convertidor de HTML a PDF gratuito en línea que convierte HTML a PDF con alta calidad, fácil y rápido. ¡Simplemente cargue, convierta sus archivos y obtenga el resultado en unos segundos!

Texto “Convertidor de HTML a PDF”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.