【发布时间】:2021-08-30 10:25:09
【问题描述】:
我有一张桌子,我想给它一个浅色透明的背景颜色。我知道我们有“填充颜色”选项,但我们只能使用 rgb(表示不使用 rgba)和颜色代码,如下所示:fillcolor={rgba 0.9 0.5 0} 或 fillcolor={#ffed00}。
那么如何让背景更透明呢?
【问题讨论】:
我有一张桌子,我想给它一个浅色透明的背景颜色。我知道我们有“填充颜色”选项,但我们只能使用 rgb(表示不使用 rgba)和颜色代码,如下所示:fillcolor={rgba 0.9 0.5 0} 或 fillcolor={#ffed00}。
那么如何让背景更透明呢?
【问题讨论】:
如果您使用“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);
如果您随后将表格置于彩色背景(例如图像)上,则此代码片段会导致以下输出,例如:
有关 create_gstate() 的完整详细信息,另请参阅 PDFlib API 参考中的第 7.2 章“图形状态”。 也许也很有趣,如果你只想对一个单元格产生效果,你也可以使用 Matchbox 定义一个单元格的装饰,你可以用它指定一个 GState。 (有关详细信息,请参阅 PDFlib 9.3.1 教程,第 9.4 章“Matchboxes”)
【讨论】:
stroke{={line=other}} 为 fit_table 设置整个表格的表格边框,但我不想要整个表格的边框。