itext pdf,下面是图片和文字列表

时间:2015-12-16 03:26:43

标签: pdf itext

需要帮助来生成带有描述其下图像的图像和文本列表的pdf。

尝试以下方法,但将图像和文字放在一起。请帮忙解决这个问题。感谢。

........

PdfPTable table = new PdfPTable(1);
table.setHorizontalAlignment(Element.ALIGN_CENTER);
table.setSplitRows(true);
table.setWidthPercentage(90f);

Paragraph paragraph = new Paragraph();
for (int counter = 0; counter < empSize; counter++) { 
    String imgPath = ... ".png");
    Image img = Image.getInstance(imgPath);
    img.scaleAbsolute(110f, 95f);

    Paragraph textParagraph = new Paragraph("Test" + counter));
    textParagraph.setLeading(Math.max(img.getScaledHeight(), img.getScaledHeight()));
    textParagraph.setAlignment(Element.ALIGN_CENTER);

        Phrase imageTextCollectionPhase = new Phrase();
    Phrase ph = new Phrase();
    ph.add(new Chunk(img, 0, 0, true));
        ph.add(textParagraph);  

    imageTextCollectionPhase.add(ph);
    paragraph.add(imageTextCollectionPhase);
}

PdfPCell cell = new PdfPCell(paragraph);
table.addCell(cell);
doc.add(table);

1 个答案:

答案 0 :(得分:3)

我假设你想得到一个如下所示的结果:

enter image description here

在您的情况下,您将所有内容(所有图像和所有文本)添加到单个单元格。您应该将它们添加到单独的单元格中,如MultipleImagesInTable示例中所示:

public void createPdf(String dest) throws IOException, DocumentException {
    Image img1 = Image.getInstance(IMG1);
    Image img2 = Image.getInstance(IMG2);
    Image img3 = Image.getInstance(IMG3);
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();
    PdfPTable table = new PdfPTable(1);
    table.setWidthPercentage(20);
    table.addCell(img1);
    table.addCell("Brazil");
    table.addCell(img2);
    table.addCell("Dog");
    table.addCell(img3);
    table.addCell("Fox");
    document.add(table);
    document.close();
}

您可以轻松更改此概念证明,以便使用循环。只需确保将addCell()方法放在循环中而不是循环中。

你也可以明确地创建一个PdfPCell并将文本和图像组合在同一个单元格中,如下所示:

PdfPCell cell = new PdfPCell();
cell.addElement(img1);
cell.addElement(new Paragraph("Brazil"));
table.addCell(cell);