【发布时间】:2021-11-09 19:22:49
【问题描述】:
我用 iText 5.5.13.2(最新的 iText5 版本)创建了一个表格,并用从同一台 PC 上的特定文件夹读取的文本和图像填充它:
Paragraph p = new Paragraph();
p.add(new Phrase("This is a new paragraph!"));
PdfPTable table = new PdfPTable(2);
table.setWidthPercentage(100);
for(int i=0;i<imageArr.size();i++) { //imageArr.size()%2==0!
PdfPCell cell = new PdfPCell();
String name = imageArr.get(i);
String path = imgFolder + File.separator + name;
File f = new File(path);
if(f.isFile()) {
Image img = Image.getInstance(path);
//cell.setCalculatedHeight(50);
cell.addElement(img);
} else {
cell.addElement(new Phrase(name));
}
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_MIDDLE);
//cell.setCalculatedHeight(50);
table.addCell(cell);
}
p.add(table);
doc.add(p);
表格中的两列都使用相同的宽度(这很棒),并且大图像会自动调整大小以适应宽度(这也很棒),唯一不起作用的是:
所有单元格都应具有一定的高度,并且大图像应相应调整大小(同时仍保持适当的高度/宽度比)。在我将图像添加到单元格之前或之后使用setCalculatedHeight 似乎并不重要(只做一个或另一个,参见上面的代码),单元格总是根据图像的高度设置它的高度,所以行仅包含横向格式的文本或图像的行总是小于包含纵向格式的图像的行。
即使在使用img.setScaleToFitLineWhenOverflow(false) 和img.setScaleToFitHeight(false) 时,小图像也会调整大小(拉伸),但即使这样,高度也没有正确设置。
我已经尝试使用Chunk (cell.addElement(new Chunk(img, 0, 0))),但是图像很小,我的高度设置仍然被忽略。
如何设置单元格的高度并相应地调整图像大小?
【问题讨论】: