La traducción de HTML a PDF es común, pero las configuraciones predeterminadas no siempre son ideales para la impresión, archivo o resumen ejecutivo. Aspose.HTML for .NET, puede controlar con precisión el tamaño de la página, los márgenes, la orientación y las reglas de los medios CSS para producir PDFs consistentes y profesionales.Esta guía muestra una configuración limpia y una muestra completa de C# que puede caer en su proyecto.

Para llevar

  • Uso Converter.ConvertHTML con PdfSaveOptions para un rendimiento HTML → PDF fiable.
  • Configuración PageSetup.AnyPage 2 Sitio Tamaño de página y Margen (A4, A3 o tamaños personalizados).
  • Cambio Css.MediaType Entre pantalla y Príncipe Respetar las reglas de CSS correctas.
  • Cree múltiples salidas: A4 para impresión, A3 para diseños amplios y tamaños de recorte personalizados para folletos.

Guía paso a paso

1) Load an HTML document

cargar un archivo cuando esté disponible o crear un HTMLDocument de una cadena con un URI base para resolver activos relativos.

2) Configure page geometry and CSS media

Define el tamaño y los márgenes de la página a través de PageSetup.AnyPage.Seleccionando MediaType.Print Para aplicar @media print Estilos o MediaType.Screen Para hacer estilos de pantalla.

3) Render to PDF

llamado Converter.ConvertHTML(document, options, outputPath) Para crear su PDF.

