首页 > 解决方案 > 需要帮助解决在将 HTML 转换为 PDF 时 Select.pdf 仅呈现最后一页上一半内容的错误

问题描述

我正在尝试使用 Razor ASP.NET 页面和 Select.pdf 将 HTML 呈现为 PDF。

起初,一切似乎都很好,并且报告生成正确。但是后来我开始在报告的末尾添加图像,由于某种原因,这导致最后一页渲染不正确,导致只有一半的内容被渲染。不是页面的一半,而是最后一页内容的一半。因此,如果我在最后一页上有一个图像,则呈现一半图像。如果我有两个并排的图像,它将渲染到两个图像中最高的图像的一半。如果我在图像之后添加文本,它会渲染更多,直到它是图像高度的一半 + 文本。

有没有人遇到过这个错误?如果是这样,我怎样才能使 PDF 生成器正常工作?

编辑:我添加图像的方式是通过 for 循环添加它们,因为我需要动态添加它们。因此,我遍历一个 URL 列表并从那里提取图像并将它们链接起来,每行两个图像,每页最多四个图像。

如果我直接查看 HTML,浏览器会正确呈现它。但是当试图通过 Select.PDF 将其渲染成 PDF 时,会导致前面提到的“只渲染一半内容”的错误。尽管我通过将图像文本与图像本身分开,成功地使其渲染低于该值(下降到大约 10%;图像的一小部分)。

我使用的for循环如下:

    @{counter = 0;}
    @foreach (var image in Model.ReportImages)
    {

        @if (counter == 4)
        {
            <p style="page-break-before: always; clear: both;"></p>
            counter = 0;
        }

        <p style="float: left; width:45%; height:45%; text-align: center; margin-right:2%; margin-bottom: 2%; page-break-inside: avoid;"><img src="@Url.Content(image.ImageURL)" alt="IMAGES" style="width: 100%; page-break-inside: avoid;"/>@image.QuestionNumber</p>

        counter++;
    }

标签: html.netpdfrazor

解决方案


推荐阅读