如何在Laravel中使用mpdf向每页添加水印

时间:2019-01-25 10:43:25

标签: php laravel mpdf

我在laravel中使用niklasravnsborg/laravel-pdf包来生成pdf。在此代码中,我添加了水印,但该水印仅出现在最后一页,尽管我希望该水印可以出现在每页中。

$pdf = PDFm::loadHtml($result->document);
$pdf->mpdf->SetWatermarkText('DRAFT');
$pdf->mpdf->showWatermarkText = true;
return $pdf->download('hdtuto.pdf');

3 个答案:

答案 0 :(得分:0)

从文档中可以正常运行。但是,您可以尝试以下吗?

$config = ['instanceConfigurator' => function($mpdf) {
    $mpdf->SetWatermarkText('DRAFT');
    $mpdf->showWatermarkText = true;
}]

PDF::loadHtml($result->document, $config)->download('hdtuto.pdf');

在这种情况下,我们将使用正确的配置实例来初始化PDF实例,而不是在加载HTML之后执行此操作。

答案 1 :(得分:0)

mPDF doc指出

  

如果变量$ showWatermark设置为1或true,则在打印页脚时,水印将添加到每页。

尝试将页眉/页脚添加到PDF并设置相应的标志

答案 2 :(得分:0)

如果有人尝试使用刀片文件代替直接的html文档,则可以使用视图函数,该函数会将html内容返回到loadHtml方法。

$config = ['instanceConfigurator' => function($mpdf) {
    $mpdf->SetWatermarkText('DRAFT');
    $mpdf->showWatermarkText = true;
}]

$pdf = PDF::loadHtml(view('path.to.blade_file', $blade_data), $config);

return $pdf->stream('DocumentName.pdf');

如果要将图像用作水印

$config = ['instanceConfigurator' => function ($mpdf) {
                $mpdf->SetWatermarkImage(asset('path/to/image_file'));
                $mpdf->showWatermarkImage = true;
                // $mpdf->watermarkImageAlpha = 0.2; // image opacity 
                // dd($mpdf) // show all attributes 
            }];

            $pdf = PDF::loadHtml(view('path.to.blade_file', $blade_data), $config);

            return $pdf->stream('DocumentName.pdf');