使用RenderingOptions覆盖CSS @page规则
This article was translated from English: Does it need improvement?
Translated
View the article in English
当HTML文档包含CSS @page 规则时,其值(页面大小、方向和边距)优先于在RenderingOptions上设置的相应属性。 在渲染器上设置@page值,则不会产生效果。
IronPDF通过Chrome引擎渲染,遵循标准CSS层叠规则。 @page规则是一个文档级CSS声明,浏览器在渲染过程中评估它,覆盖任何程序化的渲染提示。
解决方案
选项1:从HTML删除@page规则
注释掉或删除@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
在规则缺失的情况下,RenderingOptions属性完全生效。
选项2:程序化中和@page规则
如果您不能修改HTML模板,在渲染前在代码中中和该规则:
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
准备开始了吗?
Nuget 下载 20,088,359 | 版本: 2026.7 刚刚发布

