iText 是否尊重颜色透明度



我正在使用iText 5.2.1,我尝试使用带有alpha通道的BaseColor构造函数,即

public BaseColor(final int red, final int green, final int blue, final int alpha)

但是当我实际绘制文本或形状时,似乎没有考虑 alpha 通道。例如,如果我尝试这个

  Font f = ....;
  f.setColor(new BaseColor(130, 130, 130, 50);
  PdfContentByte cb = writer.getDirectContent();
  ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("my text", f),
      refPointX, refPointY, 0);

使用指定的颜色但不带 Alpha 信息写入的文本,即具有 100% 不透明度的颜色。如果我尝试绘制一些形状并指定具有透明度的填充颜色,也会发生同样的事情。

《iText in Action》第二版一书中,没有关于颜色透明度的内容。

我错了吗?

我在itext邮件列表中找到了一些东西,我试过了......有效!这是一个未记录的功能。无论如何,以下代码可以满足我的需要:

PdfContentByte cb = writer.getDirectContent();
PdfGState gState = new PdfGState();
gState.setFillOpacity(0.1f);
cb.setGState(gState);

如果是绘制文本或形状,则它们的不透明度为 10%。使用gState.setStrokeOpacity我还可以设置笔触的不透明度。

最新更新