2012-07-03 85 views
3

我利用iText 5.2.1,我試圖用BaseColor構造帶alpha通道,也就是iText是否尊重顏色透明度?

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第二版沒有關於透明度的顏色。

我錯了嗎?

+0

您使用的是Adobe Reader或其他PDF閱讀器嗎?一些非Adobe PDF查看器處理透明內容的方式與Adobe不同,iText開發人員僅使用Adobe Reader作爲參考。 –

+0

我只使用Adobe Reader。你有一些使用顏色不透明的代碼嗎? –

+0

不幸的是,我只是想放棄查看器問題。如果你沒有得到答案,你可能想嘗試將你的問題發佈到iText的[郵件列表](https://lists.sourceforge.net/lists/listinfo/itext-questions)。 –

回答

11

我在itext郵件列表中發現了一些東西,我嘗試過......工作! 這是一個無證的功能。反正下面的代碼做什麼,我需要:

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

如果畫文本或形狀,他們有10%的不透明度。用gState.setStrokeOpacity我也可以在筆畫上設置不透明度。

+1

如果你發現完全解決了你的問題,考慮接受你自己的答案:) –

+0

如果你正在繪製一條線,那麼上面的作品,如果你使用gState.setStrokeOpacity(0.1f); – Arthur

+0

這段代碼做了什麼?使整個文件透明?隻影響以下繪圖命令? –