Nadpisz zasady CSS @page za pomocą RenderingOptions
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>
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")

