1.生成PDF的5个步骤
a.创建一个Document实例
Document document = new Document();
b.将Document实例和文件输出流用PdfWriter类绑定在一起
PdfWriter.getInstance(document,new FileOutputStream("HelloWorld.pdf"));
c.打开文档
document.open();
d.在文档中添加文字
document.add(new Paragraph("Hello World"));
e.关闭文档
document.close();
这样5个步骤,就可以生成一个PDF文档了
2.输出中文
首先需要下载iTextAsian.jar包,可以到iText的主站上下,ireport也是需要这个包的。然后定义中文字体:
BaseFont bfChinese = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
FontChinese = new Font(bfChinese, 12, Font.NORMAL);
3.设置PDF横向显示和打印
Rectangle rectPageSize = new Rectangle(PageSize.A4);// 定义A4页面大小
rectPageSize = rectPageSize.rotate();// 加上这句可以实现A4页面的横置
Document doc = new Document(rectPageSize,50,50,50,50);//4个参数,设置了页面的4个边距
4.显示页码
复杂的页码显示和水印添加,需要使用到PdfPageEventHelper、PdfTemplate等辅助类,具体的例子参见iText的文档,如果只是为了简单的显示页数,可以使用下面的代码:
HeaderFooter footer = new HeaderFooter(new Phrase("页码:",getChineseFont()), true);
footer.setBorder(Rectangle.NO_BORDER);
document.setFooter(footer);
document.open();
你可能注意到了,添加footer需要在document.open之前。
5.单元格的内容换行
转义符\n实现
6.设置表头
希望每一页都有表头,可以通过设置表头来实现。对于PdfPTable类来说,可以这样设置:
PdfPTable table = new PdfPTable(3);
table.setHeaderRows(2); // 设置了头两行为表格头
而对于om.lowagie.text.Table类,需要在添加完所有表头的单元格后加上一句代码:
table.endHeaders();
7.设置列宽
Table table = new Table(8);
float[] widths = { 0.10f, 0.15f, 0.21f, 0.22f, 0.08f, 0.08f, 0.10f,
0.06f };
table.setWidths(widths);