IText7 html2pdf 固定页脚使用 CSS

IText7 html2pdf fixed footer using CSS

我目前正在尝试使用 itext7 和 itext7.pdfhtml 将 HTML 转换为 PDF,但有一个小问题。

我有一个固定的页脚 (.footer),当用浏览器打开时效果很好,但当使用下面的代码转换时,div 没有固定在页面底部。 div 紧跟在它前面的其他 div 内容之后。

C#.net 核心代码

string fullBody = System.IO.File.ReadAllText("index.html"); 
var stream = new MemoryStream();
var writer = new iText.Kernel.Pdf.PdfWriter(stream);
writer.SetCloseStream(false); 
iText.Html2pdf.HtmlConverter.ConvertToPdf(fullBody , writer);
writer.Close();
stream.Seek(0, SeekOrigin.Begin);

HTML

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="styles.css"> 
</head>
<body> 
    <div class="header">
        <img src="header1.bmp" width="100%" />
        <img src="header2.bmp" width="100%"/>
    </div>
    ... 
    <div class="footer">
        Fixed footer
    </div>
</body>
</html>

CSS

.footer {
    position: fixed;
    left: 0;
    bottom: 0;
    width: 100%;  
    text-align: center;
}

已经尝试了其他几个例子,但它仍然不会停留在底部。

即使这个类似的问题 也不起作用

如有任何帮助,我们将不胜感激。

PDF格式

在浏览器中(打印视图)

只是一个小提示 - 此 pdf 只有 1 页,因此可以考虑硬编码解决方案。

页脚属于页边距区域。 @page 媒体是配置它的正确方法。 CSS running 元素功能可用于将元素放入所需位置并将其从布局的其余部分排除。将 HTML 转换为基于页面的表示的主要工具都支持它。

这是一个示例 HTML:

<!DOCTYPE html>
<html>
    <head>
        <style>
            #footer {
                position: running(footer);
            }

            @page {
                @bottom-center {
                    content: element(footer);
                }
            }
        </style>
    </head>

    <body>

        <p>Hello world</p>

        <div id="footer">I am a footer</div>

    </body>
</html>

结果如下所示: