打印分页符Javascript



我有一张工资单,它是通过PHP使用Bootstrap生成的。我需要每6张工资单换一页。

这是我生成工资单的代码。

foreach($results as $result){
foreach($result as $fetchall){
if($counter % 6 == 0){
$pgbreak = 'pgbreak';
}
else{
$pgbreak = '';
}
$payslip .= '<div class="col-sm-4 '. $pgbreak .'">';
$counter++;
$payslip .= '<div class="payslip-title"></div>';

$payslip .= '</div>';
}
}

这是我放置分页符的CSS代码:

@media print { div.pgbreak { page-break-after: always;} }

这是样本输出

点击此处

对于分页,您可以查看:

  • page-break-before
  • page-break-inside
  • page-break-after

当我想将数据导出到.pdf中进行打印时,我通常使用html2pdf
模板化并不容易,并且不会解释所有css属性,但完成后您可以确定结果。


编辑:

您需要为每4项添加一个page-break-after: always;

$payslip .= '<div class="col-sm-6">';

成为:

$payslip .= '<div class="col-sm-6 payslip-item">';

并添加以下CSS:

.payslip-item:nth-child(4n) {
page-break-after: always;
}

附言:我还没有测试这个


编辑2:

我忘了,page-break-insidebreak-inside取代了
此外,在几次测试后,所选元素需要有display: block;(在Chrome的display: inline-block上没有单词(。。。


下面是一个工作示例:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" />
<style>
.page {
page-break-inside: avoid;
page-break-after: always;
}
</style>
</head>
<body>
<div class="container-fluid">
<?php
$closed = true;
for ($i = 0; $i < 40; $i++) {
if ($i % 6 == 0) {
echo '<div class="row page">';
$closed = false;
}
?>
<div class="col-sm-4 item">
<h2>Lorem ipsum</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
<?php
if ($i % 6 == 5) {
echo '</div>';
$closed = true;
}
}
if (!$closed) {
echo '</div>';
}
?>
</div>
</body>
</html>

最新更新