Nadpisz zasady CSS @page za pomocą RenderingOptions

This article was translated from English: Does it need improvement?
Translated
View the article in English

Gdy dokument HTML zawiera regułę CSS @page, jej wartości (rozmiar strony, orientacja i marginesy) mają pierwszeństwo przed odpowiadającymi im właściwościami ustawionymi na RenderingOptions. Ustawienie właściwości MarginTop, PaperOrientation, PaperSize lub podobnych na rendererze nie ma efektu, gdy HTML definiuje konfliktowe wartości @page.

IronPDF renderuje za pomocą silnika Chrome, który stosuje standardowe zasady kaskadowe CSS. Reguła @page to deklaracja CSS na poziomie dokumentu, którą przeglądarka ocenia podczas renderowania, zastępując wszelkie programowe wskazówki dotyczące renderowania.

Rozwiązanie

Opcja 1: Usuń regułę @page z HTML-a

Zakomentuj lub usuń blok @page:

<style>
/*
@page {
    size: A3;
    margin-top: 2in;
    margin-bottom: 2in;
    margin-left: 2in;
    margin-right: 2in;
}
*/
</style>
<style>
/*
@page {
    size: A3;
    margin-top: 2in;
    margin-bottom: 2in;
    margin-left: 2in;
    margin-right: 2in;
}
*/
</style>
HTML

Bez obecności reguły, właściwości RenderingOptions mają pełny efekt.

Opcja 2: Programowo zneutralizuj regułę @page

Jeśli nie możesz zmodyfikować szablonu HTML, zneutralizuj regułę w kodzie przed renderowaniem:

string sanitizedHtml = html.Replace("@page", "/* @page */");

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
PdfDocument pdf = renderer.RenderHtmlAsPdf(sanitizedHtml);
pdf.SaveAs("output.pdf");
string sanitizedHtml = html.Replace("@page", "/* @page */");

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
PdfDocument pdf = renderer.RenderHtmlAsPdf(sanitizedHtml);
pdf.SaveAs("output.pdf");
Imports IronPdf

Dim sanitizedHtml As String = html.Replace("@page", "/* @page */")

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 10
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(sanitizedHtml)
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel
Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 20,088,359 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.