我目前正在创建一个生成PDF的系统。但是,我不能在一个细胞里放两张-三张照片。我试着把它循环起来,但它有边界。我该怎么办?
发布于 2015-11-09 04:07:02
请看一下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);
https://stackoverflow.com/questions/33603296
复制相似问题