我正在使用iText 5.2.1,并且尝试通过Alpha channel 使用BaseColor构造函数,即
public BaseColor(final int red, final int green, final int blue, final int alpha)
但是当我实际绘制文本或形状时,似乎没有考虑Alpha channel 。
例如,如果我尝试这个
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
,我还可以设置笔触的不透明度。关于itext - iText是否尊重颜色透明度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11311630/