使用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 剛剛發布

