CSS 页面计数器重置

cot*_*ton 5 html css php counter dompdf

我使用 Dompdf 创建 pdf 文件,但为了不获取大文件,我一次创建了多个 pdf 文件。 (谈论 1.4 mb 而不是 >300)

所以计划是先添加pdf,添加分页符,然后将计数器重置为1。

然后添加以页面计数器 1 开头的第二个 pdf,而不是继续以 3 开头。

伪代码:

model
    ->addContent(fooHtml)
    ->pageBreak() // adds "<div class="page_break"></div>" to content
    ->counterReset() // should add the counter reset to content 
    ->addContent(barHtml)
    ->getPdf
Run Code Online (Sandbox Code Playgroud)

示例pdf:

在此处输入图片说明

问题是counter-reset不起作用。在counter-increment做。

我现在认为我可以通过使用增量减去当前计数器值来重置计数器:

counter-increment: page -counter(page)

但是counter(page)不返回值?至少看起来无效。

这有效:

counter-increment: page -2

但肯定没有解决方案。

我现在搜索一种获取counter(page)值的方法,以便能够添加一个 div 以将当前计数器重置为 1:

<div style="counter-increment: page -counter(page)"></div>.

有没有办法减去当前计数器?

以下是测试文件:

HTML

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Pages Test</title>
    <style type="text/css">
        footer {
            position: fixed;
            left: 0px;
            bottom: -160px;
            right: 0px;
            height: 150px;
        }

        .page_break {
            page-break-before: always;
        }

        .page_number:after {
            content: counter(page);
        }
    </style>
</head>
<body>
<footer>
    <div class="page page_number">Page&nbsp;</div>
</footer>
<div class="foo">Page One Of Foo</div>
<div class="page_break"></div>

<div class="foo">Page Two Of Foo</div>
<div style="counter-increment: page -2"></div>
<!-- does not work: <div style="counter-increment: page -counter(page)"></div> -->
<div class="page_break"></div>

<div class="foo">Page One Of Bar</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

PHP

$html = file_get_contents('path/to/html/template.html');

$domPdf = new \Dompdf\Dompdf();
$domPdf->loadHtml($html);
$domPdf->render();
$pdf = $domPdf->output();
Run Code Online (Sandbox Code Playgroud)