Conversión de PDF a HTML

El PDF (Formato de documento portátil) es uno de los formatos de documentos más utilizados para compartir datos e información entre plataformas. Una de sus capacidades únicas incluye que la fidelidad de un documento permanece intacta cuando se visualiza en cualquier plataforma que utilice la aplicación según las especificaciones de Adobe. Además, HTML (HyperText Markup Language) también es un formato de archivo líder para el desarrollo de páginas web y la mayoría de los navegadores web admiten este formato. Sin embargo, PDF es ampliamente aceptado ya que se puede ver fácilmente en cualquier dispositivo sin perder el formato del documento. Por lo tanto, en este artículo, analizaremos los pasos para convertir el archivo HTML al formato PDF mediante la API de .NET.

API de C# para convertir HTML a PDF

Para realizar la operación de conversión, primero debemos instalar Aspose.PDF para .NET en el sistema. La API está disponible en la biblioteca NuGet. Ejecute el siguiente comando en Package Manager Console para instalarlo:

Install-Package Aspose.Pdf

Una vez que se completa la instalación, Aspose.PDF para .NET aparecerá en la carpeta Paquetes en el explorador de soluciones.

Convertir HTML a PDF en C#

A continuación se detallan los pasos para convertir HTML a PDF usando C#

  1. Cree una instancia de la clase License para eliminar cualquier limitación durante el proceso de generación de archivos PDF.
  2. Cree un objeto de la clase HtmlLoadOptions mientras pasa la URL base HTML de entrada como argumento a [HtmlLoadOptions(…)](https:/ /apireference.aspose.com/pdf/net/aspose.pdf/htmlloadoptions) constructor.
  3. Inicialice el objeto de la clase Documento y pase [HtmlLoadOptions](https://apireference.aspose.com/pdf/net/aspose. pdf/htmlloadoptions) como argumento para su constructor.
  4. Llame al método Save(…) del objeto Document y renderice la salida en formato PDF.
// crear un objeto para iniciar la licencia
Aspose.Pdf.License license = new Aspose.Pdf.License();

// proporcionar la ruta del archivo de licencia
license.SetLicense("/Downloads/Conholdate.Total.NET.lic");

// crear una instancia de la clase HtmlLoadOptions
Aspose.Pdf.HtmlLoadOptions htmlLoadOptions = new Aspose.Pdf.HtmlLoadOptions("User/Documents/");

// crear objeto de documento y proporcionar la ruta del archivo HTML de entrada
Aspose.Pdf.Document document = new Aspose.Pdf.Document("/Documents/input.html", htmlLoadOptions);

// guarde el HTML resultante en formato PDF
document.Save("/Documents/Converted.pdf");

Incrustar fuentes durante la conversión

La mayoría de las páginas HTML suelen utilizar fuentes (fuentes ig de carpetas locales, fuentes de Google, etc.) y, para conservar el diseño de las páginas, se incrustarán las mismas fuentes durante el proceso de representación. Entonces, para controlar la incrustación de fuentes en el documento resultante, necesitamos usar la propiedad IsEmbedFonts.

// Incrustar fuentes durante la conversión
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = true};

La unidad de medida en Aspose.PDF es Puntos. Y sabemos que A3 mide 297 × 420 milímetros o 11,69 × 16,54 pulgadas. Entonces, las dimensiones se redondean a 842 × 1190 puntos. En el siguiente fragmento de código, estamos ajustando el tamaño de página del documento resultante como A3 y la orientación de la página como Horizontal.

// Establezca el tamaño de la página como A3 y la orientación de la página como Horizontal
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
  PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};

Convertir página web a PDF

Además de la conversión de archivos HTML, es posible que también tengamos un requisito para convertir directamente una página web a formato PDF. Entonces, para cumplir con este requisito, primero buscaremos el contenido de la página web remota usando la instancia HttpClient, crearemos un objeto Stream y luego pasaremos la instancia Stream al objeto Document. La razón por la que necesitamos el contenido en Stream es que la instancia del Documento solo acepta archivos u objetos de Steam.

La siguiente sección explica los pasos sobre cómo convertir una página web a PDF usando C#

  1. Lea el contenido de la página usando un objeto HttpClient.
  2. Crea una instancia del objeto HtmlLoadOptions y establece la URL base.
  3. Inicialice un objeto Documento y pase el objeto de flujo y la instancia HtmlLoadOptions como argumentos.
  4. Llame al método Save(String) de la clase Document para generar la salida.
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
    const string url = "https://en.wikipedia.org/wiki/Aspose_API";
    
    // Establecer tamaño de página A3 y orientación Horizontal; 
    HtmlLoadOptions options = new HtmlLoadOptions(url)
    {
        // Establecer las dimensiones de la página
        PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
    };
    
    // Crear una instancia del objeto Documento
    Document pdfDocument= new Document(GetContentFromUrlAsStream(url), options);
    
    // Guarda la resultante
    pdfDocument.Save(_dataDir + "html_test.PDF");
}

private static Stream GetContentFromUrlAsStream(string url, ICredentials credentials = null)
{
    
    using (var handler = new HttpClientHandler { Credentials = credentials })
    using (var httpClient = new HttpClient(handler))
    {
        // obtener y devolver resultados en instancia de flujo
        return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
    }
}

Renderizar HTML completo en una sola página

Durante la conversión de HTML a PDF, la longitud del archivo resultante depende de la longitud del contenido de un documento HTML de entrada. Por lo tanto, si el HTML de entrada se compone de varias páginas, el archivo resultante también abarcará varias páginas. Sin embargo, podemos limitar la salida a una sola página PDF. Para cumplir con este requisito, se puede usar la propiedad IsRenderToSinglePage de la clase HtmlLoadOptions.

A continuación se muestra el fragmento de código para representar el contenido HTML completo en una sola página PDF usando C#.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Inicializar el objeto HtmlLoadOptions
HtmlLoadOptions options = new HtmlLoadOptions();

// Establezca el procesamiento en la propiedad de una sola página
options.IsRenderToSinglePage = true;

// Cargar contenido HTML de origen del documento
Document pdfDocument= new Document("/Documents/HTMLToPDF.html", options);

// Guarde el archivo PDF resultante
pdfDocument.Save("/Documents/MyRenderContentToSamePage.pdf");

Obtenga una licencia gratis

Puede solicitar una licencia temporal gratuita para probar la API sin limitaciones de evaluación.

Conclusión

En este artículo, hemos aprendido sobre el enfoque de convertir archivos HTML a formato PDF utilizando la API .NET. Si está más interesado en conocer otras características interesantes que ofrece Aspose.PDF para .NET, visite la página Características clave. Se puede encontrar un conjunto completo de ejemplos en el repositorio de GitHub.

Consejo rapido

También hemos desarrollado aplicaciones en línea gratuitas para verificar rápidamente las funciones que ofrecen nuestras API. Por lo tanto, puede consultar la Aplicación de conversión Aspose.PDF para transformar un archivo HTML a formato PDF. Además, también puede usar varios otros formatos de archivo y cumplir con sus requisitos de conversión.