RenderingOptions로 CSS @page 규칙 재정의
HTML 문서가 CSS @page 규칙을 포함하고 있을 때, 그 값들(페이지 크기, 방향, 여백)이 RenderingOptions에 설정된 해당 속성들보다 우선시됩니다. HTML이 충돌하는 @page 값을 정의하고 있을 때 렌더러에 MarginTop, PaperOrientation, PaperSize 또는 유사한 속성을 설정하는 것은 효과가 없습니다.
IronPDF는 표준 CSS 계단식 규칙을 따르는 Chrome 엔진을 통해 렌더링합니다. @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")

