IText 无法将存储中的现有图像添加到 PDF

IText can't add existing image from storage to PDF

我正在创建一个需要从不同值创建 PDF 的应用程序。一切都很好,除非我尝试将外部存储中的图像添加到我的 pdf 中。

我可以访问所述图像,并在调试器中预览它们,但是,尽管如此,我还是不知道如何添加它们。

另一方面,我可以添加来自我的资产文件夹的图像。

我的代码如下所示:

    PdfPTable photosTable = new PdfPTable(3);
    photosTable.setWidths(new float[]{33, 34, 33});

    File picFile = new File(imagePath);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    //I know the creation of the file object is redundant but it's the remains from older code
    Bitmap pix = BitmapFactory.decodeFile(picFile.getPath());
    pix.compress(JPEG, 100, baos);

    Image pic = Image.getInstance(baos.toByteArray());
    PdfPCell picCell = new PdfPCell(pic, true);
    picCell.setBorder(Rectangle.NO_BORDER);
    photosTable.addCell(picCell);

    pdf.add(photosTable);

有谁知道我做错了什么?我可以在调试器中访问和预览图像,所以我认为我没有路径问题。

非常感谢您的帮助,

亲切地, 马蒂厄·默尼耶

在与我的同事进行一些研究后,我们发现,为了显示 table ,iText 要求一行的每一列都存在。

我的意思是,我尝试添加“3 列”table 2 张图像。

因此,为了避免 table 不显示,只需像这样添加一些空单元格即可:

PdfPCell whiteCell = new PdfPCell();
whiteCell.addElement(Chunk.NEWLINE);
photosTable.addCell(whiteCell);

或者更简单,如果您不需要任何特殊的单元格格式

photosTable.addCell(Chunk.NEWLINE);

希望对大家有所帮助。

此致, 马修