Cell and table widths
Examples that explain how to define the dimensions of a table, its columns and its cells.
columnwidthexample
JAVA
JAVA
/**
* This example was written by Bruno Lowagie in answer to the following question:
* http://stackoverflow.com/questions/26628678/manipulating-witdh-and-height-of-rows-and-cells-in-itextsharp
*/
package sandbox.tables;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Font.FontFamily;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.GrayColor;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import sandbox.WrapToTest;
@WrapToTest
public class ColumnWidthExample {
public static final String DEST = "results/tables/column_width_example.pdf";
public static void main(String[] args) throws IOException, DocumentException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new ColumnWidthExample().createPdf(DEST);
}
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document(PageSize.A4.rotate());
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
float[] columnWidths = {1, 5, 5};
PdfPTable table = new PdfPTable(columnWidths);
table.setWidthPercentage(100);
table.getDefaultCell().setUseAscender(true);
table.getDefaultCell().setUseDescender(true);
Font f = new Font(FontFamily.HELVETICA, 13, Font.NORMAL, GrayColor.GRAYWHITE);
PdfPCell cell = new PdfPCell(new Phrase("This is a header", f));
cell.setBackgroundColor(GrayColor.GRAYBLACK);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setColspan(3);
table.addCell(cell);
table.getDefaultCell().setBackgroundColor(new GrayColor(0.75f));
for (int i = 0; i < 2; i++) {
table.addCell("#");
table.addCell("Key");
table.addCell("Value");
}
table.setHeaderRows(3);
table.setFooterRows(1);
table.getDefaultCell().setBackgroundColor(GrayColor.GRAYWHITE);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
for (int counter = 1; counter < 101; counter++) {
table.addCell(String.valueOf(counter));
table.addCell("key " + counter);
table.addCell("value " + counter);
}
document.add(table);
document.close();
}
}
fullpagetable
JAVA
JAVA
/**
* Example written by Bruno Lowagie in answer to:
* http://stackoverflow.com/questions/19873263/how-to-increase-the-width-of-pdfptable-in-itext-pdf
*
* We create a table with two columns and two cells.
* This way, we can add two images next to each other.
*/
package sandbox.tables;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import sandbox.WrapToTest;
@WrapToTest
public class FullPageTable {
public static final String DEST = "results/tables/full_page_table.pdf";
public static void main(String[] args) throws IOException,
DocumentException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new FullPageTable().createPdf(DEST);
}
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document(PageSize.A4, 0, 0, 0, 0);
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
PdfPTable table = new PdfPTable(10);
table.setWidthPercentage(100);
table.setSpacingBefore(0f);
table.setSpacingAfter(0f);
// first row
PdfPCell cell = new PdfPCell(new Phrase("DateRange"));
cell.setColspan(10);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setPadding(5.0f);
cell.setBackgroundColor(new BaseColor(140, 221, 8));
table.addCell(cell);
table.addCell("Calldate");
table.addCell("Calltime");
table.addCell("Source");
table.addCell("DialedNo");
table.addCell("Extension");
table.addCell("Trunk");
table.addCell("Duration");
table.addCell("Calltype");
table.addCell("Callcost");
table.addCell("Site");
for (int i = 0; i < 100; i++) {
table.addCell("date" + i);
table.addCell("time" + i);
table.addCell("source" + i);
table.addCell("destination" + i);
table.addCell("extension" + i);
table.addCell("trunk" + i);
table.addCell("dur" + i);
table.addCell("toc" + i);
table.addCell("callcost" + i);
table.addCell("Site" + i);
}
document.add(table);
document.close();
}
}
rightcornertable
JAVA
JAVA
/**
* Example written by Bruno Lowagie and Nishanthi Grashia in answer to the following question:
* http://stackoverflow.com/questions/33440294/create-table-in-itext-pdf-in-java
*/
package sandbox.tables;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import sandbox.WrapToTest;
@WrapToTest
public class RightCornerTable {
public static final String DEST = "results/tables/right_corner_table.pdf";
public static void main(String[] args) throws IOException,
DocumentException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new RightCornerTable().createPdf(DEST);
}
public void createPdf(String dest) throws IOException, DocumentException {
Rectangle pagesize = new Rectangle(300, 300);
Document document = new Document(pagesize, 0, 0, 0, 0);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
PdfPTable table = new PdfPTable(1);
table.setHorizontalAlignment(Element.ALIGN_RIGHT);
table.setWidthPercentage(30);
Font white = new Font();
white.setColor(BaseColor.WHITE);
PdfPCell cell = new PdfPCell(new Phrase(" Date" , white));
cell.setBackgroundColor(BaseColor.BLACK);
cell.setBorderColor(BaseColor.GRAY);
cell.setBorderWidth(2f);
table.addCell(cell);
PdfPCell cellTwo = new PdfPCell(new Phrase("10/01/2015"));
cellTwo.setBorderWidth(2f);
table.addCell(cellTwo);
document.add(table);
document.newPage();
table.setTotalWidth(90);
PdfContentByte canvas = writer.getDirectContent();
table.writeSelectedRows(0, -1, document.right() - 90, document.top(), canvas);
document.close();
}
}
simpletable3
JAVA
JAVA
/**
* Example written by Bruno Lowagie in answer to the following question:
* http://stackoverflow.com/questions/27884229/itextsharap-error-while-adding-pdf-table-to-document
*/
package sandbox.tables;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import sandbox.WrapToTest;
@WrapToTest
public class SimpleTable3 {
public static final String DEST = "results/tables/simple_table3.pdf";
public static void main(String[] args) throws IOException,
DocumentException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new SimpleTable3().createPdf(DEST);
}
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document(PageSize.A3.rotate());
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
PdfPTable table = new PdfPTable(35);
table.setTotalWidth(document.getPageSize().getWidth() - 80);
table.setLockedWidth(true);
PdfPCell contractor = new PdfPCell(new Phrase("XXXXXXXXXXXXX"));
contractor.setColspan(5);
table.addCell(contractor);
PdfPCell workType = new PdfPCell(new Phrase("Refractory Works"));
workType.setColspan(5);
table.addCell(workType);
PdfPCell supervisor = new PdfPCell(new Phrase("XXXXXXXXXXXXXX"));
supervisor.setColspan(4);
table.addCell(supervisor);
PdfPCell paySlipHead = new PdfPCell(new Phrase("XXXXXXXXXXXXXXXX"));
paySlipHead.setColspan(10);
table.addCell(paySlipHead);
PdfPCell paySlipMonth = new PdfPCell(new Phrase("XXXXXXX"));
paySlipMonth.setColspan(2);
table.addCell(paySlipMonth);
PdfPCell blank = new PdfPCell(new Phrase(""));
blank.setColspan(9);
table.addCell(blank);
document.add(table);
document.close();
}
}