2017-09-07 97 views
0

私はAndroidスタジオプロジェクト内にiText 5.5.9を使用してPDFファイルを作成しています。
イメージを追加すると、透明部分がPDF内で黒くなります。iText:透明部分を黒くすることなく、透明な画像をpdfに入れる方法は?

どうすれば避けることができますか?ここで

は、問題を示して、私のコードの一部です:

 // add card 

     Resources res=getResources(); 
     Drawable drawable=res.getDrawable(R.drawable.card); 
     Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap(); 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 

     byte[] bitMapData = stream.toByteArray(); 
     Image img=Image.getInstance(bitMapData); 

     img.scaleAbsolute(300f,156.3f); 
     img.setSmask(false); 
     doc.add(img); 

enter image description here

+1

bitmap.compress(Bitmap.CompressFormat.PNG、100、stream)で圧縮しようとしています。 bitmap.compress(Bitmap.CompressFormat.JPEG、100、stream)の代わりに。あなたの問題を解決するかもしれない –

+0

@ pratik-tankすでに試してみました。画像全体が消える:| –

+2

'setTransparency' http://what-when-how.com/itext-5/making-images-transparent-itext-5/を参照してください。@PratikTankにはポイントがあります:JPEGは透明度を処理しませんが、PNG(とGIFは多少) 行う。 –

答えて

0

あなたはiTextの(すなわちストローク)より広範に透明円の画像を追加したい場合は、することができますストロークのある円を追加します。

次のコードを使用してください(と、ニーズに合わせてそれを変更):

try { 
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("myCirclepdffile.pdf")); 
    document.open(); 

    PdfContentByte cb = writer.getDirectContent(); 

    cb.circle(250.0f, 500.0f, 200.0f); 
    cb.stroke(); 

} catch (Exception e) { 
    System.err.println(e.getMessage()); 
} 
+0

私はこれが質問に対する答えだとは思わない。私は、透明な画像がPDFかiTextでサポートされているかどうかをOPが知りたいと思う。答えは:透明イメージはPDFではサポートされていませんが、iTextではサポートされています。 PDFでの画像の透明度は、透明度を模倣する画像マスクと共に不透明画像を追加することによって達成されます。 PDFに追加されたすべての透明イメージに対して、iTextは不透明イメージとマスクの2つのイメージを追加します。 –

0

透明画像は(それが透明であるかのように動作する色で、このようなPNG画像やGIFファイルなど)PDFでサポートされていませんしかし、それらはiTextでサポートされています。

PDFでの画像の透明度は、透明度を模倣する画像マスクとともに不透明画像を追加することによって達成されます。 PDFに追加されたすべての透明イメージに対して、iTextは不透明イメージとマスクの2つのイメージを追加します。

これは、透過性をサポートするPNGファイルとGIFファイルに当てはまります。残念ながら、JPEG形式を使用しています.JPEGは透過性をサポートしていません。 Transparent background in JPEG image

JPEGの代わりにPNGまたはGIFを使用してください。

関連する問題