iText是否尊重色彩透明度?

时间:2012-07-03 13:09:33

标签: 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第二版一书中,没有关于颜色透明度的内容。

我错了吗?

1 个答案:

答案 0 :(得分:11)

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

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

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