我们无须在页面上指定一个位置,iText会内部处理。你能够看到iText添加文本注释在页面上当前位置下面,第一个在段后第一行下面,第二个在短句结束处的下面。
所有其他注释需要指定想匹配的矩形区域,在示例代码0304中,我们画了一些正方形(使用的函数将在第十章中介绍),为每个正方形添加了一些链接注释。
第四章 页眉页脚、章节、区域和绘图对象
使用在第三至第五章中描述的大量简单iText对象可以避免更多的高级话题(第九至十二章),紧记这些简单对象限制的功能,大量复杂的功能在第三部分。
页眉页脚
HeaderFooter对象可以于为文档每页添加页眉和页脚。这样一个页眉或页脚包含一个标准的短句(如果需要)和当前页码,如果你需要更多复杂的页眉和页脚(使用表格或者第几页共几页),请阅读第十二章。
在示例代码0401中,你可以看到我们首先添加了一个包含页码没有任何边框的页脚。
HeaderFooter footer = new HeaderFooter(new Phrase("This is page: "), tr);
footer.Border = Rectangle.NO_BORDER;
document.Footer = footer
我们还可以使用下面的构造函数:
HeaderFooter footer = new HeaderFooter(new Phrase("This is page "), new Phrase("."));
构造函数知道你希望添加一个页码和将其放置在两个短句间,如果你只是设置一个HeaderFooter而不改变边框,页眉或页脚的文本上下各有一条直线。
HeaderFooter header = new HeaderFooter(new Phrase("This is a header without a page number"), false);
document.Header = header;
章节和区域
在第十一章中将描述如何构建一个树的外观,如果你只需要一个简单的章节和(子)区域,你可以用Chapter对象和Section对象自动构建一个树:
Paragraph cTitle = new Paragraph("This is chapter 1", chapterFont);
Chapter chapter = new Chapter(cTitle, 1);
Paragraph sTitle = new Paragraph("This is section 1 in chapter 1", sectionFont);
Section section = chapter.addSection(sTitle, 1);
在示例代码0402中,我们添加了一系列的章节和子区域,你可以看到完整的树形,树形结构默认打开,如果你希望部分节点关闭,你必须使用用BookmarkOpen属性其值为false,详见示例代码0403。
图形
如果你想添加图形,如直线、圆、几何窗体,你应该阅读读十章,但如果你只需要一些有限的功能,你可以使用Graphic对象
Graphic grx = new Graphic();
//添加一个矩形
grx.rectangle(100, 700, 100, 100);
// 添加一条斜线
grx.moveTo(100, 700);
grx.lineTo(200, 800);
// 将图形显示出来
grx.stroke();
document.Add(grx);
完整的代码请见示例代码0404,如果想看到全部的方法,请参见PdfContentByte对象API。
当你想给页面加一个边框或者在文本当前位置画一条水平线时,图形对象非常有用。下面的方法用指定的宽度、间距(如果需要)和颜色画一个边框。
p lic void setBorder(float linewidth, float extraSpace);
p lic void setBorder(float linewidth, float extraSpace, Color color);
下面的方法用指定的宽度(如果需要)和颜色画一条水平线,线的长度是指定两边缘间可用面积的的百分比。
p lic void setHorizontalLine(float linewidth, float percentage)
p lic void setHorizontalLine(float linewidth, float percentage, Color color)
示例代码5中,有一个离边界5磅,线宽3磅的边框,还有两条水平线,一条为黑色,5磅宽,可用空间的100%,另外一条为红色,线宽3磅,可用空间的80%。
第五章 表格
重点:如果你仅仅生成PDF文件(没有XML、HTML、RTF……),使用类pdfPTable代替类Table更好。
一些简单的表格
一个表格是包含单元格排列成矩阵的矩形区域。表格的距阵并不要求是m×n的,它可以有空洞或者单元格比单个的要大。
创建一个表格最通用的办法是预先知道有几行几列:
p lic Table(int columns, int rows);
在示例代码0501中,我们构建了一个简单的表:
Table aTable = new Table(2,2);
aTable.addCell("0.0");
aTable.addCell("0.1");
aTable.addCell("1.0");
aTable.addCell("1.1");
该表格有两行两列,单元格被自动添加,从第一行第一列开始,然后是第二列,当一行满后,下一单元格自动添加到下一行的第一列中。