CSS @page Regeln mit RenderingOptions überschreiben
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>
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")

