CSS @page Kurallarını RenderingOptions ile Geçersiz Kılın
Bir HTML belgesi bir CSS @page kuralı içerdiğinde, değerleri (sayfa boyutu, yönlendirme ve kenar boşlukları) RenderingOptions üzerinde ayarlanmış karşılık gelen özelliklere öncelik tanır. HTML çelişen @page değerlerini tanımladığında, işleyicide MarginTop, PaperOrientation, PaperSize veya benzer özellikleri ayarlamak etkisizdir.
IronPDF, standart CSS kademeli kurallarını takip eden Chrome motoru ile işler. @page kuralı, tarayıcının render sırasında değerlendirdiği, programatik render ipuçlarının yerine geçen bir belge düzeyinde CSS bildirimidir.
Çözüm
Seçenek 1: HTML'den @page kuralını kaldırın
@page bloğunu yorum satırı yapın veya silin:
<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>
Kural yokken, RenderingOptions özellikleri tam etkisini gösterir.
Seçenek 2: @page kuralını programatik olarak etkisiz hale getirin
HTML şablonunu değiştiremiyorsanız, render işleminden önce kodda kuralı etkisiz hale getirin:
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")

