Прозрачный фоновый цвет (fillcolor) для спичечных коробков текстовой строки

Я создаю визитки с помощью pdflib и php. Я использую PDFLib 9.0.6p4 для Mac с PHP версии 5.6. Есть фоновое изображение, на котором отображается текст. Чтобы сделать его читабельным, я хочу иметь фоновый цвет для моего текста. Удалось сделать это с помощью matchbox и fillcolor. Есть ли возможность иметь прозрачный цвет заливки для моего спичечного коробка?

Уже пытался поставить прозрачный прямоугольник() в качестве фона моего текста вместо спичечного коробка, но это не сработало, потому что я не знаю высоту и ширину перед печатью текста.

    ...
    $textline = "Max Mustermann";
    $p->save();
    $gstate = $p->create_gstate("opacityfill=.8");
    /* Apply the extended graphics state */
    $p->set_gstate($gstate); 
    # Place the text in a box on the top right
    $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);   # sample text
    $p->fit_textline($optlist, $xt, $y + 3, "fontsize=12"); # description
    $p->restore();
    ...

к сожалению, это не дает ожидаемого эффекта прозрачного цвета фона для текста.


person Judith Pucher    schedule 04.04.2019    source источник


Ответы (1)


вы очень близки: вы должны добавить дескриптор gstate в список параметров matchbox (упрощенный случай):

$gstate = $p->create_gstate("opacityfill=.8");
$optlist = "matchbox={ fillcolor=green gstate=$gstate}";
$p->fit_textline($textline, $x, $y-=$yoff, $optlist);
person Rainer    schedule 04.04.2019
comment
большое спасибо, это работает отлично. Мне пришлось вызвать функцию $p-›restore() перед $p-›fit_textline(), иначе я также получу прозрачный текст. ты спас мой день! - person Judith Pucher; 08.04.2019