1. 添加依赖
java
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.2.5</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.2.5</version>
</dependency>
2.demo代码
java
@SneakyThrows
public void export(List list, OutputStream outputStream) {
List<JbMaintainPlanEntity> list = planEntityService.list(dto);
// 创建 PDF 写入器和文档对象
PdfWriter writer = new PdfWriter(outputStream);
PdfDocument pdfDocument = new PdfDocument(writer);
Document document = new Document(pdfDocument);
//支持中文,指定字符集
InputStream resourceAsStream = resourceLoader.getClassLoader().getResourceAsStream("front/simsun.ttf");
byte[] bytes = IoUtil.readBytes(resourceAsStream);
FontProgram fontProgram = FontProgramFactory.createFont(bytes);
PdfFont font = PdfFontFactory.createFont(fontProgram);
document.setFont(font);
// 创建表格,并设置列数为data中的键的数量
float[] columnWidths = {2f, 2f, 2f, 3f, 3f, 2f};
Table table = new Table(columnWidths);
table.setWidth(UnitValue.createPercentValue(80));
table.setHorizontalAlignment(HorizontalAlignment.CENTER);
// 添加表头
String[] headers = {"序号", "设备分类", "设备机型", "设备", "轮保日期", "备注"};
for (String header : headers) {
Cell cell = new Cell().add(new Paragraph(header));
cell.setTextAlignment(TextAlignment.CENTER);
table.addHeaderCell(cell);
}
Integer count = 1;
for (Objetc data: list) {
Map<String, Object> map = new HashMap<>();
BeanUtil.beanToMap(data, map, false, false);
table.addCell(new Cell().add(new Paragraph(count.toString())).setTextAlignment(TextAlignment.CENTER));
table.addCell(new Cell().add(new Paragraph(String.valueOf(map.get("name"))))
.setTextAlignment(TextAlignment.CENTER));
table.addCell(new Cell().add(new Paragraph(String.valueOf(map.get("model")))).setTextAlignment(TextAlignment.CENTER));
table.addCell(new Cell().add(new Paragraph(String.valueOf(map.get("age")))).setTextAlignment(TextAlignment.CENTER));
table.addCell(new Cell().add(new Paragraph(String.valueOf(map.get("date")))).setTextAlignment(TextAlignment.CENTER));
table.addCell(new Cell().add(new Paragraph(ObjectUtil.isNull(map.get("remark")) ? "" : String.valueOf(map.get("remark"))))
.setTextAlignment(TextAlignment.CENTER));
}
// 将表格添加到文档中
document.add(table);
// 关闭文档
document.close();
}