CSS @page Regeln mit RenderingOptions überschreiben

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

Wenn ein HTML-Dokument eine CSS @page Regel enthält, haben dessen Werte (Seitengröße, Ausrichtung und Ränder) Vorrang vor den entsprechenden Eigenschaften, die auf RenderingOptions festgelegt sind. Das Setzen von MarginTop, PaperOrientation, PaperSize oder ähnlichen Eigenschaften im Renderer hat keine Wirkung, wenn das HTML widersprüchliche @page Werte definiert.

IronPDF rendert über die Chrome-Engine, die den standardmäßigen CSS-Kaskadenregeln folgt. Die @page Regel ist eine CSS-Deklaration auf Dokumentebene, die vom Browser während des Renderns ausgewertet wird, und überschreibt alle programmatischen Rendering-Hinweise.

Lösung

Option 1: Die @page Regel aus dem HTML entfernen

Kommentieren oder löschen Sie den @page Block:

<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

Ohne die Regel haben RenderingOptions Eigenschaften volle Wirkung.

Option 2: Die @page Regel programmatisch neutralisieren

Wenn Sie das HTML-Template nicht ändern können, neutralisieren Sie die Regel im Code vor dem Rendern:

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
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 20,088,359 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPdf
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.