Substituir Regras CSS @page com RenderingOptions
Quando um documento HTML contém uma regra CSS @page, seus valores (tamanho da página, orientação e margens) têm precedência sobre as propriedades correspondentes definidas em RenderingOptions. Definir propriedades como MarginTop, PaperOrientation, PaperSize ou semelhantes no renderizador não tem efeito quando o HTML define valores @page conflitantes.
IronPDF renderiza via o mecanismo Chrome, que segue as regras padrão de cascata CSS. A regra @page é uma declaração CSS a nível de documento que o navegador avalia durante a renderização, substituindo quaisquer dicas de renderização programáticas.
Solução
Opção 1: Remover a regra @page do HTML
Comente ou exclua o bloco @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>
Com a ausência da regra, as propriedades RenderingOptions têm efeito total.
Opção 2: Neutralize a regra @page programaticamente
Se você não puder modificar o modelo HTML, neutralize a regra no código antes da renderização:
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")

