引入包
XML
<properties>
<itext.version>8.0.5</itext.version>
</properties>
<dependencies>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-core</artifactId>
<version>${itext.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>bouncy-castle-adapter</artifactId>
<version>${itext.version}</version>
</dependency>
</dependencies>
直接参考代码
java
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.properties.UnitValue;
@ApiOperation("导出餐别统计")
@PostMapping("/exportMealPdf")
public void exportMealPdf(@RequestBody ChargeTypeReportPageDTO query, HttpServletResponse response) throws IOException {
response.setContentType("application/pdf");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder.encode("餐别统计表", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=" + fileName + ".pdf");
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(response.getOutputStream()));
Document doc = new Document(pdfDoc);
// 设置中文字体
PdfFont pdfFont = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", PdfFontFactory.EmbeddingStrategy.PREFER_NOT_EMBEDDED);;
doc.setFont(pdfFont);
doc.add(new Paragraph("With 3 columns:"));
Table table = new Table(UnitValue.createPercentArray(new float[] {10, 10, 80}));
table.setMarginTop(5);
table.addCell("Col a");
table.addCell("Col b");
table.addCell("Col c");
table.addCell("Value a");
table.addCell("Value b");
table.addCell("This is a long description for column c. " +
"It needs much more space hence we made sure that the third column is wider.");
doc.add(table);
doc.add(new Paragraph("With 2 columns:"));
table = new Table(UnitValue.createPercentArray(2)).useAllAvailableWidth();
table.setMarginTop(5);
table.addCell("Col a");
table.addCell("Col b");
table.addCell("Value a");
table.addCell("Value b");
table.addCell(new Cell(1, 2).add(new Paragraph("Value b")));
table.addCell(new Cell(1, 2).add(new Paragraph("This is a long description for column c. " +
"It needs much more space hence we made sure that the third column is wider.")));
table.addCell("Col a");
table.addCell("Col b");
table.addCell("Value a");
table.addCell("Value b");
table.addCell(new Cell(1, 2).add(new Paragraph("Value b")));
table.addCell(new Cell(1, 2).add(new Paragraph("This is a long description for column c. " +
"It needs much more space hence we made sure that the third column is wider.")));
doc.add(table);
doc.close();
}