dompdf 编号页面但跳过第一页
dompdf Numbering pages but skip first one
我使用 dompdf
class 并且我需要为每个页面编号
我这样做了并且有效:
$dompdf = new Dompdf();
$dompdf->load_html($html);
$dompdf->render();
$canvas = $dompdf->get_canvas();
$font = $dompdf->getFontMetrics()->get_font("helvetica", "bold");
$canvas->page_text(72, 18, "Header: {PAGE_NUM}", $font, 6, array(0,0,0));
我需要的只是跳过第一页,从第二页开始编号。
我该怎么做?
以前没有使用过 DOMPDF
,但在这个 GitHub DOMPDF Post 中遇到了一个纯粹的 CSS 解决方案,并准备了一个小示例,也许您会发现它有帮助。
body {
counter-reset: page;
}
.footer:not(:first-child) .page-number:before {
counter-increment: page;
color: red;
content: 'Page ';
}
.footer:not(:first-child) .page-number:after {
color: red;
content: counter(page);
}
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 0</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 1</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 2</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 3</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 4</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 5</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 6</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 7</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 8</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 9</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 10</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 11</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 12</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 13</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 14</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
来自 this link
你可以使用下面的函数
// set page number on the left side
$pdf->page_text(16, $y, "Page: {PAGE_NUM} of {PAGE_COUNT}", $font, 8, $color);
以下是对我有用的方法:
$dompdf = new Dompdf();
$dompdf->load_html($html);
$dompdf->render();
$canvas = $dompdf->get_canvas();
$cpdf = $canvas->get_cpdf();
$font = $dompdf->getFontMetrics()->get_font("helvetica", "bold");
$firstPageId = $cpdf->getFirstPageId();
$objects = $cpdf->objects;
$pages = array_filter($objects, function($v) {
return $v['t'] == 'page';
});
$number = 1;
foreach($pages as $pageId => $page) {
if(($pageId + 1) !== $firstPageId) {
$canvas->reopen_object($pageId + 1);
$canvas->text(72, 18, "Header: $number", $font, 6, array(0,0,0));
$canvas->close_object();
$number++;
}
}
$dompdf->stream();
这是如何工作的:
- 获取 https://github.com/dompdf/dompdf/blob/v0.8.2/lib/Cpdf.php#L32
的所有页面
- 将文本添加到除第 1 页之外的所有页面。
我使用 dompdf
class 并且我需要为每个页面编号
我这样做了并且有效:
$dompdf = new Dompdf();
$dompdf->load_html($html);
$dompdf->render();
$canvas = $dompdf->get_canvas();
$font = $dompdf->getFontMetrics()->get_font("helvetica", "bold");
$canvas->page_text(72, 18, "Header: {PAGE_NUM}", $font, 6, array(0,0,0));
我需要的只是跳过第一页,从第二页开始编号。
我该怎么做?
以前没有使用过 DOMPDF
,但在这个 GitHub DOMPDF Post 中遇到了一个纯粹的 CSS 解决方案,并准备了一个小示例,也许您会发现它有帮助。
body {
counter-reset: page;
}
.footer:not(:first-child) .page-number:before {
counter-increment: page;
color: red;
content: 'Page ';
}
.footer:not(:first-child) .page-number:after {
color: red;
content: counter(page);
}
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 0</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 1</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 2</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 3</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 4</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 5</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 6</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 7</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 8</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 9</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 10</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 11</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 12</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 13</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
<hr>
<div class="footer fixed-section">
<div class="left">
<span class="report-time">08/05/2016 09:43:06</span><br>
<span class="promo">Generated by ...</span>
</div>
<div class="center">
<span class="signature-warning">This is page 14</span>
</div>
<div class="right">
<span class="page-number"></span>
</div>
</div>
来自 this link 你可以使用下面的函数
// set page number on the left side
$pdf->page_text(16, $y, "Page: {PAGE_NUM} of {PAGE_COUNT}", $font, 8, $color);
以下是对我有用的方法:
$dompdf = new Dompdf();
$dompdf->load_html($html);
$dompdf->render();
$canvas = $dompdf->get_canvas();
$cpdf = $canvas->get_cpdf();
$font = $dompdf->getFontMetrics()->get_font("helvetica", "bold");
$firstPageId = $cpdf->getFirstPageId();
$objects = $cpdf->objects;
$pages = array_filter($objects, function($v) {
return $v['t'] == 'page';
});
$number = 1;
foreach($pages as $pageId => $page) {
if(($pageId + 1) !== $firstPageId) {
$canvas->reopen_object($pageId + 1);
$canvas->text(72, 18, "Header: $number", $font, 6, array(0,0,0));
$canvas->close_object();
$number++;
}
}
$dompdf->stream();
这是如何工作的:
- 获取 https://github.com/dompdf/dompdf/blob/v0.8.2/lib/Cpdf.php#L32 的所有页面
- 将文本添加到除第 1 页之外的所有页面。