直接上代码
1,TableFooter类
package demo.util;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.ExceptionConverter;
import com.itextpdf.text.Image;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfTemplate;
import com.itextpdf.text.pdf.PdfWriter;
public class TableFooter extends PdfPageEventHelper{
String header;
PdfTemplate total;
public void setHeader(String header) {
this.header = header;
}
public void onOpenDocument(PdfWriter writer, Document document) {
total = writer.getDirectContent().createTemplate(30, 16);
}
public void onEndPage(PdfWriter writer, Document document) {
PdfPTable table = new PdfPTable(3);
try {
table.setWidths(new int[] { 24, 24, 2 });
table.setTotalWidth(505);
table.setLockedWidth(true);
table.getDefaultCell().setFixedHeight(20);
table.getDefaultCell().setBorder(Rectangle.TOP);
table.getDefaultCell().setBorderWidth(2);
table.getDefaultCell().setBorderColor(BaseColor.BLACK);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
table.addCell(header);
table.addCell(String.format("%d/", writer.getPageNumber()));
PdfPCell cell = new PdfPCell(Image.getInstance(total));
cell.setBorder(Rectangle.TOP);
cell.setBorderWidth(2);
cell.setBorderColor(BaseColor.BLACK);
table.addCell(cell);
table.writeSelectedRows(0, -1, 45, 45, writer.getDirectContent());
} catch (DocumentException de) {
throw new ExceptionConverter(de);
}
}
public void onCloseDocument(PdfWriter writer, Document document) {
ColumnText.showTextAligned(total, Element.ALIGN_LEFT, new Phrase(String.valueOf(writer.getPageNumber())), 0, 2, 0);
}
}
2,PdfUtil 类
package demo.util;
import java.io.FileOutputStream;
import java.util.Date;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
public class PdfUtil {
public static void main(String[] args) {
try {
Document document = new Document(PageSize.A4, 45, 45, 45, 45);
String pdfFilePath = "F:\\itext5.5.10_demo"+new Date().getTime()+".pdf";
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdfFilePath));
Rectangle rectangle = new Rectangle(45, 45, 559, 788);
rectangle.setBorderColor(BaseColor.BLUE);
writer.setBoxSize("rectangle", rectangle);
TableFooter footer = new TableFooter();
footer.setHeader("www.junlenet.com");
writer.setPageEvent(footer);
document.open();
document.newPage();
document.add(new Paragraph("www.junlenet.com"));
document.newPage();
document.add(new Paragraph("www.junlenet.com"));
document.newPage();
document.add(new Paragraph("www.junlenet.com"));
document.newPage();
document.add(new Paragraph("www.junlenet.com"));
//document.add(createTab());
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static PdfPTable createTab(){
PdfPTable table = new PdfPTable(6);
try {
table.setLockedWidth(true);
table.setTotalWidth(505);
//table.setWidthPercentage(100);
int rw = 505/6;
table.setWidths(new int[]{rw,rw,rw,rw,rw,rw});
for (int i = 0;i<6*5;i++) {
table.addCell(new Paragraph(i+"-"));
}
} catch (Exception e) {
e.printStackTrace();
}
return table;
}
}
3,pom.xml
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
更多信息,可以访问 http://developers.itextpdf.com/content/itext-5-examples