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);
希望对大家有所帮助。
此致,
马修
我正在创建一个需要从不同值创建 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);
希望对大家有所帮助。
此致, 马修