簡體   English   中英

iText:如何在不使透明部分為黑色的情況下將透明圖像轉換為pdf?

[英]iText: how to put transparent images into a pdf without making the transparent parts BLACK?

我在Android Studio項目中使用iText 5.5.9制作PDF文件。
添加圖像時,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);

在此處輸入圖片說明

如果要在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());
}

PDF不支持透明圖像(例如PNG或GIF的顏色看起來像是透明的),但iText支持透明圖像。

通過添加不透明圖像以及模仿透明度的圖像蒙版,可以實現PDF中圖像的透明度。 對於添加到PDF的每個透明圖像,iText都會添加兩個圖像:不透明圖像和蒙版。

對於支持透明度的PNG文件和GIF文件,這是正確的。 不幸的是,您使用的是JPEG格式,而JPEG不支持透明性。 請參見JPEG圖像中的透明背景

使用PNG或GIF代替JPEG。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM