1

我正在尝试使用 iText 将我的 QR 码的背景颜色设置为透明背景,但它不起作用。仅显示白条和黑色背景。

到目前为止我做了什么:

我的代码片段:

    PdfContentByte cb = writer.getDirectContent();
    BarcodeQRCode qrcode = new BarcodeQRCode("sample message on qr", 100, 100, null);
    java.awt.Image qrImage = qrcode.createAwtImage(Color.WHITE,new Color(0, 0, 0, 0));
    Image finalImage = Image.getInstance(writer, qrImage, 1);
    finalImage.setAbsolutePosition(positionX, positionY);
    cb.addImage(finalImage);

我已经生成了我的二维码并生成了一个 PDF,但是,当使用

qrcode.createAwtImage(Color.WHITE,new Color(0, 0, 0, 0));

它不会产生 alpha 背景,而是仅显示黑色背景色。

我也试过:

java.awt.Image qrImage = qrcode.createAwtImage(Color.WHITE,Color.OPAQUE);

但显然,我的论点是不正确的。

帮助将不胜感激,我已经为此工作了一天。

我也试过Graphics,Graphics2g,把它转换成BufferedImage。

4

2 回答 2

2

我会这样解决这个问题:

BarcodeQRCode qrcode = new BarcodeQRCode("sample message on qr", 100, 100, null);
Image image = qrcode.getImage();
Image mask = qrcode.getImage();
mask.makeMask();
image.setImageMask(mask);
document.add(image);

也可能有 AWT 解决方案,但我更熟悉原生 PDF 解决方案,而不是使用 AWT 解决方法。

于 2013-01-07T10:53:28.180 回答
2

将分配更改为finalImage以下作品:

Image finalImage = Image.getInstance(qrImage, null)

我不知道为什么使用将第一个参数作为第一个参数的getInstance方法会PdfWriter破坏透明度,尽管......

于 2013-01-07T10:54:41.223 回答