首页 > 解决方案 > PDFlib 使用透明色

问题描述

我有一张桌子,我想给它一个透明的背景颜色。我知道我们有“fillcolor”选项,但我们只能使用 rgb(意味着不使用 rgba)和颜色代码,如下所示:fillcolor={rgba 0.9 0.5 0}fillcolor={#ffed00}.

那么如何让背景更透明呢?

标签: phppdfpdflib

解决方案


如果您使用“ opacityfill ”创建GState,然后在放置表格时将其输出,则可以在 PDFlib 中实现此功能。在一个简单的代码示例中,如下所示:

        $gstate= $p->create_gstate("opacityfill=.5");
        $tbl = $p->add_table_cell($tbl, 1, 1,
              "Text", 
              "fittextline={fontname=NotoSerif-Regular encoding=unicode " + 
              "fontsize=12} colwidth=100 rowheight=30");

        $result = $p->fit_table($tbl, 50, 50, 500, 800, "fill={ {area=table fillcolor={red} } } gstate=" . $gstate);

如果您随后将表格放在彩色背景(例如图像)上,则此代码片段会导致以下输出,例如: Acrobat 中 PDF 输出的屏幕截图

有关 create_gstate() 的完整详细信息,另请参阅 PDFlib API 参考中的第 7.2 章“图形状态”。也许也很有趣,如果你只想对一个单元格产生效果,你也可以使用 Matchbox 定义一个单元格的装饰,你可以用它指定一个 GState。(有关详细信息,请参阅 PDFlib 9.3.1 教程,第 9.4 章“Matchboxes”)


推荐阅读