使用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
Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備開始了嗎?
Nuget 下載 20,088,359 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想快速獲得證明嗎? PM > Install-Package IronPdf
執行範例 看您的HTML變成PDF。