Outrepasser les règles CSS @page avec RenderingOptions

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

Lorsqu'un document HTML contient une règle CSS @page, ses valeurs (taille de page, orientation et marges) priment sur les propriétés correspondantes définies sur RenderingOptions. Définir des propriétés comme MarginTop, PaperOrientation, PaperSize, ou similaires sur le moteur de rendu n'a aucun effet lorsque le HTML définit des valeurs @page conflictuelles.

IronPDF génère via le moteur Chrome, qui suit les règles de cascade CSS standard. La règle @page est une déclaration CSS au niveau du document que le navigateur évalue lors du rendu, remplaçant ainsi tout indice de rendu programmatique.

Solution

Option 1 : Supprimez la règle @page de l'HTML

Commentez ou supprimez le bloc @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

En l'absence de la règle, les propriétés RenderingOptions prennent pleinement effet.

Option 2 : Neutraliser programmatiquement la règle @page

Si vous ne pouvez pas modifier le modèle HTML, neutralisez la règle dans le code avant le rendu :

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
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer ?
Nuget Téléchargements 20,088,359 | Version : 2026.7 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronPdf
exécuter un échantillon Regardez votre code HTML se transformer en PDF.