iText:如何将透明图像放入pdf而不使透明部分变黑?

时间:2017-09-07 06:58:16

标签: java android pdf itext

我在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);

enter image description here

2 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分:0)

PDF中不支持透明图像(例如PNG或GIF,其颜色就像是透明的),但iText支持它们。

PDF中图像的透明度是通过添加不透明图像以及模仿透明度的图像蒙版来实现的。对于添加到PDF的每个透明图像,iText会添加两个图像:不透明图像和蒙版。

对于支持透明度的PNG文件和GIF文件,情况也是如此。不幸的是,您使用的是JPEG格式,JPEG不支持透明度。见Transparent background in JPEG image

使用PNG或GIF代替JPEG。