最近正在做导出pdf文件的功能,所以查了了一些相关资料,发现不是很完善,这里做一些小小的感想,欢迎各位“猿”童鞋批评指正。
poi+itext,所需要的jar包有itext-2.1.7.jar,poi-3.14.jar,iTextAsian.jar:用于处理中文乱码问题,这是我所用的jar包,大家也可以自行配置。https://www.cnblogs.com/h--d/p/6150320.html,这个网址步骤写的挺好的,https://www.cnblogs.com/shuilangyizu/p/5760928.html 这个是画pdf比较详细
首先设置一下字体,看看pdf里有哪些需要的字体,这里先设置一个基础的
BaseFont bfChinese = null;
try {
bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Font FontChinese = new Font(bfChinese,13,Font.NORMAL);
Font FontChinese2 = new Font(bfChinese,13,Font.NORMAL|Font.UNDERLINE);这里设置需要的的字体类型,在初始的字体里面修改,保证一下统一以便字体结构清晰。
// 第一步,创建document对象
Rectangle rectPageSize = new Rectangle(PageSize.A4);//这里可以查查,有很多其他的
//下面代码设置页面横置
rectPageSize = rectPageSize.rotate();
//创建document对象并指定边距
Document document1 = new Document(rectPageSize);
// 将Document实例和文件输出流用PdfWriter类绑定在一起,从而完成向Document写,即写入PDF文档
PdfWriter.getInstance(document1,new FileOutputStream("src/a.pdf"));//创建到哪个路径文件中
//打开文档
document1.open();
//向文档添加文字. 文档由段组成,这里只是做个别的说明
float[] widths = {40,80,150,50,50,100,60,50,70,70};数据存的是列宽,按照配比来的,不用在乎数据大小
PdfPTable table = new PdfPTable(widths);这个可以在页面画一个table,很方便并且比较好的方法
table.setWidthPercentage(100);设置占比
table.setSpacingBefore(10);设置上边距离上个Paragraph的距离
table.setSpacingAfter(10);设置下边距离下个Paragraph的距离
下面这个可以设置表格中同单元格存在不同的字体
Paragraph largeText = new Paragraph();
Chunk chunk1 = new Chunk("text0",FontChinese11);
Chunk chunk2 = new Chunk(text1,FontChinese1);
largeText.add(chunk1);
largeText.add(chunk2);
cell1.addElement(largeText);
document1.add(list+Paragraph+table等等之类的);
//关闭document
document1.close();