我正在使用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.
对我来说,解决方法是删除标签之间的所有空白。
$html = preg_replace('/>\s+</', "><", $html);
Run Code Online (Sandbox Code Playgroud)
发生这种情况是由于您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)
编码愉快!