javascript - 打印分页符 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
当我想将数据导出到 a.pdf
中进行打印时,我通常使用html2pdf。
模板并不容易,并且所有css
属性都不会被解释,但是当你完成后你可以确定结果。
编辑 :
您需要添加page-break-after: always;
每 4 个项目。
$payslip .= '<div class="col-sm-6">';
变得 :
$payslip .= '<div class="col-sm-6 payslip-item">';
并添加以下 CSS :
.payslip-item:nth-child(4n) {
page-break-after: always;
}
PS:我没有测试过这个
编辑 2:
呵呵,忘记了,page-break-inside
换成break-inside
。
此外,稍后进行几次测试,选定的元素需要具有display: block;
(不display: inline-block
使用 Chrome)...
这是一个工作示例:
<!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>
推荐阅读
- excel - 多重搜索发现[VBA]
- flutter - 提供者侦听器确实更新了包装器小部件
- github - 如何对 Github Apps 安装时间进行排序
- apache-flink - 记录具有 Long.MIN_VALUE 时间戳(= 没有时间戳标记)。时间特征是否设置为“ProcessingTime”
- javascript - 用户登录后显示底部导航
- sql - 在具有特定条件的子查询上左连接
- jmeter - Jmeter 中的“UnknownHostException”
- python - ANN 的无意义混淆矩阵
- firebase - Firebase 分析仅适用于 Android(React Native Expo 应用程序)
- java - Testng 数据提供者出现错误“数据提供者不匹配”