繁体   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