如何在 iText 中的一个单元格中添加两个图像?
How to add two images in one cell in iText?
我目前正在创建一个生成 PDF 的系统。但是,我不能将两到三个图像放在一个单元格中。我试过循环它,但它有边界。我该怎么办?
请查看 ImagesInCell 示例。它使用三个图像:
public static final String IMG1 = "resources/images/brasil.png";
public static final String IMG2 = "resources/images/dog.bmp";
public static final String IMG3 = "resources/images/fox.bmp";
这些是图像实例:
Image img1 = Image.getInstance(IMG1);
Image img2 = Image.getInstance(IMG2);
Image img3 = Image.getInstance(IMG3);
将多个图像添加到单个单元格的最简单方法是多次使用 addElement
:
PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(50);
table.addCell("Different images, one after the other vertically:");
PdfPCell cell = new PdfPCell();
cell.addElement(img1);
cell.addElement(img2);
cell.addElement(img3);
table.addCell(cell);
document.add(table);
结果如下所示:
如您所见,图像已自动缩放以适应单元格的宽度。如果那不是你想要的,你必须改进你的问题,因为你只是声称你不能将三个图像添加到同一个单元格,而这个简单的例子证明了恰恰相反。
也许你想要这样的东西:
第一行有图片,我们使用与之前相同的addElement()
方法,但我们将图片的宽度百分比更改为20%:
cell = new PdfPCell();
img1.setWidthPercentage(20);
cell.addElement(img1);
img2.setWidthPercentage(20);
cell.addElement(img2);
img3.setWidthPercentage(20);
cell.addElement(img3);
table.addCell(cell);
在图片的第二行,我们使用了不同的方法:我们将图片包裹在 Chunk
个对象中,这样我们就可以将它们并排放置:
Paragraph p = new Paragraph();
img1.scalePercent(30);
p.add(new Chunk(img1, 0, 0, true));
p.add(new Chunk(img2, 0, 0, true));
p.add(new Chunk(img3, 0, 0, true));
cell = new PdfPCell();
cell.addElement(p);
table.addCell(cell);
注意我缩放了第一张图片。如果该图像保持其原始大小,则这三张图像将无法并排放置。
将图像包裹在 Chunk
中的好处是我们可以混合图像和文本:
p = new Paragraph("The quick brown ");
p.add(new Chunk(img3, 0, 0, true));
p.add(" jumps over the lazy ");
p.add(new Chunk(img2, 0, 0, true));
cell = new PdfPCell();
cell.addElement(p);
table.addCell(cell);
我目前正在创建一个生成 PDF 的系统。但是,我不能将两到三个图像放在一个单元格中。我试过循环它,但它有边界。我该怎么办?
请查看 ImagesInCell 示例。它使用三个图像:
public static final String IMG1 = "resources/images/brasil.png";
public static final String IMG2 = "resources/images/dog.bmp";
public static final String IMG3 = "resources/images/fox.bmp";
这些是图像实例:
Image img1 = Image.getInstance(IMG1);
Image img2 = Image.getInstance(IMG2);
Image img3 = Image.getInstance(IMG3);
将多个图像添加到单个单元格的最简单方法是多次使用 addElement
:
PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(50);
table.addCell("Different images, one after the other vertically:");
PdfPCell cell = new PdfPCell();
cell.addElement(img1);
cell.addElement(img2);
cell.addElement(img3);
table.addCell(cell);
document.add(table);
结果如下所示:
如您所见,图像已自动缩放以适应单元格的宽度。如果那不是你想要的,你必须改进你的问题,因为你只是声称你不能将三个图像添加到同一个单元格,而这个简单的例子证明了恰恰相反。
也许你想要这样的东西:
第一行有图片,我们使用与之前相同的addElement()
方法,但我们将图片的宽度百分比更改为20%:
cell = new PdfPCell();
img1.setWidthPercentage(20);
cell.addElement(img1);
img2.setWidthPercentage(20);
cell.addElement(img2);
img3.setWidthPercentage(20);
cell.addElement(img3);
table.addCell(cell);
在图片的第二行,我们使用了不同的方法:我们将图片包裹在 Chunk
个对象中,这样我们就可以将它们并排放置:
Paragraph p = new Paragraph();
img1.scalePercent(30);
p.add(new Chunk(img1, 0, 0, true));
p.add(new Chunk(img2, 0, 0, true));
p.add(new Chunk(img3, 0, 0, true));
cell = new PdfPCell();
cell.addElement(p);
table.addCell(cell);
注意我缩放了第一张图片。如果该图像保持其原始大小,则这三张图像将无法并排放置。
将图像包裹在 Chunk
中的好处是我们可以混合图像和文本:
p = new Paragraph("The quick brown ");
p.add(new Chunk(img3, 0, 0, true));
p.add(" jumps over the lazy ");
p.add(new Chunk(img2, 0, 0, true));
cell = new PdfPCell();
cell.addElement(p);
table.addCell(cell);