dompdf - 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');
任何想法可能导致问题?谢谢你的想法:)
解决方案
我遇到了同样的问题,我找到了解决方案,所以我将与您分享:
替换
$canvas->set_opacity(.2, 'Multiply');
通过那个:
$canvas->page_script('$pdf->set_opacity(.2, "Multiply");');
推荐阅读
- node.js - 如何将时区设置为“-03:00”,续集cli
- python - 通过机器人框架运行 python 日志时的日志更新问题
- php - 具有相同键和值的数组的总和值
- python - 标点符号、停用词和带有 spacy 的词形还原
- php - 在 laravel 5.8 中注册期间添加 ROLE 时,参数 1 传递给 Illuminate\Auth\SessionGuard::login()
- c# - 我想在列表视图中制作标题并在 UWP 应用程序中的每个列表视图下添加项目。我该怎么做?
- c++ - 我可以在 c++17 代码中使用 c++11 开发的库吗?
- angular-test - 角度单元测试异步调用
- python - 如何根据单词匹配创建新列
- sqlite - 用 sqlite 连接 symfony