首页 > 解决方案 > 文本行匹配框的透明背景颜色(填充颜色)

问题描述

我正在用 pdflib 和 php 创建名片。我正在使用 PDFLib 9.0.6p4 for Mac 和 PHP 版本 5.6。有一个显示文本的背景图像。为了让它可读,我想为我的文本设置一些背景颜色。设法用火柴盒和填充颜色做到这一点。我的火柴盒有可能有透明的填充颜色吗?

已经尝试将透明的 rect() 作为文本而不是火柴盒的背景,但它不起作用,因为在打印文本之前我不知道高度和宽度。

    ...
    $textline = "马克斯·穆斯特曼";
    $p->保存();
    $gstate = $p->create_gstate("opacityfill=.8");
    /* 应用扩展图形状态 */
    $p->set_gstate($gstate);
    # 将文本放在右上角的框中
    $optlist = "position={top left} showborder matchbox={ boxheight={fontsize descender} borderwidth=0.3 offsetleft=-2 offsetright=2 offsetbottom=-2 fillcolor=green}";
    $p->fit_textline($textline, $x, $y-=$yoff, $optlist); # 示例文本
    $p->fit_textline($optlist, $xt, $y + 3, "fontsize=12"); # 描述
    $p->恢复();
    ...

不幸的是,这并没有为文本带来透明背景颜色的预期效果。

标签: phppdflib

解决方案


您非常接近:您应该将gstate句柄添加到匹配框选项列表(简化情况):

$gstate = $p->create_gstate("opacityfill=.8");
$optlist = "matchbox={ fillcolor=green gstate=$gstate}";
$p->fit_textline($textline, $x, $y-=$yoff, $optlist);

推荐阅读