这是我的方案:我创建了一个包含6列的PdfPTable
。但是,当我只向表中添加1或2个单元格时,它不会渲染这些单元格。如果我添加6个或6个单元的倍数,它只会渲染单元格。
我知道这完全有道理但在我的情况下,我正在添加基于imagelist
的图像单元格,可能不包含6或12或18个图像。图像的数量可以是1或7或任何其他。以下是我的代码:
try {
Document document = new Document(PageSize.A4.rotate());
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream(new File(sourcePath, AppText.FILE_NAME)));
PdfPTable table = new PdfPTable(6);
document.open();
Paragraph paragraph = new Paragraph("Diary Report");
paragraph.setSpacingAfter(50);
paragraph.setSpacingBefore(50);
document.add(paragraph);
table.setHorizontalAlignment(Element.ALIGN_LEFT);
for (String imageFile : imageFiles) {
Image image = Image.getInstance(new File(imageFile).getAbsolutePath());
PdfPCell cell = new PdfPCell(image, true);
cell.setPadding(10);
table.addCell(cell);
}
document.add(table);
document.close();
return "successful";
} catch (DocumentException | IOException e) {
e.printStackTrace();
}
任何帮助都会很棒。
答案 0 :(得分:1)
据记载,iText会忽略每一行都不完整的行。当您定义一个包含6列的表并且只添加1(或2或3或4或5)单元格时,则不会呈现该行。
如果要避免此行为,则必须完成该行。这可以使用一行完成:
table.completeRow();
现在iText将添加空单元格以完成该行。