dompdf在文档末尾插入空白页

ato*_*nyc 4 php dompdf

我正在使用dompdf 0.6.0生成一个pdf文档,并且有一个奇怪的问题,即在最后创建一个空白页面.我的(简体)html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>PDF</title>
<style type="text/css">
@page{ margin: 0;}

.page{
    width: 612px; 
    height: 792px; 
    overflow: hidden; 
    font-family: Arial, Helvetica; 
    position: relative; 
    color: #545554;
    page-break-after: always;
}
</style>
</head>
<body>
<div class="page" style="background-image: url(page1.jpg);">
...
</div>

<div class="page" style="background-image: url(page2.jpg);"></div>

<div class="page" style="background-image: url(page3.jpg); color: white;">
...
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

前三页看起来很神奇,但最后有一个空白页面.我读过dompdf对于嵌套和合规等方面很挑剔,但html非常干净并且检查出来.

ato*_*nyc 24

结果是结束</body>,</html>标签导致了额外的页面.我删除了它们,结果如预期.

我想它是dompdf的一个问题,但我花了很长时间试图解决这个问题,并认为这可能对其他人有所帮助.

更新:

正如乔在评论中提到的那样,将</body></html>标签移动到与结束</div>工作相同的行,并保持有效的html.

  • 我认为问题不是由关闭`</ body>`和`</ html>`标签引起的,而是由关闭`</ div>`标签之后的换行引起的.将`</ body>`和`</ html>`放在与最后一个`</ div>`相同的行上也可以. (7认同)

Fil*_*cik 5

对我来说,解决方法是删除标签之间的所有空白。

 $html = preg_replace('/>\s+</', "><", $html);
Run Code Online (Sandbox Code Playgroud)


Mic*_*hel 5

发生这种情况是由于您page-break-after: always;page课程编写的CSS 。上面的样式还将在您的最后一页之后进行分页,并且dompdf在末尾创建一个空白页。

另一种解决方案是为您的最后一页写一个单独的CSS样式,不包括 page-break-after: always;

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>PDF</title>
<style type="text/css">
@page{ margin: 0;}

.page{
    width: 612px; 
    height: 792px; 
    overflow: hidden; 
    font-family: Arial, Helvetica; 
    position: relative; 
    color: #545554;
    page-break-after: always;
}
.last-page{
   width: 612px; 
   height: 792px; 
   overflow: hidden; 
   font-family: Arial, Helvetica; 
   position: relative; 
   color: #545554;
 }

</style>
</head>
<body>
<div class="page" style="background-image: url(page1.jpg);">
...
</div>

<div class="page" style="background-image: url(page2.jpg);"></div>

<div class="last-page" style="background-image: url(page3.jpg); color: white;">
...
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

编码愉快!