Java使用使用itext5实现实现PDF表格文档导出表格文档导出
主要介绍了Java使用itext5实现PDF表格文档导出,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编
来一起学习学习吧
最近拿到一个需求,需要导出PDF文档,市面上可以实现的方法有很多,经过测试和调研决定使用itext5来实现,话不多说,说干就干。
1.依赖导入依赖导入
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
这里说明下:上面的依赖就是主要实现PDF生成的,下面的依赖是中文字体相关依赖;
2.PDF表格导出实现表格导出实现
1.导出PDF
// 1.打开文档并设置基本属性
Document document = new Document();
// 2.设置请求头,encode文件名
response.setContentType("application/pdf;charset=UTF-8");
response.setHeader("Content-Disposition",
"attachment; filename=" + java.net.URLEncoder.encode("" +
recordDto.getTitle() + ".pdf", "UTF-8"));
// 3.通过流将pdf实例写出到浏览器
PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());
至此导出PDF已经实现了,只是这个PDF中什么内容都没有,明白这一点,接下来做的就是给这个文档“加料”咯(这里的response就是HttpServletResponse)。
2.页面美化
// 这里的wirter就是上文的writer
writer.setViewerPreferences(PdfWriter.PageModeUseThumbs);
writer.setPageSize(PageSize.A4);
这里设置了文档的显示缩略图以及文档大小为A4;
3.中文字体设置
public static Font getPdfChineseFont() throws Exception {
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(bfChinese, 12, Font.NORMAL);
fontChinese.setColor(BaseColor.BLACK);
fontChinese.setSize(11);
return fontChinese;
}
这个方法设置了中文字体样式,感兴趣的同学可以试试其他的样式,例如:字体颜色,大小,字体都可以修改;
4.输出表格内容到文档
// 首先打开文档
document.open();
// 向文档中添加表格数据
private static void printBasicInfo(ShopApplyRecordDto recordDto, Document document, Font font) throws DocumentException {
// 表格中的数据
Object[][] basicDatas = {
{"标题","xxx申请", "审批编号","1234"},
{"申请人","小明", "申请商铺","xxx商场"},
{"申请日期","2020/1/16", "审批结果","同意")}};
// 每个cell的宽度
float[] widthss = {50, 200, 50, 200};
// 创建一个表格,每一行有四个cell
PdfPTable basicTable = new PdfPTable(widthss);
// 外层循环表格的行
for (int i = 0; i < basicDatas.length; i++) {
// 内层循环每一行具体数据
for (int j = 0; j < basicDatas[i].length; j++) {
// 新建一个cell
PdfPCell cell = new PdfPCell();
// 这个方法是统一设置表格和cell的样式,下面会写
setTableStyle(basicTable, cell);
// cell中需要填充数据的格式
Paragraph paragraph =
new Paragraph(StrUtil.toString(basicDatas[i][j]), font);
// 设置cell的值
cell.setPhrase(paragraph);
// 将cell添加到表格中
basicTable.addCell(cell);
}
}
// 将表格添加到文档中
document.add(basicTable);
}
// 结束时要关闭文档
document.close();
大功告成,现在导出的PDF中已经有了类似这样的表格了:
当然你的样式会很丑,接下来我们来设置下样式。
评论0
最新资源