概述
iText 是一个开放源代码库,用于在 Java 中创建和处理 PDF 文件
demo
@GetMapping("getpdf")
public ResponseEntity<byte[]> getpdf() throws DocumentException {
List<WeiboUserInfo> list = weiboUserInfoService.list();
Document document = new Document();
ByteArrayOutputStream out = new ByteArrayOutputStream();
PdfPTable table = new PdfPTable(3);
table.setWidthPercentage(60);
table.setWidths(new int[]{1, 3, 3});
Font headFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD);
PdfPCell hcell;
hcell = new PdfPCell(new Phrase("Id", headFont));
hcell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(hcell);
//"id", "userName", "userLoginName"
hcell = new PdfPCell(new Phrase("UserName", headFont));
hcell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(hcell);
hcell = new PdfPCell(new Phrase("UserLoginName", headFont));
hcell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(hcell);
for (WeiboUserInfo userInfo:list) {
PdfPCell cell;
cell = new PdfPCell(new Phrase(userInfo.getId().toString()));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Phrase(userInfo.getUserName()));
cell.setPaddingLeft(5);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
table.addCell(cell);
cell = new PdfPCell(new Phrase(String.valueOf(userInfo.getUserLoginName())));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setPaddingRight(5);
table.addCell(cell);
}
PdfWriter.getInstance(document, out);
document.open();
document.add(table);
document.close();
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition","inline;filename=citiesreport.pdf");
return ResponseEntity
.ok()
.headers(headers)
.contentType(MediaType.APPLICATION_PDF)
.body(out.toByteArray());
}
有个总结是,如果想输出给浏览器某些东西,可用以流的方式输出,也可用以字节的方式输出