最近拿到一个需求,需要导出PDF文档,市面上可以实现的方法有很多,经过测试和调研决定使用itext5来实现,话不多说,说干就干。
1.依赖导入
com.itextpdf
itextpdf
5.5.13.1
com.itextpdf
itext-asian
5.2.0
这里说明下:上面的依赖就是主要实现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;
}
这个方法设置