/*
* $Id$
*
* This code is part of the 'iText Tutorial'.
* You can find the complete tutorial at the following address:
* http://itextdocs.lowagie.com/tutorial/
*
* This code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* itext-questions@lists.sourceforge.net
*/
package com.lowagie.examples.objects.tables;
import java.awt.Color;
import com.lowagie.text.BadElementException;
import com.lowagie.text.LwgDocument;
import com.lowagie.text.DocumentException;
import com.lowagie.text.LwgElement;
import com.lowagie.text.LwgFont;
import com.lowagie.text.FontFactory;
import com.lowagie.text.LwgPageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.LwgRectangle;
import com.lowagie.text.pdf.LwgPdfPCell;
import com.lowagie.text.pdf.LwgPdfPTable;
import com.lowagie.text.pdf.PdfWriter;
import org.geoforge.demo.GfrFileOutputStream;
/**
* Demonstrates different borderstyles.
*/
public class TableBorders {
/**
* Demonstrates different borderstyles.
*
* @param args
* the number of rows for each table fragment.
*/
public static void main(String[] args) {
System.out.println("Table Borders");
// step1
LwgDocument document = new LwgDocument(LwgPageSize.A4, 50, 50, 50, 50);
try {
// step2
PdfWriter writer = PdfWriter.getInstance(document,
new GfrFileOutputStream("com.lowagie.examples.objects.tables.TableBorders.pdf"));
// step3
document.open();
// step4
// page 1
LwgFont tableFont = FontFactory.getFont("Helvetica", 8, LwgFont.BOLD, Color.BLACK);
float padding = 0f;
LwgRectangle border = new LwgRectangle(0f, 0f);
border.setBorderWidthLeft(6f);
border.setBorderWidthBottom(5f);
border.setBorderWidthRight(4f);
border.setBorderWidthTop(2f);
border.setBorderColorLeft(Color.RED);
border.setBorderColorBottom(Color.ORANGE);
border.setBorderColorRight(Color.YELLOW);
border.setBorderColorTop(Color.GREEN);
makeTestPage(tableFont, border, writer, document, padding, true, true);
LwgFont font = FontFactory.getFont("Helvetica", 10);
Paragraph p;
p = new Paragraph("\nVarious border widths and colors\nuseAscender=true, useDescender=true", font);
document.add(p);
document.newPage();
// page 2
padding = 2f;
border = new LwgRectangle(0f, 0f);
border.setBorderWidthLeft(1f);
border.setBorderWidthBottom(2f);
border.setBorderWidthRight(1f);
border.setBorderWidthTop(2f);
border.setBorderColor(Color.BLACK);
makeTestPage(tableFont, border, writer, document, padding, true, true);
p = new Paragraph("More typical use - padding of 2\nuseBorderPadding=true, useAscender=true, useDescender=true", font);
document.add(p);
document.newPage();
// page 3
padding = 0f;
border = new LwgRectangle(0f, 0f);
border.setBorderWidthLeft(1f);
border.setBorderWidthBottom(2f);
border.setBorderWidthRight(1f);
border.setBorderWidthTop(2f);
border.setBorderColor(Color.BLACK);
makeTestPage(tableFont, border, writer, document, padding, false, true);
p = new Paragraph("\nuseBorderPadding=true, useAscender=false, useDescender=true", font);
document.add(p);
document.newPage();
// page 4
padding = 0f;
border = new LwgRectangle(0f, 0f);
border.setBorderWidthLeft(1f);
border.setBorderWidthBottom(2f);
border.setBorderWidthRight(1f);
border.setBorderWidthTop(2f);
border.setBorderColor(Color.BLACK);
makeTestPage(tableFont, border, writer, document, padding, false, false);
p = new Paragraph("\nuseBorderPadding=true, useAscender=false, useDescender=false", font);
document.add(p);
document.newPage();
// page 5
padding = 0f;
border = new LwgRectangle(0f, 0f);
border.setBorderWidthLeft(1f);
border.setBorderWidthBottom(2f);
border.setBorderWidthRight(1f);
border.setBorderWidthTop(2f);
border.setBorderColor(Color.BLACK);
makeTestPage(tableFont, border, writer, document, padding, true, false);
p = new Paragraph("\nuseBorderPadding=true, useAscender=true, useDescender=false", font);
document.add(p);
} catch (Exception de) {
de.printStackTrace();
}
// step5
document.close();
}
private static void makeTestPage(LwgFont tableFont, LwgRectangle borders, PdfWriter writer, LwgDocument document,
float padding, boolean ascender, boolean descender) throws BadElementException, DocumentException {
document.newPage();
LwgPdfPTable table = null;
table = new LwgPdfPTable(4);
table.setWidthPercentage(100f);
float leading = tableFont.getSize() * 1.2f;
table.add(makeCell("1-Top", LwgElement.ALIGN_TOP, LwgElement.ALIGN_LEFT, tableFont, leading, padding, borders, ascender, descender));
table.add(makeCell("2-Middle", LwgElement.ALIGN_MIDDLE, LwgElement.ALIGN_LEFT, tableFont, leading, padding, borders, ascender, descender));
table.add(makeCell("3-Bottom", LwgElement.ALIGN_BOTTOM, LwgElement.ALIGN_LEFT, tableFont, leading, padding, borders, ascender, descender));
table.add(makeCell("4-Has a y", LwgElement.ALIGN_TOP, LwgElement.ALIGN_LEFT, tableFont, leading, padding, borders, ascender, descender));
table.add(makeCell("5-Abcdy", LwgElement.ALIGN_TOP, LwgElement.ALIGN_LEFT, tableFont, leading, padding, borders, ascender, descender));
table.add(makeCell("6-Abcdy", LwgElement.ALIGN_MIDDLE, LwgElement.ALIGN_LEFT, tableFont, leading, padding, borders, ascender, descender));
table.add(makeCell("7-Abcdy", LwgElement.ALIGN_BOTTOM, LwgElement.ALIGN_LEFT, tableFont, leading, padding, borders, ascender, descender));
table.add(makeCell("8-This\nis\na little\ntaller", LwgElement.ALIGN_TOP, LwgElement.ALIGN_LEFT, tableFont, leading, padding, borders, ascender, descender));
document.add(table);
}
private static LwgPdfPCell makeCell(String text, int vAlignment, int hAlignment, LwgFont font, float leading, float padding, LwgRectangle borders, boolean ascender, boolean descender) {
Paragraph p = new Paragraph(text, font);
p.setLeading(leading);
LwgPdfPCell cell = new LwgPdfPCell(p);
cell.setLeading(leading, 0);
cell.setVerticalAlignment(vAlignment);
cell.setHorizontalAlignment(hAlignment);
cell.cloneNonPositionParameters(borders);
cell.setUseAscender(ascender);
cell.setUseDescender(descender);
cell.setUseBorderPadding(true);
cell.setPadding(padding);
return cell;
}
}