如何在android中使用iText将带有文本的多个位图图像添加到表中?

时间:2017-04-11 08:22:35

标签: android itext

我想创建一个包含条形码图像的pdf文件,文本在表格中。我无法以这种格式创建。

Required output should be like this

PdfPTable table = new PdfPTable(qrCodeModelArrayList.size());

    for (int i = 0; i < qrCodeModelArrayList.size(); i++) {

        Bitmap bitmap = qrCodeModelArrayList.get(i).getQrBitMap();
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); //use the compression format of your need
        InputStream is = new ByteArrayInputStream(stream.toByteArray());

        Bitmap bmp = BitmapFactory.decodeStream(is);
        ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.PNG, 100, stream1);
        Image bitmapImage = null;
        try {
            bitmapImage = Image.getInstance(stream1.toByteArray());
        } catch (IOException e) {
            e.printStackTrace();
        }

        PdfPCell cell = new PdfPCell();
        cell.addElement(bitmapImage);
        Paragraph p = new Paragraph(qrCodeModelArrayList.get(i).getQrCodeName());
        p.setAlignment(Element.ALIGN_CENTER);
        cell.addElement(p);
        table.addCell(cell);
    }

使用此代码时,我确实输出如下:

enter image description here

我无法查看条形码图像,并且所有列都在同一行中添加。我希望它在5列中。

1 个答案:

答案 0 :(得分:1)

我已更新您的问题,以便显示实际问题:您正在尝试创建QRCode,应使用BarcodeQRCode类完成。然后,您应该使用placeBarcode()方法将代码添加到PDF。您无法使用createAwtImage()方法,因为Android上没有AWT。我认为您当前使用的代码存在一些与图像相关的问题。 QRCode由矢量数据组成,您将其转换为有损JPEG格式(这是一个坏主意,因为条形码扫描器在阅读JPG时会遇到问题,您应该使用PNG代替)。你也在压缩条形码;这对于可能是矢量格式的图像没有意义。

使用placeBarcode()方法将QRCode添加为矢量图像(使用PDF语法)。这比将条形码添加为光栅图像要好得多。