Sobrescribir reglas @page de CSS con RenderingOptions

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

Cuando un documento HTML contiene una regla CSS @page, sus valores (tamaño de página, orientación y márgenes) tienen prioridad sobre las propiedades correspondientes establecidas en RenderingOptions. Establecer MarginTop, PaperOrientation, PaperSize u otras propiedades similares en el renderizador no tiene efecto cuando el HTML define valores @page conflictivos.

IronPDF renderiza a través del motor de Chrome, que sigue las reglas estándar de cascada CSS. La regla @page es una declaración CSS a nivel de documento que el navegador evalúa durante el renderizado, anulando cualquier sugerencia de renderizado programático.

Solución

Opción 1: Eliminar la regla @page del HTML

Comente o elimine el bloque @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

Con la ausencia de la regla, las propiedades RenderingOptions tienen pleno efecto.

Opción 2: Neutralizar programáticamente la regla @page

Si no puedes modificar la plantilla HTML, neutraliza la regla en el código antes de renderizar:

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
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 20,088,359 | Versión: 2026.7 recién publicada
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPdf
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.