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.ConvertHTMLcuPdfSaveOptionspentru o conversie robustă HTML → PDF. - Configurare
PageSetup.AnyPage2 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ări să
PdfSaveOptionspentru portret A4, peisaj A3 și o dimensiune personalizată de 6×9 inch. - Aplicați să
MediaType.PrintsauMediaType.ScreenPentru 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întrePrintşiScreenPentru 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
- Conversia HTML la imagini: un ghid cuprinzător cu exemple
- Convertați HTML în imagine cu Aspose.HTML pentru .NET: Un ghid pas cu pas
- Convertați HTML în imagini de înaltă calitate cu Aspose.HTML pentru .NET
- Optimizarea documentelor HTML mari: viteză și sustenabilitate
- Problemele de rezolvare a conversiei HTML: calitatea imaginii, formatarea și performanța