Conversia HTML în PDF este comună – de la facturi la rapoarte – dar setările implicite rareori se potrivesc cu nevoile dvs. de brand și de imprimare. Aspose.HTML for .NET,Puteți controla cu precizie Dimensiunea paginii, margini, Orientare,şi Reguli CSS pentru media Pentru a produce PDF-uri profesionale, acest ghid arată o setare curată și repetabilă și include un eșantion complet C#.

Key

  • folosesc Converter.ConvertHTML cu PdfSaveOptions pentru o conversie robustă HTML → PDF.
  • Configurare PageSetup.AnyPage 2 setări Dimensiunea şi margini (A4/A3/custom); alegeţi portret sau peisaj după dimensiune.
  • Aplicați options.Css.MediaType (Prinț vs ecranuluiPentru a respecta CSS-ul corect.
  • Generează mai multe variante (de exemplu, portret A4 + peisaj A3) din același HTML pentru diferite audiențe.

Ghid pas cu pas

1) Set up the project

Instalaţi pachetul NuGet şi creaţi un proiect consol (etapele Cum să alergați).

2) Load HTML content

Încărcați un fișier existent sau creați un HTMLDocument de la o stringă. furnizaţi o Baza URI pentru a rezolva CSS relativ, imagini și fonturi.

3) Configure page geometry and media

folosesc PdfSaveOptions.PageSetup.AnyPage Definiţie mărimea şi Margină,şi set Css.MediaType Două ţinte @media print Reguli atunci când este necesar.

4) Convert to PDF

Apelul Converter.ConvertHTML(document, options, path) Pentru a scrie fișierul PDF.

(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 HtmlToPdfCustomization
{
    internal static class Program
    {
        // How to run:
        // 1) dotnet new console -n HtmlToPdfCustomization
        // 2) cd HtmlToPdfCustomization
        // 3) dotnet add package Aspose.HTML
        // 4) Replace Program.cs with this file's contents
        // 5) dotnet run -- "path-to-input.html"   (optional)
        private static void Main(string[] args)
        {
            string outDir = Path.Combine(Directory.GetCurrentDirectory(), "out");
            Directory.CreateDirectory(outDir);

            // Load HTML from file if provided; otherwise, use 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>HTML to PDF (Aspose.HTML)</title>" +
                              "<style>body{font-family:Arial,Helvetica,sans-serif;margin:24px}" +
                              ".lead{color:#444} table{width:100%;border-collapse:collapse}" +
                              "th,td{border:1px solid #ddd;padding:6px 8px;text-align:left}" +
                              "@media print{body{font-size:12pt}.lead{color:#000}}</style>" +
                              "</head><body>" +
                              "<h1>Order Summary</h1>" +
                              "<p class=\\\"lead\\\">This PDF respects print CSS and custom page settings.</p>" +
                              "<table><tr><th>Item</th><th>Qty</th><th>Price</th></tr>" +
                              "<tr><td>Widget A</td><td>3</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)
            {
                var mm = Length.FromMillimeters;

                // Variant 1: A4 portrait with 12.7 mm margins, using print CSS
                var a4 = new PdfSaveOptions();
                a4.Css.MediaType = MediaType.Print;
                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, "order-a4.pdf");
                Converter.ConvertHTML(document, a4, a4Path);
                Console.WriteLine($"Saved: {a4Path}");

                // Variant 2: A3 landscape 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, "order-a3-landscape.pdf");
                Converter.ConvertHTML(document, a3Landscape, a3Path);
                Console.WriteLine($"Saved: {a3Path}");

                // Variant 3: Custom 6 x 9 inches trim with narrow margins (print CSS)
                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, "order-6x9.pdf");
                Converter.ConvertHTML(document, custom, customPath);
                Console.WriteLine($"Saved: {customPath}");
            }
        }
    }
}

Ce face acest cod

  • încărcături HTML dintr-un fișier sau dintr-un șir de memorie cu un URI de bază.
  • ConfigurăriPdfSaveOptions pentru portret A4, peisaj A3 și o dimensiune personalizată de 6×9 inch.
  • AplicațiMediaType.Print sau MediaType.Screen Pentru a vă îndeplini regulile CSS.
  • Exporturi Trei fișiere PDF personalizate într-un out/ Folderul ăsta.

& Sfaturi de depanare

  • Stiluri greșite:• TOGGLE options.Css.MediaType între Print şi Screen Pentru a se potrivi cu stilul tău.
  • Conținutul tăiat:Creșteți dimensiunea paginii sau marginea; formate mai largi ajută la tabele mari.
  • Fără surse: asigurați-vă că fonturile sunt disponibile pentru render sau încorporate prin @font-face.
  • Performanţă:simplifică DOM/CSS greu; preferă activele statice în cache.

FAQ

Q1.Cum pot seta dimensiunea paginii și marginea? folosesc PdfSaveOptions.PageSetup.AnyPage = new Page(Size, Margin) cu unităţi din Length (în milimetri sau centimetri).

Q2. pot să forțez tipărirea stilurilor? Da, set options.Css.MediaType = MediaType.Print aşa @media print Se aplică regulile.

Q3.Cum pot să fac pagini de peisaj? Oferă un peisaj Size (de exemplu, A3 420 × 297 mm) atunci când creaţi Page.

Q4.Pot exporta mai multe variante dintr-un singur HTML? Creează separat PdfSaveOptions Obiectele (Diferențiate Css.MediaType şi de mărime) şi de chemare Converter.ConvertHTML Pentru fiecare .

Q5.Am nevoie de un motor de browser instalat? HTML face server-side fără browsere externe.

Conclusion

folosind PdfSaveOptions Cu ajutorul CSS-ului conștient de media, puteți crea fișiere PDF lustruite adaptate pentru imprimare, arhivare sau executive. Începeți cu un portret A4 pentru documente generale, adăugați peisaj A3 pentru layout-uri largi și păstrați o dimensiune personalizată pentru broșuri sau rapoarte.

More in this category