RenderingOptionsでCSS @pageルールをオーバーライドする
HTMLドキュメントにCSS @page ルールが含まれる場合、その値(ページサイズ、向き、余白)は、RenderingOptions に設定された対応するプロパティよりも優先されます。 HTMLが矛盾する@page 値を定義している場合、レンダラー上でPaperSize、その他類似プロパティを設定しても効果はありません。
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>
ルールがない場合、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")