Ejemplo completo y compilable (C#)

using System;
using System.IO;
using Aspose.Html;
using Aspose.Html.Converters;
using Aspose.Html.Saving;            // PdfSaveOptions
using Aspose.Html.Rendering;         // MediaType
using Aspose.Html.Drawing;           // Length, Size, Margin, Page

namespace AsposeHtmlAdvancedPdfDemo
{
    internal static class Program
    {
        // How to run:
        // 1) dotnet new console -n AsposeHtmlAdvancedPdfDemo
        // 2) cd AsposeHtmlAdvancedPdfDemo
        // 3) dotnet add package Aspose.HTML
        // 4) Replace Program.cs with this file's contents
        // 5) dotnet run -- "path-to-input.html"   (argument optional)
        private static void Main(string[] args)
        {
            // Ensure output folder exists
            string outDir = Path.Combine(Directory.GetCurrentDirectory(), "out");
            Directory.CreateDirectory(outDir);

            // Prepare an HTMLDocument: from file path (if provided) or from inline HTML
            HTMLDocument document;
            if (args.Length > 0 && File.Exists(args[0]))
            {
                document = new HTMLDocument(args[0]);
            }
            else
            {
                string html = "<!DOCTYPE html>" +
                              "<html><head><meta charset=\\\"utf-8\\\">" +
                              "<title>Advanced PDF Output</title>" +
                              "<style>body{font-family:Arial,Helvetica,sans-serif;margin:24px}" +
                              "h1{margin:0 0 12px} .lead{color:#444} .wide{width:100%;border-collapse:collapse}" +
                              ".wide th,.wide td{border:1px solid #ddd;padding:6px 8px;text-align:left}" +
                              "@media print { body{font-size:12pt} .lead{color:#000} }</style>" +
                              "</head><body>" +
                              "<h1>Aspose.HTML PDF Output</h1>" +
                              "<p class=\\\"lead\\\">This PDF is rendered with custom page size, margins, and media rules.</p>" +
                              "<table class=\\\"wide\\\"><tr><th>Item</th><th>Qty</th><th>Price</th></tr>" +
                              "<tr><td>Widget A</td><td>4</td><td>$12.00</td></tr>" +
                              "<tr><td>Widget B</td><td>2</td><td>$9.50</td></tr></table>" +
                              "</body></html>";
                document = new HTMLDocument(html, ".");
            }

            using (document)
            {
                // A4 portrait with 12.7 mm margins, using print CSS
                var a4 = new PdfSaveOptions();
                a4.Css.MediaType = MediaType.Print;
                var mm = Length.FromMillimeters;
                a4.PageSetup.AnyPage = new Page(
                    new Size(mm(210), mm(297)),               // A4
                    new Margin(mm(12.7), mm(12.7), mm(12.7), mm(12.7))
                );
                string a4Path = Path.Combine(outDir, "document-a4.pdf");
                Converter.ConvertHTML(document, a4, a4Path);
                Console.WriteLine($"Saved: {a4Path}")
;
                // A3 landscape (420 x 297 mm) with tighter margins, using screen CSS
                var a3Landscape = new PdfSaveOptions();
                a3Landscape.Css.MediaType = MediaType.Screen;
                a3Landscape.PageSetup.AnyPage = new Page(
                    new Size(mm(420), mm(297)),               // A3 landscape
                    new Margin(mm(10), mm(10), mm(10), mm(10))
                );
                string a3Path = Path.Combine(outDir, "document-a3-landscape.pdf");
                Converter.ConvertHTML(document, a3Landscape, a3Path);
                Console.WriteLine($"Saved: {a3Path}");

                // Custom trim size 6 x 9 inches with narrow margins
                var custom = new PdfSaveOptions();
                custom.Css.MediaType = MediaType.Print;
                custom.PageSetup.AnyPage = new Page(
                    new Size(Length.FromInches(6), Length.FromInches(9)),
                    new Margin(mm(5), mm(5), mm(5), mm(5))
                );
                string customPath = Path.Combine(outDir, "document-6x9.pdf");
                Converter.ConvertHTML(document, custom, customPath);
                Console.WriteLine($"Saved: {customPath}");
            }
        }
    }
}

Cómo correr

  1. Crear una aplicación de consola:
dotnet new console -n AsposeHtmlAdvancedPdfDemo
cd AsposeHtmlAdvancedPdfDemo
  1. Añadir el paquete:
dotnet add package Aspose.HTML
  1. sustitución Program.cs Con la Ejemplo completo por encima.
  2. Ejecutar con un archivo HTML (opcional):
dotnet run -- ../path/to/sample.html

Lo que hace este código

  • cargas un archivo HTML (o utiliza HTML en línea para un inicio rápido).
  • Configuración - ElPdfSaveOptions Para retratos A4, paisajes A3 y un tamaño de corte personalizado de 6×9 pulgadas.
  • Aplicaciones - ElMediaType.Print o MediaType.Screen Para cumplir con sus reglas de CSS.
  • Exportaciones Tres PDFs personalizados para una out/ El Folio.

Problemas y tips

  • Reglas de CSS incorrectas:• TOGGLE options.Css.MediaType Entre Print y Screen Para combinar tu estilo.
  • Contenido cortado o crampado: aumentar los márgenes o el tamaño de la página; considere formatos más grandes para tablas amplias.
  • Fuentes desaparecidas: asegúrese de que las fuentes estén disponibles para el render o embedded a través de @font-face En tu HTML.
  • El desempeño:Simplificar DOM/CSS pesado cuando sea posible; Cache de activos estáticos.

FAQ

Q1.¿Cómo puedo establecer el tamaño de la página y los márgenes para PDF? Uso PdfSaveOptions.PageSetup.AnyPage = new Page(Size, Margin) Con unidades de Length (Miles o milímetros de longitud).

Q2. ¿Puedo forzar los estilos de impresión durante el renderizado? Sí, el set options.Css.MediaType = MediaType.Print así @media print Las reglas se aplican.

Q3. ¿Cómo puedo hacer páginas de paisajes? Especifica un paisaje Size (por ejemplo, A3 420 × 297 mm) al crear el Page.

¿Cómo puedo exportar varias variantes (impresión vs pantalla)? Creación separada PdfSaveOptions Entidades con diferentes Css.MediaType y la página de configuración, luego llamar Converter.ConvertHTML Para cada uno.

Q5 ¿Necesito un motor de navegador en funcionamiento? No. Aspose.HTML hace que el servidor sea sin navegadores externos.

Conclusión

con PdfSaveOptions Con CSS y conocimientos de medios, puede producir PDFs que se adapten a las necesidades de impresión, archivo o ejecutiva. Comience con el retrato A4 para uso general, añada un paisaje A3 para diseños amplios y mantenga un tamaño de corte personalizado para folletos o informes. Pruebe con documentos representativos para bloquear los estándares que coincidan con su marca y las partes interesadas.

More in this category