Substituir Regras CSS @page com RenderingOptions

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

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>
HTML

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")
$vbLabelText   $csharpLabel
Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 20,088,359 | Versão: 2026.7 recém-lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.