我正在尝试在页脚中找到页面计数器。为此,我使用了php中使用getCanvas()->page_text()
函数的选项(与脚本版本相反,我无法显示任何内容)。问题是1/1
正确地显示在第一页上,但没有显示在任何其他呈现的页面上。
似乎Dompdf没有正确地注册它已经创建了多个页面,因为第一个页脚上显示的PAGE_COUNT
也将保持在1
,即使pdf有多个页面。
如果我使用用于Dompdf的page-break-after
CSS添加页面,它对解决手头的问题没有任何效果(并且它不会增加PAGE_COUNT
)。
class PdfGenerator
{
public static function generate($type, $resource, $is_stored = false)
{
$data = self::getData($type, $resource);
$pdf = Pdf::loadView('pdf/' . $type, $data);
$font = $pdf->getFontMetrics()->getFont("helvetica", "normal");
$canvas = $pdf->getCanvas();
$canvas->page_text(540, 785, "{PAGE_NUM} / {PAGE_COUNT}", $font, 10, array(0, 0, 0));
if ($is_stored) {
$file_name = $type . ' ' . $resource->display_name;
$pdf->save(storage_path('pdf').'/' . $file_name . '.pdf');
}
return $pdf;
}
}
字符串
大多数主要内容由一个由多个合并的标题和数据组成的表组成(为了更容易保持布局一致)。表内容按行号和单个行高进行解析,以便在刀片中处理的阵列中的多个页面上整齐地分割。
因此,我只是让表格以受控的方式溢出到后续页面中,这在最终生成的PDF中创建了多个页面,除了第一页丢失的page_text
的单个细节之外。
从我读到的文档中,这个方法(反对使用CSS)不应该阻止Dompdf正确地注册增加的页面计数,所以我在解决这个问题的时候已经无计可施了。
<html>
<head>
{{-- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> --}}
@include('pdf/partials/style')
</head>
<body>
{{-- HEADER & FOOTER --}}
<header>@include('pdf/partials/table-header-invoice')</header>
<footer>@include('pdf/partials/table-footer-invoice')</footer>
<main>
{{-- TITLE --}}
<h1>{{ucFirst(__('invoice', [], $locale))}}</h1>
{{-- DETAILS TABLE--}}
@include('pdf/partials/table-details-invoice')
<br>
{{-- CONTENTS TABLE --}}
@foreach ($pages_array as $page)
<table style="font-size: 14px">
@foreach ($page as $content_type => $contents)
@include('pdf/partials/theader-' . $content_type)
@include('pdf/partials/tbody-' . $content_type)
<br>
@endforeach
</table>
@endforeach
{{-- <p style="page-break-after: always;"></p>
<p style="page-break-after: never;"></p> --}}
</main>
</body>
</html>
型
1条答案
按热度按时间mwngjboj1#
因为PHP不知道总页数。您必须首先使用
output()
来获得总数,然后重用output()
来获得最终版本。像这样:字符串