首页 > 解决方案 > Dompdf set_opacity 'Multiply' 仅适用于第一页和最后一页

问题描述

我正在使用 Dompdf 在 PDF 输出中添加水印文本。它运行良好,文本显示在每一页上,但我无法让不透明度在每一页上工作。例如,一个 8 页的 PDF tt 在第一页和第八页上显示正确的 0.1 不透明度,但在中间的所有其他页面上显示完整的 1.0 不透明度。这是完整的代码

    // send PDF to the browser
    $dompdf = new Dompdf();
    $options = $dompdf->getOptions();
    $options->setDefaultMediaType('print');
    $options->setIsPhpEnabled(true);
    $options->setIsRemoteEnabled(true);
    $options->setIsHtml5ParserEnabled(true);
    $dompdf->setOptions($options);
    $dompdf->loadHtml($pdf);
    $dompdf->setPaper('letter', 'portrait');
    $dompdf->render();

    // add watermark
    if ($watermark)
    {
        $canvas = $dompdf->getCanvas();
        $height = $canvas->get_height();
        $width = $canvas->get_width();
        $canvas->set_opacity(0.1, 'Multiply');
        $canvas->page_text($width/5, $height/2, $watermark, $font = null, $size = 70, $color = array(0,0,0), $wordSpace = 2, $charSpace = 2, $angle = -30);
    }

    return $dompdf->stream(Str::slug($name, '-').'-'.Carbon::now()->format('Ymd-His').'.pdf');

任何想法可能导致问题?谢谢你的想法:)

标签: dompdf

解决方案


我遇到了同样的问题,我找到了解决方案,所以我将与您分享:

替换

$canvas->set_opacity(.2, 'Multiply');

通过那个:

$canvas->page_script('$pdf->set_opacity(.2, "Multiply");');


推荐阅读