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:
- 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. - Cree un nuevo objeto PdfSaveOptions.
- 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:
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.
Property | Description |
---|---|
JpegQuality | Specifies the quality of JPEG compression for images. The default value is 95. |
Css | Gets a CssOptions object which is used for configuration of CSS properties processing. |
DocumentInfo | This property contains information about the output PDF document. |
BackgroundColor | This property sets the color that will fill the background of every page. By default, this property is Transparent. |
PageSetup | This property gets a page setup object and uses it for configuration output page-set. |
HorizontalResolution | Sets horizontal resolution for output images in pixels per inch. The default value is 300 dpi. |
VerticalResolution | Sets vertical resolution for output images in pixels per inch. The default value is 300 dpi. |
Encryption | This 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:
- Cargue un archivo HTML usando uno de los constructores HTMLDocument() de la clase HTMLDocument.
- 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.
- Utilice el método
ConvertHTML() de la clase Converter para guardar HTML como un archivo PDF. El método ConvertHTML() toma el
document
, lasoptions
, la ruta del archivo de salidasavePath
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:
- Propiedad
JpegQuality
que le permite especificar la calidad de la compresión JPEG para imágenes; - Propiedad
BackgroundColor
que establece el color que rellenará el fondo. ElBackgroundColor
predeterminado es Transparent; - Propiedades
HorizontalResolution
yVerticalResolution
que establecen la resolución horizontal/vertical para las imágenes de salida en píxeles por pulgada. De forma predeterminada, estas propiedades son 300 ppp; - Propiedad
PageSetup
que especifica el page size y los margins.
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!