需求是要将数据导出为PDF文件,在处理基本的文字信息时都正常,到处理图片时将图片放在一行,图片不显示,放一列可以显示
因为数据库中的url是字符串格式的,可以存储时可以放1-3个图片的url,类似
https://oss.fjrcloud.com/rycloud-community/2023/11/11/fadcbc1758260ef450b2868f4b48af99c5fb02e2bdc271b4b09b0c44b113d62e.jpg,
https://oss.fjrcloud.com/rycloud-community/2023/11/11/aff6c2ab90ceacdd22fba7c208c61089356dfb7ce5feb7cf57abe67fac3d7db5.jpg,
https://oss.fjrcloud.com/rycloud-community/2023/11/08/fadcbc1758260ef450b2868f4b48af99c5fb02e2bdc271b4b09b0c44b113d62e.jpg
中间用,隔开
原本我是对图片这样处理的
String text6 = "相关图片 :";
Paragraph paragraph6 = new Paragraph(text6, content);
paragraph6.setAlignment(Element.ALIGN_LEFT);
document.add(paragraph6);
document.add(new Paragraph("\n"));
document.add(new Paragraph("\n"));
List<String> picture = (List<String>) dataMap.get("${pictures}");
PdfPTable table = new PdfPTable(3); // 3列的表格,您可以根据需要调整列数
for (String s : picture) {
PdfPCell cell = new PdfPCell();
Image img = Image.getInstance(new URL(s));
cell.addElement(img);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
}
document.add(table);
获取到字符串的集合,创建一个3列的表格,再将图片添加到表格中,最后将表格添加到dpf
发现图片只有一张或者两张时不显示
最后发现是因为
PdfPTable table = new PdfPTable(3);
里面你的图片需要是3的倍数,1和2不是,所以不显示
最后将修改的代码放下面
String text6 = "相关图片 : ";
Paragraph paragraph6 = new Paragraph(text6, content);
paragraph6.setAlignment(Element.ALIGN_LEFT);
document.add(paragraph6);
document.add(new Paragraph("\n"));
document.add(new Paragraph("\n"));
List<String> picture = (List<String>) dataMap.get("${pictures}");
if (picture != null&& picture.size()>0) {
float[] floats = new float[picture.size()];
Arrays.fill(floats, 60);
PdfPTable table = new PdfPTable(floats);
table.setTotalWidth(500);
table.setLockedWidth(true);
table.setHorizontalAlignment(Element.ALIGN_CENTER);
table.getDefaultCell().setBorder(1);
for (String s : picture) {
Image img = Image.getInstance(new URL(s));
PdfPCell cell = new PdfPCell(img);
img.scaleAbsolute(150,150);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
}
document.add(table);
}
创建一个大小为集合长度的数组,放到创建表格的构造方法中,后面的是对图片大小和样式的修改